diff options
-rw-r--r-- | bgpd/bgp_nexthop.c | 85 | ||||
-rw-r--r-- | bgpd/bgp_snmp.c | 1 | ||||
-rw-r--r-- | bgpd/bgpd.h | 1 | ||||
-rw-r--r-- | ospf6d/ospf6d.h | 2 |
4 files changed, 46 insertions, 43 deletions
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c index ad932b51..77b024e5 100644 --- a/bgpd/bgp_nexthop.c +++ b/bgpd/bgp_nexthop.c @@ -1119,9 +1119,11 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric, struct in_addr *igpnex int bgp_import (struct thread *t) { + struct bgp_master *bm; struct bgp *bgp; struct bgp_node *rn; struct bgp_static *bgp_static; + struct listnode *nn; int valid; u_int32_t metric; struct in_addr nexthop; @@ -1131,49 +1133,52 @@ bgp_import (struct thread *t) bgp_import_thread = thread_add_timer (master, bgp_import, NULL, bgp_import_interval); - bgp = bgp_get_default (); - if (! bgp) + bm = bgp_get_master (); + if (! bm) return 0; - for (afi = AFI_IP; afi < AFI_MAX; afi++) - for (safi = SAFI_UNICAST; safi < SAFI_MPLS_VPN; safi++) - for (rn = bgp_table_top (bgp->route[afi][safi]); rn; - rn = bgp_route_next (rn)) - if ((bgp_static = rn->info) != NULL) - { - if (bgp_static->backdoor) - continue; - - valid = bgp_static->valid; - metric = bgp_static->igpmetric; - nexthop = bgp_static->igpnexthop; - - if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK) - && afi == AFI_IP && safi == SAFI_UNICAST) - bgp_static->valid = bgp_import_check (&rn->p, &bgp_static->igpmetric, - &bgp_static->igpnexthop); - else + LIST_LOOP (bm->bgp, bgp, nn) + { + for (afi = AFI_IP; afi < AFI_MAX; afi++) + for (safi = SAFI_UNICAST; safi < SAFI_MPLS_VPN; safi++) + for (rn = bgp_table_top (bgp->route[afi][safi]); rn; + rn = bgp_route_next (rn)) + if ((bgp_static = rn->info) != NULL) { - bgp_static->valid = 1; - bgp_static->igpmetric = 0; - bgp_static->igpnexthop.s_addr = 0; - } + if (bgp_static->backdoor) + continue; - if (bgp_static->valid != valid) - { - if (bgp_static->valid) - bgp_static_update (bgp, &rn->p, bgp_static, afi, safi); + valid = bgp_static->valid; + metric = bgp_static->igpmetric; + nexthop = bgp_static->igpnexthop; + + if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK) + && afi == AFI_IP && safi == SAFI_UNICAST) + bgp_static->valid = bgp_import_check (&rn->p, &bgp_static->igpmetric, + &bgp_static->igpnexthop); else - bgp_static_withdraw (bgp, &rn->p, afi, safi); + { + bgp_static->valid = 1; + bgp_static->igpmetric = 0; + bgp_static->igpnexthop.s_addr = 0; + } + + if (bgp_static->valid != valid) + { + if (bgp_static->valid) + bgp_static_update (bgp, &rn->p, bgp_static, afi, safi); + else + bgp_static_withdraw (bgp, &rn->p, afi, safi); + } + else if (bgp_static->valid) + { + if (bgp_static->igpmetric != metric + || bgp_static->igpnexthop.s_addr != nexthop.s_addr + || bgp_static->rmap.name) + bgp_static_update (bgp, &rn->p, bgp_static, afi, safi); + } } - else if (bgp_static->valid) - { - if (bgp_static->igpmetric != metric - || bgp_static->igpnexthop.s_addr != nexthop.s_addr - || bgp_static->rmap.name) - bgp_static_update (bgp, &rn->p, bgp_static, afi, safi); - } - } + } return 0; } @@ -1197,10 +1202,6 @@ zlookup_connect (struct thread *t) if (zlookup->sock < 0) return -1; - /* Make BGP import there. */ - bgp_import_thread = - thread_add_timer (master, bgp_import, NULL, 0); - return 0; } @@ -1396,6 +1397,8 @@ bgp_scan_init () /* Make BGP scan thread. */ bgp_scan_thread = thread_add_timer (master, bgp_scan, NULL, bgp_scan_interval); + /* Make BGP import there. */ + bgp_import_thread = thread_add_timer (master, bgp_import, NULL, 0); install_element (BGP_NODE, &bgp_scan_time_cmd); install_element (BGP_NODE, &no_bgp_scan_time_cmd); diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c index 8104aefb..598fc3cd 100644 --- a/bgpd/bgp_snmp.c +++ b/bgpd/bgp_snmp.c @@ -829,7 +829,6 @@ bgp4PathAttrTable (struct variable *v, oid name[], size_t *length, /* BGP Traps. */ struct trap_object bgpTrapList[] = { - {bgpPeerTable, 3, {3, 1, BGPPEERREMOTEADDR}}, {bgpPeerTable, 3, {3, 1, BGPPEERLASTERROR}}, {bgpPeerTable, 3, {3, 1, BGPPEERSTATE}} }; diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index e3ac73f1..933516d0 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -691,6 +691,7 @@ void bgp_reset (void); void bgp_zclient_reset (); int bgp_nexthop_set (union sockunion *, union sockunion *, struct bgp_nexthop *, struct peer *); +struct bgp_master *bgp_get_master (); struct bgp *bgp_get_default (); struct bgp *bgp_lookup (as_t, char *); struct bgp *bgp_lookup_by_name (char *); diff --git a/ospf6d/ospf6d.h b/ospf6d/ospf6d.h index 4c9f7dc3..8c7af99e 100644 --- a/ospf6d/ospf6d.h +++ b/ospf6d/ospf6d.h @@ -73,7 +73,7 @@ #define HASHVAL 64 #define MAXIOVLIST 1024 -#define OSPF6_DAEMON_VERSION "0.9.6o" +#define OSPF6_DAEMON_VERSION "0.9.6p" #define AF_LINKSTATE 0xff |