]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: marking MSDP traffic as DSCP CS6 8297/head
authorAdriano Marto Reis <adrianomarto@gmail.com>
Sat, 20 Mar 2021 23:25:13 +0000 (09:25 +1000)
committerAdriano Marto Reis <adrianomarto@gmail.com>
Sat, 20 Mar 2021 23:25:13 +0000 (09:25 +1000)
Configuring the sockets used to establish MSDP connections so the
packets are marked as CS6

Signed-off-by: Adriano Marto Reis <adrianomarto@gmail.com>
pimd/pim_msdp_socket.c

index b613937f59bc7a51eb9756c522df40aaf95edb34..9c3cdb27115fef0db5f52ad26db70e0382c3c2d7 100644 (file)
@@ -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)
 {
@@ -194,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);
@@ -272,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));