diff options
Diffstat (limited to 'pimd/pim_msdp_socket.c')
| -rw-r--r-- | pimd/pim_msdp_socket.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c index ddd8dc6bf9..9c3cdb2711 100644 --- a/pimd/pim_msdp_socket.c +++ b/pimd/pim_msdp_socket.c @@ -35,6 +35,8 @@ #include "pim_msdp.h" #include "pim_msdp_socket.h" +#include "sockopt.h" + /* increase socket send buffer size */ static void pim_msdp_update_sock_send_buffer_size(int fd) { @@ -67,7 +69,6 @@ static int pim_msdp_sock_accept(struct thread *thread) int accept_sock; int msdp_sock; struct pim_msdp_peer *mp; - char buf[SU_ADDRSTRLEN]; sockunion_init(&su); @@ -96,8 +97,7 @@ static int pim_msdp_sock_accept(struct thread *thread) ++pim->msdp.rejected_accepts; if (PIM_DEBUG_MSDP_EVENTS) { flog_err(EC_PIM_MSDP_PACKET, - "msdp peer connection refused from %s", - sockunion2str(&su, buf, SU_ADDRSTRLEN)); + "msdp peer connection refused from %pSU", &su); } close(msdp_sock); return -1; @@ -113,8 +113,8 @@ static int pim_msdp_sock_accept(struct thread *thread) if (mp->fd >= 0) { if (PIM_DEBUG_MSDP_EVENTS) { zlog_notice( - "msdp peer new connection from %s stop old connection", - sockunion2str(&su, buf, SU_ADDRSTRLEN)); + "msdp peer new connection from %pSU stop old connection", + &su); } pim_msdp_peer_stop_tcp_conn(mp, true /* chg_state */); } @@ -196,6 +196,12 @@ int pim_msdp_sock_listen(struct pim_instance *pim) return rc; } + /* Set socket DSCP byte */ + if (setsockopt_ipv4_tos(sock, IPTOS_PREC_INTERNETCONTROL)) { + zlog_warn("can't set sockopt IP_TOS to MSDP socket %d: %s", + sock, safe_strerror(errno)); + } + /* add accept thread */ listener->fd = sock; memcpy(&listener->su, &sin, socklen); @@ -274,6 +280,12 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp) return rc; } + /* Set socket DSCP byte */ + if (setsockopt_ipv4_tos(mp->fd, IPTOS_PREC_INTERNETCONTROL)) { + zlog_warn("can't set sockopt IP_TOS to MSDP socket %d: %s", + mp->fd, safe_strerror(errno)); + } + /* Connect to the remote mp. */ return (sockunion_connect(mp->fd, &mp->su_peer, htons(PIM_MSDP_TCP_PORT), 0)); |
