diff options
Diffstat (limited to 'bgpd/bgp_network.c')
| -rw-r--r-- | bgpd/bgp_network.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 96d2e2f2ab..d56fdd75ce 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -36,6 +36,7 @@ #include "filter.h" #include "ns.h" #include "lib_errors.h" +#include "nexthop.h" #include "bgpd/bgpd.h" #include "bgpd/bgp_open.h" @@ -44,6 +45,7 @@ #include "bgpd/bgp_debug.h" #include "bgpd/bgp_errors.h" #include "bgpd/bgp_network.h" +#include "bgpd/bgp_zebra.h" extern struct zebra_privs_t bgpd_privs; @@ -84,7 +86,7 @@ static int bgp_md5_set_socket(int socket, union sockunion *su, #endif /* HAVE_TCP_MD5SIG */ if (ret < 0) - flog_warn(BGP_WARN_NO_TCP_MD5, + flog_warn(EC_BGP_NO_TCP_MD5, "can't set TCP_MD5SIG option on socket %d: %s", socket, safe_strerror(en)); @@ -149,7 +151,7 @@ int bgp_set_socket_ttl(struct peer *peer, int bgp_sock) ret = sockopt_ttl(peer->su.sa.sa_family, bgp_sock, peer->ttl); if (ret) { flog_err( - LIB_ERR_SOCKET, + EC_LIB_SOCKET, "%s: Can't set TxTTL on peer (rtrid %s) socket, err = %d", __func__, inet_ntop(AF_INET, &peer->remote_id, buf, @@ -165,7 +167,7 @@ int bgp_set_socket_ttl(struct peer *peer, int bgp_sock) ret = sockopt_ttl(peer->su.sa.sa_family, bgp_sock, MAXTTL); if (ret) { flog_err( - LIB_ERR_SOCKET, + EC_LIB_SOCKET, "%s: Can't set TxTTL on peer (rtrid %s) socket, err = %d", __func__, inet_ntop(AF_INET, &peer->remote_id, buf, @@ -177,7 +179,7 @@ int bgp_set_socket_ttl(struct peer *peer, int bgp_sock) MAXTTL + 1 - peer->gtsm_hops); if (ret) { flog_err( - LIB_ERR_SOCKET, + EC_LIB_SOCKET, "%s: Can't set MinTTL on peer (rtrid %s) socket, err = %d", __func__, inet_ntop(AF_INET, &peer->remote_id, buf, @@ -222,10 +224,9 @@ static int bgp_get_instance_for_inc_conn(int sock, struct bgp **bgp_inst) rc = getsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, name, &name_len); if (rc != 0) { #if defined(HAVE_CUMULUS) - flog_err( - LIB_ERR_SOCKET, - "[Error] BGP SO_BINDTODEVICE get failed (%s), sock %d", - safe_strerror(errno), sock); + flog_err(EC_LIB_SOCKET, + "[Error] BGP SO_BINDTODEVICE get failed (%s), sock %d", + safe_strerror(errno), sock); return -1; #endif } @@ -280,7 +281,7 @@ static int bgp_accept(struct thread *thread) /* Register accept thread. */ accept_sock = THREAD_FD(thread); if (accept_sock < 0) { - flog_err_sys(LIB_ERR_SOCKET, "accept_sock is nevative value %d", + flog_err_sys(EC_LIB_SOCKET, "accept_sock is nevative value %d", accept_sock); return -1; } @@ -292,7 +293,7 @@ static int bgp_accept(struct thread *thread) /* Accept client connection. */ bgp_sock = sockunion_accept(accept_sock, &su); if (bgp_sock < 0) { - flog_err_sys(LIB_ERR_SOCKET, + flog_err_sys(EC_LIB_SOCKET, "[Error] BGP socket accept failed (%s)", safe_strerror(errno)); return -1; @@ -562,7 +563,7 @@ int bgp_connect(struct peer *peer) sockopt_reuseaddr(peer->fd); sockopt_reuseport(peer->fd); if (sockopt_mark_default(peer->fd, DATAPLANE_MARK, &bgpd_privs) < 0) - flog_warn(BGP_WARN_NO_SOCKOPT_MARK, + flog_warn(EC_BGP_NO_SOCKOPT_MARK, "Unable to set mark on FD for peer %s, err=%s", peer->host, safe_strerror(errno)); @@ -619,15 +620,12 @@ int bgp_getsockname(struct peer *peer) if (!peer->su_remote) return -1; - if (bgp_nexthop_set(peer->su_local, peer->su_remote, &peer->nexthop, - peer)) { -#if defined(HAVE_CUMULUS) - flog_err( - BGP_ERR_NH_UPD, - "%s: nexthop_set failed, resetting connection - intf %p", - peer->host, peer->nexthop.ifp); + if (!bgp_zebra_nexthop_set(peer->su_local, peer->su_remote, + &peer->nexthop, peer)) { + flog_err(EC_BGP_NH_UPD, + "%s: nexthop_set failed, resetting connection - intf %p", + peer->host, peer->nexthop.ifp); return -1; -#endif } return 0; } @@ -659,14 +657,13 @@ static int bgp_listener(int sock, struct sockaddr *sa, socklen_t salen, } if (ret < 0) { - flog_err_sys(LIB_ERR_SOCKET, "bind: %s", safe_strerror(en)); + flog_err_sys(EC_LIB_SOCKET, "bind: %s", safe_strerror(en)); return ret; } ret = listen(sock, SOMAXCONN); if (ret < 0) { - flog_err_sys(LIB_ERR_SOCKET, "listen: %s", - safe_strerror(errno)); + flog_err_sys(EC_LIB_SOCKET, "listen: %s", safe_strerror(errno)); return ret; } @@ -708,7 +705,7 @@ int bgp_socket(struct bgp *bgp, unsigned short port, const char *address) bgp->vrf_id); } if (ret != 0) { - flog_err_sys(LIB_ERR_SOCKET, "getaddrinfo: %s", + flog_err_sys(EC_LIB_SOCKET, "getaddrinfo: %s", gai_strerror(ret)); return -1; } @@ -729,7 +726,7 @@ int bgp_socket(struct bgp *bgp, unsigned short port, const char *address) ? bgp->name : NULL)); } if (sock < 0) { - flog_err_sys(LIB_ERR_SOCKET, "socket: %s", + flog_err_sys(EC_LIB_SOCKET, "socket: %s", safe_strerror(errno)); continue; } @@ -748,10 +745,10 @@ int bgp_socket(struct bgp *bgp, unsigned short port, const char *address) freeaddrinfo(ainfo_save); if (count == 0 && bgp->inst_type != BGP_INSTANCE_TYPE_VRF) { flog_err( - LIB_ERR_SOCKET, + EC_LIB_SOCKET, "%s: no usable addresses please check other programs usage of specified port %d", __func__, port); - flog_err_sys(LIB_ERR_SOCKET, "%s: Program cannot continue", + flog_err_sys(EC_LIB_SOCKET, "%s: Program cannot continue", __func__); exit(-1); } |
