diff options
author | Martin Mares <mj@ucw.cz> | 2000-05-07 12:41:45 +0200 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 2000-05-07 12:41:45 +0200 |
commit | acfce55c8637988954543c60597cd2f1525ba6ec (patch) | |
tree | d01456d486ef38e0fff9f1d8f4115efa415fe2bd | |
parent | ce1da96ee7efc9310f138e4234495557cdef59e2 (diff) | |
download | bird-acfce55c8637988954543c60597cd2f1525ba6ec.tar bird-acfce55c8637988954543c60597cd2f1525ba6ec.zip |
Setup of incoming connection is now a separate function.
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | proto/bgp/bgp.c | 17 |
2 files changed, 12 insertions, 7 deletions
@@ -15,8 +15,6 @@ Core - filters: deletion of mandatory attributes? -- bgp: wait on restart - Documentation ~~~~~~~~~~~~~ - write doctool diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index 41081f2..ecaa9e3 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -27,6 +27,7 @@ static char *bgp_state_names[] = { "Idle", "Connect", "Active", "OpenSent", "Ope static void bgp_connect(struct bgp_proto *p); static void bgp_initiate(struct bgp_proto *p); +static void bgp_setup_listen_sk(void); void bgp_close(struct bgp_proto *p) @@ -309,12 +310,8 @@ bgp_incoming_connection(sock *sk, int dummy) } static void -bgp_start_neighbor(struct bgp_proto *p) +bgp_setup_listen_sk(void) { - p->local_addr = p->neigh->iface->addr->ip; - DBG("BGP: local=%I remote=%I\n", p->local_addr, p->next_hop); - if (!bgp_counter++) - init_list(&bgp_list); if (!bgp_listen_sk) { sock *s = sk_new(&root_pool); @@ -334,6 +331,16 @@ bgp_start_neighbor(struct bgp_proto *p) else bgp_listen_sk = s; } +} + +static void +bgp_start_neighbor(struct bgp_proto *p) +{ + p->local_addr = p->neigh->iface->addr->ip; + DBG("BGP: local=%I remote=%I\n", p->local_addr, p->next_hop); + if (!bgp_counter++) + init_list(&bgp_list); + bgp_setup_listen_sk(); if (!bgp_linpool) bgp_linpool = lp_new(&root_pool, 4080); add_tail(&bgp_list, &p->bgp_node); |