Browse Source

2003-06-19 Paul Jakma <paul@dishone.st>

	* Fix lib/smux.c's reliance on daemons exporting struct
          thread_master *master.
paul 18 years ago
parent
commit
dd488a78ad
6 changed files with 30 additions and 11 deletions
  1. 7 1
      bgpd/bgp_snmp.c
  2. 9 3
      lib/smux.c
  3. 2 2
      lib/smux.h
  4. 3 1
      ospfd/ospf_snmp.c
  5. 5 3
      ripd/rip_snmp.c
  6. 4 1
      zebra/zebra_snmp.c

+ 7 - 1
bgpd/bgp_snmp.c

@@ -242,6 +242,7 @@ struct variable bgp_variables[] =
   {BGP4PATHATTRUNKNOWN,       OCTET_STRING, RONLY, bgp4PathAttrTable,
    3, {6, 1, 14}},
 };
+
 
 static u_char *
 bgpVersion (struct variable *v, oid name[], size_t *length, int exact,
@@ -874,7 +875,12 @@ bgpTrapBackwardTransition (struct peer *peer)
 void
 bgp_snmp_init ()
 {
-  smux_init (bgpd_oid, sizeof bgpd_oid / sizeof (oid));
+  struct bgp_master *bm;
+  
+  if ( !(bm = bgp_get_master ()) )
+    return;
+    
+  smux_init (bm->master, bgpd_oid, sizeof bgpd_oid / sizeof (oid));
   REGISTER_MIB("mibII/bgp", bgp_variables, variable, bgp_oid);
   smux_start ();
 }

+ 9 - 3
lib/smux.c

@@ -29,7 +29,6 @@
 #include <snmp.h>
 #include <snmp_impl.h>
 
-#include "smux.h"
 #include "log.h"
 #include "thread.h"
 #include "linklist.h"
@@ -37,6 +36,7 @@
 #include "version.h"
 #include "memory.h"
 #include "sockunion.h"
+#include "smux.h"
 
 #define min(A,B) ((A) < (B) ? (A) : (B))
 
@@ -81,6 +81,9 @@ struct cmd_node smux_node =
   SMUX_NODE,
   ""                            /* SMUX has no interface. */
 };
+
+/* thread master */
+static struct thread_master *master;
 
 void *
 oid_copy (void *dest, void *src, size_t size)
@@ -1224,7 +1227,7 @@ smux_stop ()
     }
 }
 
-extern struct thread_master *master;
+
 
 void
 smux_event (enum smux_event event, int sock)
@@ -1471,7 +1474,7 @@ smux_tree_cmp(struct subtree *tree1, struct subtree *tree2)
 
 /* Initialize some values then schedule first SMUX connection. */
 void
-smux_init (oid defoid[], size_t defoid_len)
+smux_init (struct thread_master *tm, oid defoid[], size_t defoid_len)
 {
   /* Set default SMUX oid. */
   smux_default_oid = defoid;
@@ -1480,6 +1483,9 @@ smux_init (oid defoid[], size_t defoid_len)
   smux_oid = smux_default_oid;
   smux_oid_len = smux_default_oid_len;
   smux_passwd = smux_default_passwd;
+
+  /* copy callers thread master */
+  master = tm;
   
   /* Make MIB tree. */
   treelist = list_new();

+ 2 - 2
lib/smux.h

@@ -144,12 +144,12 @@ struct trap_object
     (u_char *) &snmp_in_addr_val \
   )
 
-void smux_init (oid [], size_t);
+void smux_init (struct thread_master *tm, oid [], size_t);
 void smux_start (void);
 void smux_register_mib(char *, struct variable *, size_t, int, oid [], size_t);
 int smux_header_generic (struct variable *, oid [], size_t *, int, size_t *, 
     WriteMethod **);
-int smux_trap (oid *, size_t, oid *, size_t, struct trap_object *, size_t, unsigned int);
+int smux_trap (oid *, size_t, oid *, size_t, struct trap_object *, size_t, unsigned int, u_char);
 
 int oid_compare (oid *, int, oid *, int);
 void oid2in_addr (oid [], int, struct in_addr *);

+ 3 - 1
ospfd/ospf_snmp.c

@@ -2477,9 +2477,11 @@ ospfAreaAggregateEntry (struct variable *v, oid *name, size_t *length,
 void
 ospf_snmp_init ()
 {
+  struct ospf *ospf;
+
   ospf_snmp_iflist = list_new ();
   ospf_snmp_vl_table = route_table_init ();
-  smux_init (ospfd_oid, sizeof (ospfd_oid) / sizeof (oid));
+  smux_init (om->master, ospfd_oid, sizeof (ospfd_oid) / sizeof (oid));
   REGISTER_MIB("mibII/ospf", ospf_variables, variable, ospf_oid);
   smux_start ();
 }

+ 5 - 3
ripd/rip_snmp.c

@@ -152,6 +152,8 @@ struct variable rip_variables[] =
   {RIP2PEERRCVBADROUTES,      COUNTER, RONLY, rip2PeerTable,
    3, {4, 1, 6}}
 };
+
+extern struct thread_master *master;
 
 static u_char *
 rip2Globals (struct variable *v, oid name[], size_t *length,
@@ -406,9 +408,9 @@ rip2IfConfSend (struct rip_interface *ri)
     return ripVersion1;
   else if (rip)
     {
-      if (rip->version == RIPv2)
+      if (rip->version_send == RIPv2)
 	return ripVersion2;
-      else if (rip->version == RIPv1)
+      else if (rip->version_send == RIPv1)
 	return ripVersion1;
     }
   return doNotSend;
@@ -573,7 +575,7 @@ rip_snmp_init ()
 {
   rip_ifaddr_table = route_table_init ();
 
-  smux_init (ripd_oid, sizeof (ripd_oid) / sizeof (oid));
+  smux_init (master, ripd_oid, sizeof (ripd_oid) / sizeof (oid));
   REGISTER_MIB("mibII/rip", rip_variables, variable, rip_oid);
   smux_start ();
 }

+ 4 - 1
zebra/zebra_snmp.c

@@ -37,6 +37,7 @@
 #include "table.h"
 
 #include "zebra/rib.h"
+#include "zebra/zserv.h"
 
 #define IPFWMIB 1,3,6,1,2,1,4,24
 #define ZEBRAOID 1,3,6,1,4,1,3317,1,2,1
@@ -83,6 +84,8 @@
 #define IPADDRESS ASN_IPADDRESS
 #define OBJECTIDENTIFIER ASN_OBJECT_ID
 
+extern struct zebra_t zebrad;
+
 oid ipfw_oid [] = { IPFWMIB };
 oid zebra_oid [] = { ZEBRAOID };
 
@@ -561,7 +564,7 @@ ipCidrTable (struct variable *v, oid objid[], size_t *objid_len,
 void
 zebra_snmp_init ()
 {
-  smux_init (zebra_oid, sizeof (zebra_oid) / sizeof (oid));
+  smux_init (zebrad.master, zebra_oid, sizeof (zebra_oid) / sizeof (oid));
   REGISTER_MIB("mibII/ipforward", zebra_variables, variable, ipfw_oid);
   smux_start ();
 }