summaryrefslogtreecommitdiff
path: root/pimd/pim_msdp_socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_msdp_socket.c')
-rw-r--r--pimd/pim_msdp_socket.c22
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));