summaryrefslogtreecommitdiff
path: root/lib/snmp.c
diff options
context:
space:
mode:
authorPat Ruddy <pat@voltanet.io>2020-10-01 12:09:01 +0100
committerPat Ruddy <pat@voltanet.io>2021-02-02 09:37:08 +0000
commit4f13e83dcd034d8e684a8f3a8fdd18b5368d16ff (patch)
treed00307b32a4dd1b33f8fcc3a478196daaa056da7 /lib/snmp.c
parent0760a74d2fc29a89d1d0d252af98d674323b210a (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.c28
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)