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.
diff --git a/lib/snmp.c b/lib/snmp.c
index d7b1d95..79595a1 100644
--- a/lib/snmp.c
+++ b/lib/snmp.c
@@ -110,4 +110,24 @@
 
   return MATCH_SUCCEEDED;
 }
+
+int
+smux_header_table (struct variable *v, oid *name, size_t *length, int exact,
+		   size_t *var_len, WriteMethod **write_method)
+{
+  /* If the requested OID name is less than OID prefix we
+     handle, adjust it to our prefix. */
+  if ((oid_compare (name, *length, v->name, v->namelen)) < 0)
+    {
+      if (exact)
+	return MATCH_FAILED;
+      oid_copy(name, v->name, v->namelen);
+      *length = v->namelen;
+    }
+
+  *write_method = 0;
+  *var_len = sizeof(long);
+
+  return MATCH_SUCCEEDED;
+}
 #endif /* HAVE_SNMP */