mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 12:44:55 +00:00
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>
This commit is contained in:
parent
0760a74d2f
commit
4f13e83dcd
@ -104,8 +104,10 @@ extern int smux_trap(struct variable *, size_t, const oid *, size_t,
|
|||||||
|
|
||||||
extern int oid_compare(const oid *, int, const oid *, int);
|
extern int oid_compare(const oid *, int, const oid *, int);
|
||||||
extern void oid2in_addr(oid[], int, struct in_addr *);
|
extern void oid2in_addr(oid[], int, struct in_addr *);
|
||||||
|
extern void oid2int(oid oid[], int *dest);
|
||||||
extern void *oid_copy(void *, const void *, size_t);
|
extern void *oid_copy(void *, const void *, size_t);
|
||||||
extern void oid_copy_addr(oid[], const struct in_addr *, int);
|
extern void oid_copy_addr(oid[], const struct in_addr *, int);
|
||||||
|
extern void oid_copy_int(oid oid[], int *val);
|
||||||
extern void oid2string(oid oid[], int len, char *string);
|
extern void oid2string(oid oid[], int len, char *string);
|
||||||
extern void oid_copy_str(oid oid[], const char *string, int len);
|
extern void oid_copy_str(oid oid[], const char *string, int len);
|
||||||
|
|
||||||
|
28
lib/snmp.c
28
lib/snmp.c
@ -64,6 +64,19 @@ void oid2in_addr(oid oid[], int len, struct in_addr *addr)
|
|||||||
*pnt++ = oid[i];
|
*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)
|
void oid_copy_addr(oid oid[], const struct in_addr *addr, int len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -78,6 +91,19 @@ void oid_copy_addr(oid oid[], const struct in_addr *addr, int len)
|
|||||||
oid[i] = *pnt++;
|
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)
|
void oid2string(oid oid[], int len, char *string)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -89,7 +115,7 @@ void oid2string(oid oid[], int len, char *string)
|
|||||||
pnt = (uint8_t *)string;
|
pnt = (uint8_t *)string;
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
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)
|
void oid_copy_str(oid oid[], const char *string, int len)
|
||||||
|
Loading…
Reference in New Issue
Block a user