bgp使用tcp连接,每个bgp实例自身是peer的一个tcp server端,同时也是peer的tcp client端。
1、在bgp_create之后都建立自己的socket服务端开始监听179端口:
1 bgp = bgp_create(as, name); 2 bgp_router_id_set(bgp, &router_id_zebra); 3 *bgp_val = bgp; 4 5 /* Create BGP server socket, if first instance. */ 6 if (list_isempty(bm->bgp) 7 && !bgp_option_check(BGP_OPT_NO_LISTEN)) { 8 if (bgp_socket(bm->port, bm->address) < 0) return BGP_ERR_INVALID_VALUE; 9 }10 11 listnode_add(bm->bgp, bgp);
bgp_socket里完成server socket的创建与监听。