According to RFC2741 section 6.1.1 an agentx-response-pdu shouldn't have
the NON_DEFAULT_CONTEXT set. Remove the argument from ax_response().
OK?
martijn@
diff --git a/application_agentx.c b/application_agentx.c
index c7a2a26..0d73e08 100644
--- a/application_agentx.c
+++ b/application_agentx.c
@@ -311,8 +311,7 @@ appl_agentx_recv(int fd, short event, void *cookie)
pdu->ap_header.aph_sessionid);
ax_response(conn->conn_ax, pdu->ap_header.aph_sessionid,
pdu->ap_header.aph_transactionid,
- pdu->ap_header.aph_packetid,
- &(pdu->ap_context), smi_getticks(),
+ pdu->ap_header.aph_packetid, smi_getticks(),
APPL_ERROR_NOTOPEN, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, conn);
goto fail;
@@ -370,8 +369,8 @@ appl_agentx_recv(int fd, short event, void *cookie)
case AX_PDU_TYPE_PING:
ax_response(conn->conn_ax, pdu->ap_header.aph_sessionid,
pdu->ap_header.aph_transactionid,
- pdu->ap_header.aph_packetid, &(pdu->ap_context),
- smi_getticks(), APPL_ERROR_NOERROR, 0, NULL, 0);
+ pdu->ap_header.aph_packetid, smi_getticks(),
+ APPL_ERROR_NOERROR, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, conn);
break;
case AX_PDU_TYPE_INDEXALLOCATE:
@@ -380,8 +379,8 @@ appl_agentx_recv(int fd, short event, void *cookie)
ax_pdutype2string(pdu->ap_header.aph_type));
ax_response(conn->conn_ax, pdu->ap_header.aph_sessionid,
pdu->ap_header.aph_transactionid,
- pdu->ap_header.aph_packetid, &(pdu->ap_context),
- smi_getticks(), APPL_ERROR_PROCESSINGERROR, 1,
+ pdu->ap_header.aph_packetid, smi_getticks(),
+ APPL_ERROR_PROCESSINGERROR, 1,
pdu->ap_payload.ap_vbl.ap_varbind,
pdu->ap_payload.ap_vbl.ap_nvarbind);
appl_agentx_send(-1, EV_WRITE, conn);
@@ -392,8 +391,8 @@ appl_agentx_recv(int fd, short event, void *cookie)
ax_pdutype2string(pdu->ap_header.aph_type));
ax_response(conn->conn_ax, pdu->ap_header.aph_sessionid,
pdu->ap_header.aph_transactionid,
- pdu->ap_header.aph_packetid, &(pdu->ap_context),
- smi_getticks(), APPL_ERROR_PROCESSINGERROR, 1,
+ pdu->ap_header.aph_packetid, smi_getticks(),
+ APPL_ERROR_PROCESSINGERROR, 1,
NULL, 0);
appl_agentx_send(-1, EV_WRITE, conn);
break;
@@ -492,16 +491,15 @@ appl_agentx_open(struct appl_agentx_connection *conn,
struct ax_pdu *pdu)
log_info("%s: %s %s: Open", session->sess_backend.ab_name, oidbuf,
session->sess_descr.aos_string);
- ax_response(conn->conn_ax, session->sess_id,
pdu->ap_header.aph_transactionid,
- pdu->ap_header.aph_packetid, NULL, smi_getticks(),
APPL_ERROR_NOERROR, 0,
- NULL, 0);
+ ax_response(conn->conn_ax, session->sess_id,
+ pdu->ap_header.aph_transactionid, pdu->ap_header.aph_packetid,
+ smi_getticks(), APPL_ERROR_NOERROR, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, conn);
return;
fail:
ax_response(conn->conn_ax, 0, pdu->ap_header.aph_transactionid,
- pdu->ap_header.aph_packetid, NULL, 0, APPL_ERROR_OPENFAILED, 0,
- NULL, 0);
+ pdu->ap_header.aph_packetid, 0, APPL_ERROR_OPENFAILED, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, conn);
if (session != NULL)
free(session->sess_descr.aos_string);
@@ -521,7 +519,7 @@ appl_agentx_close(struct appl_agentx_session *session,
struct ax_pdu *pdu)
ax_response(conn->conn_ax, pdu->ap_header.aph_sessionid,
pdu->ap_header.aph_transactionid, pdu->ap_header.aph_packetid,
- &(pdu->ap_context), smi_getticks(), APPL_ERROR_NOERROR, 0, NULL, 0);
+ smi_getticks(), APPL_ERROR_NOERROR, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, conn);
}
@@ -593,7 +591,7 @@ appl_agentx_register(struct appl_agentx_session *session,
struct ax_pdu *pdu)
fail:
ax_response(session->sess_conn->conn_ax, session->sess_id,
pdu->ap_header.aph_transactionid, pdu->ap_header.aph_packetid,
- &(pdu->ap_context), smi_getticks(), error, 0, NULL, 0);
+ smi_getticks(), error, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, session->sess_conn);
}
@@ -620,7 +618,7 @@ appl_agentx_unregister(struct appl_agentx_session *session,
struct ax_pdu *pdu)
fail:
ax_response(session->sess_conn->conn_ax, session->sess_id,
pdu->ap_header.aph_transactionid, pdu->ap_header.aph_packetid,
- &(pdu->ap_context), smi_getticks(), error, 0, NULL, 0);
+ smi_getticks(), error, 0, NULL, 0);
appl_agentx_send(-1, EV_WRITE, session->sess_conn);
}
diff --git a/ax.c b/ax.c
index 27580a6..dde9823 100644
--- a/ax.c
+++ b/ax.c
@@ -715,11 +715,11 @@ ax_unregister(struct ax *ax, uint32_t sessionid,
int
ax_response(struct ax *ax, uint32_t sessionid, uint32_t transactionid,
- uint32_t packetid, struct ax_ostring *context, uint32_t sysuptime,
- uint16_t error, uint16_t index, struct ax_varbind *vblist, size_t nvb)
+ uint32_t packetid, uint32_t sysuptime, uint16_t error, uint16_t index,
+ struct ax_varbind *vblist, size_t nvb)
{
if (ax_pdu_header(ax, AX_PDU_TYPE_RESPONSE, 0, sessionid,
- transactionid, packetid, context) == -1)
+ transactionid, packetid, NULL) == -1)
return -1;
if (ax_pdu_add_uint32(ax, sysuptime) == -1 ||
diff --git a/ax.h b/ax.h
index 3b2ea93..8649c34 100644
--- a/ax.h
+++ b/ax.h
@@ -251,8 +251,7 @@ uint32_t ax_register(struct ax *, uint8_t, uint32_t,
uint32_t ax_unregister(struct ax *, uint32_t, struct ax_ostring *,
uint8_t, uint8_t, struct ax_oid *, uint32_t);
int ax_response(struct ax *, uint32_t, uint32_t, uint32_t,
- struct ax_ostring *, uint32_t, uint16_t, uint16_t,
- struct ax_varbind *, size_t);
+ uint32_t, uint16_t, uint16_t, struct ax_varbind *, size_t);
void ax_pdu_free(struct ax_pdu *);
void ax_varbind_free(struct ax_varbind *);
const char *ax_error2string(enum ax_pdu_error);