blob: ec6fc869a7d4fb0ca18d632933fecc61bfb4a9b6 [file] [log] [blame]
/* HEADER Testing netsnmp_sprint_realloc_objid_tree() */
static const oid objid1[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 127, 0, 0, 0, 8
};
static const oid objid2[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 128
};
static const oid objid3[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 255, 255, 255, 255, 8
};
static const oid objid4[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 128
};
static const oid objid5[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 256, 256, 256, 256, 8
};
static const oid objid6[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 256, 256, 256, 256, 256, 256, 256,
256, 256, 256, 256, 256, 256, 256, 256, 256, 128
};
static const oid objid7[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, -1, -1, -1, -1, 8
};
static const oid objid8[] = {
1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 128
};
struct objid_data { oid const *oid; int len; const char *str; };
static const struct objid_data objid_array[] = {
{ objid1, sizeof(objid1) / sizeof(objid1[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"127.0.0.0\".8" },
{ objid2, sizeof(objid2) / sizeof(objid2[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv6."
"\"00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01\".128" },
{ objid3, sizeof(objid3) / sizeof(objid3[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"255.255.255.255\".8" },
{ objid4, sizeof(objid4) / sizeof(objid4[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv6."
"\"ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff\".128" },
{ objid5, sizeof(objid5) / sizeof(objid5[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"....\".8" },
{ objid6, sizeof(objid6) / sizeof(objid6[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv6.\"................\".128" },
{ objid7, sizeof(objid7) / sizeof(objid7[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"....\".8" },
{ objid8, sizeof(objid8) / sizeof(objid8[0]),
"IP-MIB::ipAddressPrefixOrigin.1.ipv6.\"................\".128" },
};
struct tree *tree;
char *buf;
size_t buf_len, out_len;
int buf_overflow, i;
char mibdir[PATH_MAX];
snprintf(mibdir, sizeof(mibdir), "%s/%s", ABS_SRCDIR, "mibs");
netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIBDIRS, mibdir);
init_snmp("T020");
for (i = 0; i < sizeof(objid_array) / sizeof(objid_array[0]); i++) {
buf = NULL;
buf_len = out_len = buf_overflow = 0;
tree = netsnmp_sprint_realloc_objid_tree((u_char **) &buf, &buf_len,
&out_len, 1/*allow_realloc*/,
&buf_overflow,
objid_array[i].oid,
objid_array[i].len);
OK(!!objid_array[i].str == !!tree,
"netsnmp_sprint_realloc_objid_tree() return value");
if (objid_array[i].str && tree) {
OKF(strcmp(objid_array[i].str, buf) == 0,
("Mismatch: expected %s but got %s", objid_array[i].str,
buf ? (const char *)buf : "(NULL)"));
}
free(buf);
}
snmp_shutdown("T020");