This brings snmpd agentx.c closer to relayd agentx.c.

In the remaining delta, I am not sure if the pdu context code should be removed
from the snmpd version or added to the relayd version.

Anyway, this is one step closer.

Ok?

Rob

Index: agentx.c
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/agentx.c,v
retrieving revision 1.12
diff -u -p -r1.12 agentx.c
--- agentx.c    14 Feb 2018 12:43:07 -0000      1.12
+++ agentx.c    10 Jun 2018 16:59:01 -0000
@@ -18,12 +18,8 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/queue.h>
-#include <sys/uio.h>
 #include <sys/un.h>
 
-#include <arpa/inet.h>
-
-#include <err.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -217,9 +213,14 @@ snmp_agentx_response(struct agentx_handl
 {
        struct agentx_response_data resp;
 
-       if (snmp_agentx_read_response(pdu, &resp) == -1)
+       if (snmp_agentx_read_raw(pdu, &resp, sizeof(resp)) == -1)
                return (-1);
 
+       if (!snmp_agentx_byteorder_native(pdu->hdr)) {
+               resp.error = snmp_agentx_int16_byteswap(resp.error);
+               resp.index = snmp_agentx_int16_byteswap(resp.index);
+       }
+
        h->error = resp.error;
        if (resp.error != AGENTX_ERR_NONE)
                return (-1);
@@ -227,20 +228,6 @@ snmp_agentx_response(struct agentx_handl
        return (0);
 }
 
-int
-snmp_agentx_read_response(struct agentx_pdu *pdu, struct agentx_response_data 
*resp)
-{
-       if (snmp_agentx_read_raw(pdu, resp, sizeof(*resp)) == -1)
-               return (-1);
-
-       if (!snmp_agentx_byteorder_native(pdu->hdr)) {
-               resp->error = snmp_agentx_int16_byteswap(resp->error);
-               resp->index = snmp_agentx_int16_byteswap(resp->index);
-       }
-
-       return (0);
-}
-
 /*
  * Read the response PDU for an open operation.
  */
@@ -341,7 +328,7 @@ snmp_agentx_recv(struct agentx_handle *h
        if (h->r == NULL) {
                if ((h->r = snmp_agentx_pdu_alloc()) == NULL)
                        return (NULL);
-               h->r->datalen = 0;      /* XXX -- force this for receive 
buffers */
+               h->r->datalen = 0;      /* XXX force this for receive buffers */
        }
        pdu = h->r;
 
@@ -1038,7 +1025,7 @@ snmp_oid2string(struct snmp_oid *o, char
        bzero(buf, len);
 
        for (i = 0; i < o->o_n; i++) {
-               snprintf(str, sizeof(str), "%d", o->o_id[i]);
+               snprintf(str, sizeof(str), "%u", o->o_id[i]);
                strlcat(buf, str, len);
                if (i < (o->o_n - 1))
                        strlcat(buf, ".", len);
Index: control.c
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/control.c,v
retrieving revision 1.42
diff -u -p -r1.42 control.c
--- control.c   21 Apr 2017 13:50:23 -0000      1.42
+++ control.c   10 Jun 2018 16:59:01 -0000
@@ -537,7 +537,7 @@ control_dispatch_agentx(int fd, short ev
                        struct agentx_varbind_hdr        vbhdr;
                        struct ber_element              **elm, **iter;
 
-                       if (snmp_agentx_read_response(pdu, &resp) == -1) {
+                       if (snmp_agentx_read_raw(pdu, &resp, sizeof(resp)) == 
-1) {
                                msg->sm_error = SNMP_ERROR_GENERR;
                                goto dispatch;
                        }
Index: snmp.h
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/snmp.h,v
retrieving revision 1.14
diff -u -p -r1.14 snmp.h
--- snmp.h      11 Jun 2015 18:49:09 -0000      1.14
+++ snmp.h      10 Jun 2018 16:59:01 -0000
@@ -369,7 +369,6 @@ struct agentx_handle *
 struct agentx_handle *
        snmp_agentx_fdopen(int, char *, struct snmp_oid *);
 int    snmp_agentx_response(struct agentx_handle *, struct agentx_pdu *);
-int    snmp_agentx_read_response(struct agentx_pdu *, struct 
agentx_response_data *);
 int    snmp_agentx_open_response(struct agentx_handle *, struct agentx_pdu *);
 struct agentx_pdu *
        snmp_agentx_open_pdu(struct agentx_handle *, char *descr,

Reply via email to