diff options
-rw-r--r-- | bgpd/bgp_snmp.c | 39 | ||||
-rw-r--r-- | bgpd/bgpd.c | 12 | ||||
-rw-r--r-- | lib/smux.c | 95 | ||||
-rw-r--r-- | lib/smux.h | 4 | ||||
-rw-r--r-- | lib/workqueue.c | 3 | ||||
-rw-r--r-- | ospf6d/ospf6_snmp.c | 10 | ||||
-rw-r--r-- | ospfd/ospf_snmp.c | 124 | ||||
-rw-r--r-- | ospfd/ospf_vty.c | 4 | ||||
-rw-r--r-- | ripd/rip_interface.c | 2 | ||||
-rw-r--r-- | ripd/rip_snmp.c | 14 | ||||
-rw-r--r-- | zebra/zebra_snmp.c | 33 |
11 files changed, 190 insertions, 150 deletions
diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c index 576e3e09..0f44e68d 100644 --- a/bgpd/bgp_snmp.c +++ b/bgpd/bgp_snmp.c @@ -43,6 +43,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "bgpd/bgp_attr.h" #include "bgpd/bgp_route.h" #include "bgpd/bgp_fsm.h" +#include "bgpd/bgp_snmp.h" /* BGP4-MIB described in RFC1657. */ #define BGP4MIB 1,3,6,1,2,1,15 @@ -128,12 +129,18 @@ oid bgp_oid [] = { BGP4MIB }; static struct in_addr bgp_empty_addr = {0}; /* Hook functions. */ -static u_char *bgpVersion (); -static u_char *bgpLocalAs (); -static u_char *bgpPeerTable (); -static u_char *bgpRcvdPathAttrTable (); -static u_char *bgpIdentifier (); -static u_char *bgp4PathAttrTable (); +static u_char *bgpVersion (struct variable *, oid [], size_t *, int, + size_t *, WriteMethod **); +static u_char *bgpLocalAs (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *bgpPeerTable (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *bgpRcvdPathAttrTable (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *bgpIdentifier (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *bgp4PathAttrTable (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); /* static u_char *bgpTraps (); */ struct variable bgp_variables[] = @@ -277,7 +284,7 @@ bgpLocalAs (struct variable *v, oid name[], size_t *length, return SNMP_INTEGER (bgp->as); } -struct peer * +static struct peer * peer_lookup_addr_ipv4 (struct in_addr *src) { struct bgp *bgp; @@ -302,7 +309,7 @@ peer_lookup_addr_ipv4 (struct in_addr *src) return NULL; } -struct peer * +static struct peer * bgp_peer_lookup_next (struct in_addr *src) { struct bgp *bgp; @@ -335,7 +342,7 @@ bgp_peer_lookup_next (struct in_addr *src) return NULL; } -struct peer * +static struct peer * bgpPeerTable_lookup (struct variable *v, oid name[], size_t *length, struct in_addr *addr, int exact) { @@ -374,7 +381,7 @@ bgpPeerTable_lookup (struct variable *v, oid name[], size_t *length, } /* BGP write methods. */ -int +static int write_bgpPeerTable (int action, u_char *var_val, u_char var_val_type, size_t var_val_len, u_char *statP, oid *name, size_t length, @@ -383,7 +390,7 @@ write_bgpPeerTable (int action, u_char *var_val, struct in_addr addr; struct peer *peer; long intval; - int bigsize = SNMP_MAX_LEN; + size_t bigsize = SNMP_MAX_LEN; if (var_val_type != ASN_INTEGER) { @@ -446,7 +453,7 @@ write_bgpPeerTable (int action, u_char *var_val, return SNMP_ERR_NOERROR; } -u_char * +static u_char * bgpPeerTable (struct variable *v, oid name[], size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { @@ -586,7 +593,7 @@ bgpPeerTable (struct variable *v, oid name[], size_t *length, return NULL; } -u_char * +static u_char * bgpIdentifier (struct variable *v, oid name[], size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { @@ -603,7 +610,7 @@ bgpIdentifier (struct variable *v, oid name[], size_t *length, return SNMP_IPADDRESS (bgp->router_id); } -u_char * +static u_char * bgpRcvdPathAttrTable (struct variable *v, oid name[], size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { @@ -614,7 +621,7 @@ bgpRcvdPathAttrTable (struct variable *v, oid name[], size_t *length, return NULL; } -struct bgp_info * +static struct bgp_info * bgp4PathAttrLookup (struct variable *v, oid name[], size_t *length, struct bgp *bgp, struct prefix_ipv4 *addr, int exact) { @@ -751,7 +758,7 @@ bgp4PathAttrLookup (struct variable *v, oid name[], size_t *length, return NULL; } -u_char * +static u_char * bgp4PathAttrTable (struct variable *v, oid name[], size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index cebde0a4..1712c719 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -5150,9 +5150,15 @@ bgp_terminate () BGP_NOTIFY_CEASE_PEER_UNCONFIG); bgp_cleanup_routes (); + if (bm->process_main_queue) - work_queue_free (bm->process_main_queue); + { + work_queue_free (bm->process_main_queue); + bm->process_main_queue = NULL; + } if (bm->process_rsclient_queue) - work_queue_free (bm->process_rsclient_queue); + { + work_queue_free (bm->process_rsclient_queue); + bm->process_rsclient_queue = NULL; + } } - @@ -138,7 +138,7 @@ oid_compare (oid *o1, int o1_len, oid *o2, int o2_len) return 0; } -int +static int oid_compare_part (oid *o1, int o1_len, oid *o2, int o2_len) { int i; @@ -156,7 +156,7 @@ oid_compare_part (oid *o1, int o1_len, oid *o2, int o2_len) return 0; } -void +static void smux_oid_dump (const char *prefix, oid *oid, size_t oid_len) { unsigned int i; @@ -173,7 +173,7 @@ smux_oid_dump (const char *prefix, oid *oid, size_t oid_len) zlog_debug ("%s: %s", prefix, buf); } -int +static int smux_socket () { int ret; @@ -266,7 +266,7 @@ smux_socket () return sock; } -void +static void smux_getresp_send (oid objid[], size_t objid_len, long reqid, long errstat, long errindex, u_char val_type, void *arg, size_t arg_len) { @@ -324,13 +324,13 @@ smux_getresp_send (oid objid[], size_t objid_len, long reqid, long errstat, asn_build_sequence(h1,&length,(u_char)SMUX_GETRSP,ptr-h1e); if (debug_smux) - zlog_debug ("SMUX getresp send: %ld", (ptr - buf)); + zlog_debug ("SMUX getresp send: %td", (ptr - buf)); ret = send (smux_sock, buf, (ptr - buf), 0); } -char * -smux_var (char *ptr, size_t len, oid objid[], size_t *objid_len, +static u_char * +smux_var (u_char *ptr, size_t len, oid objid[], size_t *objid_len, size_t *var_val_len, u_char *var_val_type, void **var_value) @@ -341,14 +341,14 @@ smux_var (char *ptr, size_t len, oid objid[], size_t *objid_len, u_char *val; if (debug_smux) - zlog_debug ("SMUX var parse: len %ld", len); + zlog_debug ("SMUX var parse: len %zd", len); /* Parse header. */ ptr = asn_parse_header (ptr, &len, &type); if (debug_smux) { - zlog_debug ("SMUX var parse: type %d len %ld", type, len); + zlog_debug ("SMUX var parse: type %d len %zd", type, len); zlog_debug ("SMUX var parse: type must be %d", (ASN_SEQUENCE | ASN_CONSTRUCTOR)); } @@ -430,7 +430,7 @@ smux_var (char *ptr, size_t len, oid objid[], size_t *objid_len, ucd-snmp smux and as such suppose, that the peer receives in the message only one variable. Fortunately, IBM seems to do the same in AIX. */ -int +static int smux_set (oid *reqid, size_t *reqid_len, u_char val_type, void *val, size_t val_len, int action) { @@ -498,7 +498,7 @@ smux_set (oid *reqid, size_t *reqid_len, return SNMP_ERR_NOSUCHNAME; } -int +static int smux_get (oid *reqid, size_t *reqid_len, int exact, u_char *val_type,void **val, size_t *val_len) { @@ -564,7 +564,7 @@ smux_get (oid *reqid, size_t *reqid_len, int exact, return SNMP_ERR_NOSUCHNAME; } -int +static int smux_getnext (oid *reqid, size_t *reqid_len, int exact, u_char *val_type,void **val, size_t *val_len) { @@ -650,8 +650,8 @@ smux_getnext (oid *reqid, size_t *reqid_len, int exact, } /* GET message header. */ -char * -smux_parse_get_header (char *ptr, size_t *len, long *reqid) +static u_char * +smux_parse_get_header (u_char *ptr, size_t *len, long *reqid) { u_char type; long errstat; @@ -667,19 +667,19 @@ smux_parse_get_header (char *ptr, size_t *len, long *reqid) ptr = asn_parse_int (ptr, len, &type, &errstat, sizeof (errstat)); if (debug_smux) - zlog_debug ("SMUX GET errstat %ld len: %ld", errstat, *len); + zlog_debug ("SMUX GET errstat %ld len: %zd", errstat, *len); /* Error index. */ ptr = asn_parse_int (ptr, len, &type, &errindex, sizeof (errindex)); if (debug_smux) - zlog_debug ("SMUX GET errindex %ld len: %ld", errindex, *len); + zlog_debug ("SMUX GET errindex %ld len: %zd", errindex, *len); return ptr; } -void -smux_parse_set (char *ptr, size_t len, int action) +static void +smux_parse_set (u_char *ptr, size_t len, int action) { long reqid; oid oid[MAX_OID_LEN]; @@ -690,7 +690,7 @@ smux_parse_set (char *ptr, size_t len, int action) int ret; if (debug_smux) - zlog_debug ("SMUX SET(%s) message parse: len %ld", + zlog_debug ("SMUX SET(%s) message parse: len %zd", (RESERVE1 == action) ? "RESERVE1" : ((FREE == action) ? "FREE" : "COMMIT"), len); @@ -709,8 +709,8 @@ smux_parse_set (char *ptr, size_t len, int action) smux_getresp_send (oid, oid_len, reqid, ret, 3, ASN_NULL, NULL, 0); } -void -smux_parse_get (char *ptr, size_t len, int exact) +static void +smux_parse_get (u_char *ptr, size_t len, int exact) { long reqid; oid oid[MAX_OID_LEN]; @@ -721,7 +721,7 @@ smux_parse_get (char *ptr, size_t len, int exact) int ret; if (debug_smux) - zlog_debug ("SMUX GET message parse: len %ld", len); + zlog_debug ("SMUX GET message parse: len %zd", len); /* Parse GET message header. */ ptr = smux_parse_get_header (ptr, &len, &reqid); @@ -743,8 +743,8 @@ smux_parse_get (char *ptr, size_t len, int exact) } /* Parse SMUX_CLOSE message. */ -void -smux_parse_close (char *ptr, int len) +static void +smux_parse_close (u_char *ptr, int len) { long reason = 0; @@ -757,10 +757,10 @@ smux_parse_close (char *ptr, int len) } /* SMUX_RRSP message. */ -void -smux_parse_rrsp (char *ptr, size_t len) +static void +smux_parse_rrsp (u_char *ptr, size_t len) { - char val; + u_char val; long errstat; ptr = asn_parse_int (ptr, &len, &val, &errstat, sizeof (errstat)); @@ -770,8 +770,8 @@ smux_parse_rrsp (char *ptr, size_t len) } /* Parse SMUX message. */ -int -smux_parse (char *ptr, size_t len) +static int +smux_parse (u_char *ptr, size_t len) { /* This buffer we'll use for SOUT message. We could allocate it with malloc and save only static pointer/lenght, but IMHO static @@ -791,7 +791,7 @@ process_rest: /* see note below: YYY */ ptr = asn_parse_header (ptr, &len, &type); if (debug_smux) - zlog_debug ("SMUX message received type: %d rest len: %ld", type, len); + zlog_debug ("SMUX message received type: %d rest len: %zd", type, len); switch (type) { @@ -883,7 +883,7 @@ process_rest: /* see note below: YYY */ } /* SMUX message read function. */ -int +static int smux_read (struct thread *t) { int sock; @@ -939,13 +939,13 @@ smux_read (struct thread *t) return 0; } -int +static int smux_open (int sock) { u_char buf[BUFSIZ]; u_char *ptr; size_t len; - u_long version; + long version; u_char progname[] = QUAGGA_PROGNAME "-" QUAGGA_VERSION; if (debug_smux) @@ -983,7 +983,7 @@ smux_open (int sock) ptr = asn_build_string (ptr, &len, (u_char) (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), - smux_passwd, strlen (smux_passwd)); + (u_char *)smux_passwd, strlen (smux_passwd)); /* Fill in real SMUX header. We exclude ASN header size (2). */ len = BUFSIZ; @@ -1034,13 +1034,13 @@ smux_trap (oid *name, size_t namelen, val = SNMP_TRAP_ENTERPRISESPECIFIC; ptr = asn_build_int (ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - &val, sizeof (val)); + (long *)&val, sizeof (val)); /* Specific trap integer. */ val = sptrap; ptr = asn_build_int (ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - &val, sizeof (val)); + (long *)&val, sizeof (val)); /* Timeticks timestamp. */ val = 0; @@ -1118,7 +1118,7 @@ smux_trap (oid *name, size_t namelen, return send (smux_sock, buf, (ptr - buf), 0); } -int +static int smux_register (int sock) { u_char buf[BUFSIZ]; @@ -1175,7 +1175,7 @@ smux_register (int sock) } /* Try to connect to SNMP agent. */ -int +static int smux_connect (struct thread *t) { int ret; @@ -1226,7 +1226,7 @@ smux_connect (struct thread *t) } /* Clear all SMUX related resources. */ -void +static void smux_stop () { if (smux_read_thread) @@ -1269,7 +1269,7 @@ smux_event (enum smux_event event, int sock) } } -int +static int smux_str2oid (const char *str, oid *oid, size_t *oid_len) { int len; @@ -1312,7 +1312,7 @@ smux_str2oid (const char *str, oid *oid, size_t *oid_len) return 0; } -oid * +static oid * smux_oid_dup (oid *objid, size_t objid_len) { oid *new; @@ -1323,7 +1323,7 @@ smux_oid_dup (oid *objid, size_t objid_len) return new; } -int +static int smux_peer_oid (struct vty *vty, const char *oid_str, const char *passwd_str) { int ret; @@ -1387,7 +1387,7 @@ smux_header_generic (struct variable *v, oid *name, size_t *length, int exact, return MATCH_SUCCEEDED; } -int +static int smux_peer_default () { if (smux_oid) @@ -1467,7 +1467,7 @@ ALIAS (no_smux_peer, "SMUX peering object ID\n" "SMUX peering password\n") -int +static int config_write_smux (struct vty *vty) { int first = 1; @@ -1504,13 +1504,6 @@ smux_register_mib (const char *descr, struct variable *var, listnode_add_sort(treelist, tree); } -void -smux_reset () -{ - /* Setting configuration to default. */ - smux_peer_default (); -} - /* Compare function to keep treelist sorted */ static int smux_tree_cmp(struct subtree *tree1, struct subtree *tree2) @@ -127,12 +127,12 @@ struct trap_object /* Declare SMUX return value. */ #define SNMP_LOCAL_VARIABLES \ - static int32_t snmp_int_val; \ + static long snmp_int_val; \ static struct in_addr snmp_in_addr_val; #define SNMP_INTEGER(V) \ ( \ - *var_len = sizeof (int32_t), \ + *var_len = sizeof (snmp_int_val), \ snmp_int_val = V, \ (u_char *) &snmp_int_val \ ) diff --git a/lib/workqueue.c b/lib/workqueue.c index 1d32d241..7c811edd 100644 --- a/lib/workqueue.c +++ b/lib/workqueue.c @@ -91,6 +91,9 @@ work_queue_new (struct thread_master *m, const char *queue_name) void work_queue_free (struct work_queue *wq) { + if (wq->thread != NULL) + thread_cancel(wq->thread); + /* list_delete frees items via callback */ list_delete (wq->items); listnode_delete (&work_queues, wq); diff --git a/ospf6d/ospf6_snmp.c b/ospf6d/ospf6_snmp.c index 8d9842ce..5ac7846d 100644 --- a/ospf6d/ospf6_snmp.c +++ b/ospf6d/ospf6_snmp.c @@ -47,6 +47,7 @@ #include "ospf6_message.h" #include "ospf6_neighbor.h" #include "ospf6d.h" +#include "ospf6_snmp.h" /* OSPFv3-MIB */ #define OSPFv3MIB 1,3,6,1,3,102 @@ -128,9 +129,12 @@ oid ospfv3_oid [] = { OSPFv3MIB }; static struct in_addr ospf6_empty_id = {0}; /* Hook functions. */ -static u_char *ospfv3GeneralGroup (); -static u_char *ospfv3AreaEntry (); -static u_char *ospfv3AreaLsdbEntry (); +static u_char *ospfv3GeneralGroup (struct variable *, oid *, size_t *, + int, size_t *, WriteMethod **); +static u_char *ospfv3AreaEntry (struct variable *, oid *, size_t *, + int, size_t *, WriteMethod **); +static u_char *ospfv3AreaLsdbEntry (struct variable *, oid *, size_t *, + int, size_t *, WriteMethod **); struct variable ospfv3_variables[] = { diff --git a/ospfd/ospf_snmp.c b/ospfd/ospf_snmp.c index e6ce1f01..c47d432e 100644 --- a/ospfd/ospf_snmp.c +++ b/ospfd/ospf_snmp.c @@ -53,6 +53,7 @@ #include "ospfd/ospf_flood.h" #include "ospfd/ospf_ism.h" #include "ospfd/ospf_dump.h" +#include "ospfd/ospf_snmp.h" /* OSPF2-MIB. */ #define OSPF2MIB 1,3,6,1,2,1,14 @@ -220,19 +221,32 @@ oid ospf_oid [] = { OSPF2MIB }; static struct in_addr ospf_empty_addr = {0}; /* Hook functions. */ -static u_char *ospfGeneralGroup (); -static u_char *ospfAreaEntry (); -static u_char *ospfStubAreaEntry (); -static u_char *ospfLsdbEntry (); -static u_char *ospfAreaRangeEntry (); -static u_char *ospfHostEntry (); -static u_char *ospfIfEntry (); -static u_char *ospfIfMetricEntry (); -static u_char *ospfVirtIfEntry (); -static u_char *ospfNbrEntry (); -static u_char *ospfVirtNbrEntry (); -static u_char *ospfExtLsdbEntry (); -static u_char *ospfAreaAggregateEntry (); +static u_char *ospfGeneralGroup (struct variable *, oid *, size_t *, + int, size_t *, WriteMethod **); +static u_char *ospfAreaEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfStubAreaEntry (struct variable *, oid *, size_t *, + int, size_t *, WriteMethod **); +static u_char *ospfLsdbEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfAreaRangeEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfHostEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfIfEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfIfMetricEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfVirtIfEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfNbrEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfVirtNbrEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfExtLsdbEntry (struct variable *, oid *, size_t *, int, + size_t *, WriteMethod **); +static u_char *ospfAreaAggregateEntry (struct variable *, oid *, size_t *, + int, size_t *, WriteMethod **); struct variable ospf_variables[] = { @@ -495,7 +509,7 @@ struct variable ospf_variables[] = /* The administrative status of OSPF. When OSPF is enbled on at least one interface return 1. */ -int +static int ospf_admin_stat (struct ospf *ospf) { struct listnode *node; @@ -612,7 +626,7 @@ ospfGeneralGroup (struct variable *v, oid *name, size_t *length, return NULL; } -struct ospf_area * +static struct ospf_area * ospf_area_lookup_next (struct ospf *ospf, struct in_addr *area_id, int first) { struct ospf_area *area; @@ -643,7 +657,7 @@ ospf_area_lookup_next (struct ospf *ospf, struct in_addr *area_id, int first) return NULL; } -struct ospf_area * +static struct ospf_area * ospfAreaLookup (struct variable *v, oid name[], size_t *length, struct in_addr *addr, int exact) { @@ -746,7 +760,7 @@ ospfAreaEntry (struct variable *v, oid *name, size_t *length, int exact, return NULL; } -struct ospf_area * +static struct ospf_area * ospf_stub_area_lookup_next (struct in_addr *area_id, int first) { struct ospf_area *area; @@ -776,7 +790,7 @@ ospf_stub_area_lookup_next (struct in_addr *area_id, int first) return NULL; } -struct ospf_area * +static struct ospf_area * ospfStubAreaLookup (struct variable *v, oid name[], size_t *length, struct in_addr *addr, int exact) { @@ -877,7 +891,7 @@ ospfStubAreaEntry (struct variable *v, oid *name, size_t *length, return NULL; } -struct ospf_lsa * +static struct ospf_lsa * lsdb_lookup_next (struct ospf_area *area, u_char *type, int type_next, struct in_addr *ls_id, int ls_id_next, struct in_addr *router_id, int router_id_next) @@ -912,7 +926,7 @@ lsdb_lookup_next (struct ospf_area *area, u_char *type, int type_next, return NULL; } -struct ospf_lsa * +static struct ospf_lsa * ospfLsdbLookup (struct variable *v, oid *name, size_t *length, struct in_addr *area_id, u_char *type, struct in_addr *ls_id, struct in_addr *router_id, int exact) @@ -1124,7 +1138,7 @@ ospfLsdbEntry (struct variable *v, oid *name, size_t *length, int exact, return NULL; } -struct ospf_area_range * +static struct ospf_area_range * ospfAreaRangeLookup (struct variable *v, oid *name, size_t *length, struct in_addr *area_id, struct in_addr *range_net, int exact) @@ -1273,7 +1287,7 @@ ospfAreaRangeEntry (struct variable *v, oid *name, size_t *length, int exact, return NULL; } -struct ospf_nbr_nbma * +static struct ospf_nbr_nbma * ospfHostLookup (struct variable *v, oid *name, size_t *length, struct in_addr *addr, int exact) { @@ -1388,7 +1402,7 @@ struct ospf_snmp_if struct interface *ifp; }; -struct ospf_snmp_if * +static struct ospf_snmp_if * ospf_snmp_if_new () { struct ospf_snmp_if *osif; @@ -1398,7 +1412,7 @@ ospf_snmp_if_new () return osif; } -void +static void ospf_snmp_if_free (struct ospf_snmp_if *osif) { XFREE (0, osif); @@ -1488,7 +1502,7 @@ ospf_snmp_if_update (struct interface *ifp) listnode_add_after (ospf_snmp_iflist, pn, osif); } -int +static int ospf_snmp_is_if_have_addr (struct interface *ifp) { struct listnode *nn; @@ -1504,7 +1518,7 @@ ospf_snmp_is_if_have_addr (struct interface *ifp) return 0; } -struct ospf_interface * +static struct ospf_interface * ospf_snmp_if_lookup (struct in_addr *ifaddr, unsigned int *ifindex) { struct listnode *node; @@ -1528,7 +1542,7 @@ ospf_snmp_if_lookup (struct in_addr *ifaddr, unsigned int *ifindex) return oi; } -struct ospf_interface * +static struct ospf_interface * ospf_snmp_if_lookup_next (struct in_addr *ifaddr, unsigned int *ifindex, int ifaddr_next, int ifindex_next) { @@ -1563,19 +1577,21 @@ ospf_snmp_if_lookup_next (struct in_addr *ifaddr, unsigned int *ifindex, { /* Usual interface */ if (ifaddr->s_addr) - /* The interface must have valid AF_INET connected address */ - /* it must have lager IPv4 address value than the lookup entry */ - if ((ospf_snmp_is_if_have_addr(osif->ifp)) && - (ntohl (osif->addr.s_addr) > ntohl (ifaddr->s_addr))) - { - *ifaddr = osif->addr; - *ifindex = osif->ifindex; + { + /* The interface must have valid AF_INET connected address */ + /* it must have lager IPv4 address value than the lookup entry */ + if ((ospf_snmp_is_if_have_addr(osif->ifp)) && + (ntohl (osif->addr.s_addr) > ntohl (ifaddr->s_addr))) + { + *ifaddr = osif->addr; + *ifindex = osif->ifindex; - /* and it must be an OSPF interface */ - oi = ospf_if_lookup_by_local_addr (ospf, osif->ifp, *ifaddr); - if (oi) - return oi; - } + /* and it must be an OSPF interface */ + oi = ospf_if_lookup_by_local_addr (ospf, osif->ifp, *ifaddr); + if (oi) + return oi; + } + } /* Unnumbered interface */ else /* The interface must NOT have valid AF_INET connected address */ @@ -1595,7 +1611,7 @@ ospf_snmp_if_lookup_next (struct in_addr *ifaddr, unsigned int *ifindex, return NULL; } -int +static int ospf_snmp_iftype (struct interface *ifp) { #define ospf_snmp_iftype_broadcast 1 @@ -1609,7 +1625,7 @@ ospf_snmp_iftype (struct interface *ifp) return ospf_snmp_iftype_broadcast; } -struct ospf_interface * +static struct ospf_interface * ospfIfLookup (struct variable *v, oid *name, size_t *length, struct in_addr *ifaddr, unsigned int *ifindex, int exact) { @@ -1665,7 +1681,7 @@ ospfIfLookup (struct variable *v, oid *name, size_t *length, static u_char * ospfIfEntry (struct variable *v, oid *name, size_t *length, int exact, - size_t *var_len, WriteMethod **write_method) + size_t *var_len, WriteMethod **write_method) { unsigned int ifindex; struct in_addr ifaddr; @@ -1769,7 +1785,7 @@ ospfIfEntry (struct variable *v, oid *name, size_t *length, int exact, #define OSPF_SNMP_METRIC_VALUE 1 -struct ospf_interface * +static struct ospf_interface * ospfIfMetricLookup (struct variable *v, oid *name, size_t *length, struct in_addr *ifaddr, unsigned int *ifindex, int exact) { @@ -1915,7 +1931,7 @@ ospf_snmp_vl_delete (struct ospf_vl_data *vl_data) route_unlock_node (rn); } -struct ospf_vl_data * +static struct ospf_vl_data * ospf_snmp_vl_lookup (struct in_addr *area_id, struct in_addr *neighbor) { struct prefix_ls lp; @@ -1938,7 +1954,7 @@ ospf_snmp_vl_lookup (struct in_addr *area_id, struct in_addr *neighbor) return NULL; } -struct ospf_vl_data * +static struct ospf_vl_data * ospf_snmp_vl_lookup_next (struct in_addr *area_id, struct in_addr *neighbor, int first) { @@ -1975,7 +1991,7 @@ ospf_snmp_vl_lookup_next (struct in_addr *area_id, struct in_addr *neighbor, return NULL; } -struct ospf_vl_data * +static struct ospf_vl_data * ospfVirtIfLookup (struct variable *v, oid *name, size_t *length, struct in_addr *area_id, struct in_addr *neighbor, int exact) { @@ -2025,7 +2041,7 @@ ospfVirtIfLookup (struct variable *v, oid *name, size_t *length, static u_char * ospfVirtIfEntry (struct variable *v, oid *name, size_t *length, int exact, - size_t *var_len, WriteMethod **write_method) + size_t *var_len, WriteMethod **write_method) { struct ospf_vl_data *vl_data; struct ospf_interface *oi; @@ -2089,7 +2105,7 @@ ospfVirtIfEntry (struct variable *v, oid *name, size_t *length, int exact, return NULL; } -struct ospf_neighbor * +static struct ospf_neighbor * ospf_snmp_nbr_lookup (struct ospf *ospf, struct in_addr *nbr_addr, unsigned int *ifindex) { @@ -2118,7 +2134,7 @@ ospf_snmp_nbr_lookup (struct ospf *ospf, struct in_addr *nbr_addr, return NULL; } -struct ospf_neighbor * +static struct ospf_neighbor * ospf_snmp_nbr_lookup_next (struct in_addr *nbr_addr, unsigned int *ifindex, int first) { @@ -2164,7 +2180,7 @@ ospf_snmp_nbr_lookup_next (struct in_addr *nbr_addr, unsigned int *ifindex, return NULL; } -struct ospf_neighbor * +static struct ospf_neighbor * ospfNbrLookup (struct variable *v, oid *name, size_t *length, struct in_addr *nbr_addr, unsigned int *ifindex, int exact) { @@ -2258,7 +2274,7 @@ ospf_snmp_neighbor_state(u_char nst) static u_char * ospfNbrEntry (struct variable *v, oid *name, size_t *length, int exact, - size_t *var_len, WriteMethod **write_method) + size_t *var_len, WriteMethod **write_method) { struct in_addr nbr_addr; unsigned int ifindex; @@ -2320,7 +2336,7 @@ ospfNbrEntry (struct variable *v, oid *name, size_t *length, int exact, static u_char * ospfVirtNbrEntry (struct variable *v, oid *name, size_t *length, int exact, - size_t *var_len, WriteMethod **write_method) + size_t *var_len, WriteMethod **write_method) { struct ospf_vl_data *vl_data; struct in_addr area_id; @@ -2373,7 +2389,7 @@ ospfVirtNbrEntry (struct variable *v, oid *name, size_t *length, int exact, return NULL; } -struct ospf_lsa * +static struct ospf_lsa * ospfExtLsdbLookup (struct variable *v, oid *name, size_t *length, u_char *type, struct in_addr *ls_id, struct in_addr *router_id, int exact) { @@ -2466,7 +2482,7 @@ ospfExtLsdbLookup (struct variable *v, oid *name, size_t *length, u_char *type, static u_char * ospfExtLsdbEntry (struct variable *v, oid *name, size_t *length, int exact, - size_t *var_len, WriteMethod **write_method) + size_t *var_len, WriteMethod **write_method) { struct ospf_lsa *lsa; struct lsa_header *lsah; diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index a7238270..c4abe7e1 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -2115,8 +2115,10 @@ DEFUN (no_ospf_abr_type, abr_type = OSPF_ABR_CISCO; else if (strncmp (argv[0], "i", 1) == 0) abr_type = OSPF_ABR_IBM; - else if (strncmp (argv[0], "s", 1) == 0) + else if (strncmp (argv[0], "sh", 2) == 0) abr_type = OSPF_ABR_SHORTCUT; + else if (strncmp (argv[0], "st", 2) == 0) + abr_type = OSPF_ABR_STAND; else return CMD_WARNING; diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c index b6d9240f..7c5577b4 100644 --- a/ripd/rip_interface.c +++ b/ripd/rip_interface.c @@ -591,7 +591,7 @@ rip_if_down(struct interface *ifp) { rip_zebra_ipv4_delete ((struct prefix_ipv4 *) &rp->p, &rinfo->nexthop, - rinfo->ifindex); + rinfo->metric); rip_redistribute_delete (rinfo->type,rinfo->sub_type, (struct prefix_ipv4 *)&rp->p, diff --git a/ripd/rip_snmp.c b/ripd/rip_snmp.c index d02c7610..61c47c71 100644 --- a/ripd/rip_snmp.c +++ b/ripd/rip_snmp.c @@ -93,10 +93,14 @@ oid rip_oid [] = { RIPV2MIB }; struct route_table *rip_ifaddr_table; /* Hook functions. */ -static u_char *rip2Globals (); -static u_char *rip2IfStatEntry (); -static u_char *rip2IfConfAddress (); -static u_char *rip2PeerTable (); +static u_char *rip2Globals (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *rip2IfStatEntry (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *rip2IfConfAddress (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char *rip2PeerTable (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); struct variable rip_variables[] = { @@ -215,7 +219,7 @@ rip_ifaddr_delete (struct interface *ifp, struct connected *ifc) } } -struct interface * +static struct interface * rip_ifaddr_lookup_next (struct in_addr *addr) { struct prefix_ipv4 p; diff --git a/zebra/zebra_snmp.c b/zebra/zebra_snmp.c index 7e66e2f6..0fde4bb8 100644 --- a/zebra/zebra_snmp.c +++ b/zebra/zebra_snmp.c @@ -90,10 +90,14 @@ extern struct zebra_t zebrad; oid ipfw_oid [] = { IPFWMIB }; /* Hook functions. */ -u_char * ipFwNumber (); -u_char * ipFwTable (); -u_char * ipCidrNumber (); -u_char * ipCidrTable (); +static u_char * ipFwNumber (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char * ipFwTable (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char * ipCidrNumber (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); +static u_char * ipCidrTable (struct variable *, oid [], size_t *, + int, size_t *, WriteMethod **); struct variable zebra_variables[] = { @@ -133,7 +137,7 @@ struct variable zebra_variables[] = }; -u_char * +static u_char * ipFwNumber (struct variable *v, oid objid[], size_t *objid_len, int exact, size_t *val_len, WriteMethod **write_method) { @@ -158,7 +162,7 @@ ipFwNumber (struct variable *v, oid objid[], size_t *objid_len, return (u_char *)&result; } -u_char * +static u_char * ipCidrNumber (struct variable *v, oid objid[], size_t *objid_len, int exact, size_t *val_len, WriteMethod **write_method) { @@ -183,7 +187,7 @@ ipCidrNumber (struct variable *v, oid objid[], size_t *objid_len, return (u_char *)&result; } -int +static int in_addr_cmp(u_char *p1, u_char *p2) { int i; @@ -199,7 +203,7 @@ in_addr_cmp(u_char *p1, u_char *p2) return 0; } -int +static int in_addr_add(u_char *p, int num) { int i, ip0; @@ -224,7 +228,8 @@ in_addr_add(u_char *p, int num) return 1; } -int proto_trans(int type) +static int +proto_trans(int type) { switch (type) { @@ -251,7 +256,7 @@ int proto_trans(int type) } } -void +static void check_replace(struct route_node *np2, struct rib *rib2, struct route_node **np, struct rib **rib) { @@ -294,7 +299,7 @@ check_replace(struct route_node *np2, struct rib *rib2, return; } -void +static void get_fwtable_route_node(struct variable *v, oid objid[], size_t *objid_len, int exact, struct route_node **np, struct rib **rib) { @@ -339,7 +344,7 @@ get_fwtable_route_node(struct variable *v, oid objid[], size_t *objid_len, * ipForwardDest, ipForwardProto, ipForwardPolicy, ipForwardNextHop */ - if (*objid_len > v->namelen) + if (*objid_len > (unsigned) v->namelen) oid2in_addr (objid + v->namelen, MIN(4, *objid_len - v->namelen), &dest); if (*objid_len > (unsigned) v->namelen + 4) @@ -441,7 +446,7 @@ get_fwtable_route_node(struct variable *v, oid objid[], size_t *objid_len, return; } -u_char * +static u_char * ipFwTable (struct variable *v, oid objid[], size_t *objid_len, int exact, size_t *val_len, WriteMethod **write_method) { @@ -546,7 +551,7 @@ ipFwTable (struct variable *v, oid objid[], size_t *objid_len, return NULL; } -u_char * +static u_char * ipCidrTable (struct variable *v, oid objid[], size_t *objid_len, int exact, size_t *val_len, WriteMethod **write_method) { |