Re: diff for snmpd agentx.c

2018-06-10 Thread Sebastian Benoit
Rob Pierce(r...@2keys.ca) on 2018.06.10 13:25:23 -0400:
> 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?

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 -  1.12
> +++ agentx.c  10 Jun 2018 16:59:01 -
> @@ -18,12 +18,8 @@
>  #include 
>  #include 
>  #include 
> -#include 
>  #include 
>  
> -#include 
> -
> -#include 
>  #include 
>  #include 
>  #include 
> @@ -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 -  1.42
> +++ control.c 10 Jun 2018 16:59:01 -
> @@ -537,7 +537,7 @@ control_dispatch_agentx(int fd, short ev
>   struct agentx_varbind_hdrvbhdr;
>   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.h11 Jun 2015 18:49:09 -  1.14
> +++ snmp.h10 Jun 2018 16:59:01 -
> @@ -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,
> 



diff for snmpd agentx.c

2018-06-10 Thread Rob Pierce
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.c14 Feb 2018 12:43:07 -  1.12
+++ agentx.c10 Jun 2018 16:59:01 -
@@ -18,12 +18,8 @@
 #include 
 #include 
 #include 
-#include 
 #include 
 
-#include 
-
-#include 
 #include 
 #include 
 #include 
@@ -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 -  1.42
+++ control.c   10 Jun 2018 16:59:01 -
@@ -537,7 +537,7 @@ control_dispatch_agentx(int fd, short ev
struct agentx_varbind_hdrvbhdr;
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 -  1.14
+++ snmp.h  10 Jun 2018 16:59:01 -
@@ -369,7 +369,6 @@ struct agentx_handle *
 struct agentx_handle *
snmp_agentx_fdopen(int, char *, struct snmp_oid *);
 intsnmp_agentx_response(struct agentx_handle *, struct agentx_pdu *);
-intsnmp_agentx_read_response(struct agentx_pdu *, struct 
agentx_response_data *);
 intsnmp_agentx_open_response(struct agentx_handle *, struct agentx_pdu *);
 struct agentx_pdu *
snmp_agentx_open_pdu(struct agentx_handle *, char *descr,