summaryrefslogtreecommitdiff
path: root/ospf6d
diff options
context:
space:
mode:
authorVincent Bernat <bernat@luffy.cx>2012-05-31 13:30:28 +0200
committerVincent Bernat <bernat@luffy.cx>2012-06-25 19:03:23 +0200
commit8046ba6ec4d6e87bf8da6563c0f3e5e66c4652b3 (patch)
tree1b38b2eae4e1cee042f96a42217b14647159bf0f /ospf6d
parent0ff4b9c96793898429052de576d8da368e48997e (diff)
snmp: let handlers accept OID from a lesser prefix
Most table handlers do not expect to be given an OID whose prefix is outside what they can handle. This is not a problem with the SMUX implementation since it always correct the OID such that the prefix matches. However, this is not the case for the AgentX implementation. A new function, smux_header_table() is used to do this normalization.
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_snmp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/ospf6d/ospf6_snmp.c b/ospf6d/ospf6_snmp.c
index 11b733b8..d252f549 100644
--- a/ospf6d/ospf6_snmp.c
+++ b/ospf6d/ospf6_snmp.c
@@ -306,6 +306,10 @@ ospfv3AreaEntry (struct variable *v, oid *name, size_t *length,
if (ospf6 == NULL)
return NULL;
+ if (smux_header_table(v, name, length, exact, var_len, write_method)
+ == MATCH_FAILED)
+ return NULL;
+
len = *length - v->namelen;
len = (len >= sizeof (u_int32_t) ? sizeof (u_int32_t) : 0);
if (exact && len != sizeof (u_int32_t))
@@ -372,6 +376,10 @@ ospfv3AreaLsdbEntry (struct variable *v, oid *name, size_t *length,
struct ospf6_area *oa;
struct listnode *node;
+ if (smux_header_table(v, name, length, exact, var_len, write_method)
+ == MATCH_FAILED)
+ return NULL;
+
memset (&area_id, 0, sizeof (struct in_addr));
type = 0;
memset (&id, 0, sizeof (struct in_addr));