Merge branch 'fdn-mods'
This commit is contained in:
commit
7d862d168f
3 changed files with 49 additions and 26 deletions
25
bgp.c
25
bgp.c
|
|
@ -35,6 +35,7 @@ static struct bgp_route_list *bgp_insert_route(struct bgp_route_list *head,
|
||||||
static struct bgp_route6_list *bgp_insert_route6(struct bgp_route6_list *head,
|
static struct bgp_route6_list *bgp_insert_route6(struct bgp_route6_list *head,
|
||||||
struct bgp_route6_list *new);
|
struct bgp_route6_list *new);
|
||||||
|
|
||||||
|
static void bgp_process_timers(struct bgp_peer *peer);
|
||||||
static void bgp_free_routes(struct bgp_route_list *routes);
|
static void bgp_free_routes(struct bgp_route_list *routes);
|
||||||
static void bgp_free_routes6(struct bgp_route6_list *routes);
|
static void bgp_free_routes6(struct bgp_route6_list *routes);
|
||||||
static char const *bgp_msg_type_str(uint8_t type);
|
static char const *bgp_msg_type_str(uint8_t type);
|
||||||
|
|
@ -826,6 +827,25 @@ int bgp_process(uint32_t events[])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* process timers */
|
/* process timers */
|
||||||
|
bgp_process_timers(peer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void bgp_process_peers_timers()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!bgp_configured)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < BGP_NUM_PEERS; i++)
|
||||||
|
bgp_process_timers(&bgp_peers[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bgp_process_timers(struct bgp_peer *peer)
|
||||||
|
{
|
||||||
if (peer->state == Established)
|
if (peer->state == Established)
|
||||||
{
|
{
|
||||||
if (time_now > peer->expire_time)
|
if (time_now > peer->expire_time)
|
||||||
|
|
@ -834,7 +854,7 @@ int bgp_process(uint32_t events[])
|
||||||
peer->name, peer->hold);
|
peer->name, peer->hold);
|
||||||
|
|
||||||
bgp_send_notification(peer, BGP_ERR_HOLD_TIMER_EXP, 0);
|
bgp_send_notification(peer, BGP_ERR_HOLD_TIMER_EXP, 0);
|
||||||
continue;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (time_now > peer->keepalive_time && !peer->outbuf->packet.header.len)
|
if (time_now > peer->keepalive_time && !peer->outbuf->packet.header.len)
|
||||||
|
|
@ -854,9 +874,6 @@ int bgp_process(uint32_t events[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void bgp_free_routes(struct bgp_route_list *routes)
|
static void bgp_free_routes(struct bgp_route_list *routes)
|
||||||
{
|
{
|
||||||
struct bgp_route_list *tmp;
|
struct bgp_route_list *tmp;
|
||||||
|
|
|
||||||
1
bgp.h
1
bgp.h
|
|
@ -278,6 +278,7 @@ int bgp_del_route6(struct in6_addr ip, int prefixlen);
|
||||||
void bgp_enable_routing(int enable);
|
void bgp_enable_routing(int enable);
|
||||||
int bgp_set_poll(void);
|
int bgp_set_poll(void);
|
||||||
int bgp_process(uint32_t events[]);
|
int bgp_process(uint32_t events[]);
|
||||||
|
void bgp_process_peers_timers();
|
||||||
char const *bgp_state_str(enum bgp_state state);
|
char const *bgp_state_str(enum bgp_state state);
|
||||||
|
|
||||||
extern char const *cvs_id_bgp;
|
extern char const *cvs_id_bgp;
|
||||||
|
|
|
||||||
5
l2tpns.c
5
l2tpns.c
|
|
@ -3769,6 +3769,11 @@ static void mainloop(void)
|
||||||
more++;
|
more++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef BGP
|
||||||
|
else
|
||||||
|
/* no event received, but timers could still have expired */
|
||||||
|
bgp_process_peers_timers();
|
||||||
|
#endif /* BGP */
|
||||||
|
|
||||||
if (time_changed)
|
if (time_changed)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue