diff options
| author | Pat Ruddy <pat@voltanet.io> | 2020-10-01 12:09:01 +0100 |
|---|---|---|
| committer | Pat Ruddy <pat@voltanet.io> | 2021-02-02 09:37:08 +0000 |
| commit | 4f13e83dcd034d8e684a8f3a8fdd18b5368d16ff (patch) | |
| tree | d00307b32a4dd1b33f8fcc3a478196daaa056da7 /lib/snmp.c | |
| parent | 0760a74d2fc29a89d1d0d252af98d674323b210a (diff) | |
lib: add utilities to encode/decode an int in SNMP oid
Add 2 functions to encode/decode intergers to/from SNMP OIDs. Make
sure oid is in network format.
Signed-off-by: Pat Ruddy <pat@voltanet.io>
Diffstat (limited to 'lib/snmp.c')
| -rw-r--r-- | lib/snmp.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/snmp.c b/lib/snmp.c index cc317d7a3b..e92f622bb9 100644 --- a/lib/snmp.c +++ b/lib/snmp.c @@ -64,6 +64,19 @@ void oid2in_addr(oid oid[], int len, struct in_addr *addr) *pnt++ = oid[i]; } +void oid2int(oid oid[], int *dest) +{ + uint8_t i; + uint8_t *pnt; + int network_dest; + + pnt = (uint8_t *)&network_dest; + + for (i = 0; i < sizeof(int); i++) + *pnt++ = oid[i]; + *dest = ntohl(network_dest); +} + void oid_copy_addr(oid oid[], const struct in_addr *addr, int len) { int i; @@ -78,6 +91,19 @@ void oid_copy_addr(oid oid[], const struct in_addr *addr, int len) oid[i] = *pnt++; } +void oid_copy_int(oid oid[], int *val) +{ + uint8_t i; + const uint8_t *pnt; + int network_val; + + network_val = htonl(*val); + pnt = (uint8_t *)&network_val; + + for (i = 0; i < sizeof(int); i++) + oid[i] = *pnt++; +} + void oid2string(oid oid[], int len, char *string) { int i; @@ -89,7 +115,7 @@ void oid2string(oid oid[], int len, char *string) pnt = (uint8_t *)string; for (i = 0; i < len; i++) - *pnt++ = oid[i]; + *pnt++ = (uint8_t)oid[i]; } void oid_copy_str(oid oid[], const char *string, int len) |
