]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Disable sending of control packets on passive interface
authorsarita patra <saritap@vmware.com>
Mon, 4 Apr 2022 11:37:56 +0000 (04:37 -0700)
committersarita patra <saritap@vmware.com>
Fri, 13 May 2022 06:51:21 +0000 (23:51 -0700)
Signed-off-by: sarita patra <saritap@vmware.com>
pimd/pim_pim.c
pimd/pim_pim.h

index 352f95c4735bc18f916e1adb52102274fa35edec..e9426c1c95592b187954b3e0ca9b79cbcdf633bf 100644 (file)
@@ -594,13 +594,24 @@ static int pim_msg_send_frame(int fd, char *buf, size_t len,
 }
 
 int pim_msg_send(int fd, pim_addr src, pim_addr dst, uint8_t *pim_msg,
-                int pim_msg_size, const char *ifname)
+                int pim_msg_size, struct interface *ifp)
 {
        socklen_t tolen;
        unsigned char buffer[10000];
        unsigned char *msg_start;
        uint8_t ttl;
        struct pim_msg_header *header;
+       struct pim_interface *pim_ifp;
+
+       pim_ifp = ifp->info;
+
+       if (pim_ifp->pim_passive_enable) {
+               if (PIM_DEBUG_PIM_PACKETS)
+                       zlog_debug(
+                               "skip sending PIM message on passive interface %s",
+                               ifp->name);
+               return 0;
+       }
 
        memset(buffer, 0, 10000);
 
@@ -673,7 +684,7 @@ int pim_msg_send(int fd, pim_addr src, pim_addr dst, uint8_t *pim_msg,
 
        if (PIM_DEBUG_PIM_PACKETS)
                zlog_debug("%s: to %pPA on %s: msg_size=%d checksum=%x",
-                          __func__, &dst, ifname, pim_msg_size,
+                          __func__, &dst, ifp->name, pim_msg_size,
                           header->checksum);
 
        if (PIM_DEBUG_PIM_PACKETDUMP_SEND) {
@@ -681,7 +692,7 @@ int pim_msg_send(int fd, pim_addr src, pim_addr dst, uint8_t *pim_msg,
        }
 
        pim_msg_send_frame(fd, (char *)buffer, sendlen, (struct sockaddr *)&to,
-                          tolen, ifname);
+                          tolen, ifp->name);
        return 0;
 }
 
index 822d8a18faf4fcbe13f5d7a06da840f28a209291..e2555eab8c216fd2453a22026f106fef4f5dc076 100644 (file)
@@ -58,7 +58,7 @@ int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len,
                   pim_sgaddr sg);
 
 int pim_msg_send(int fd, pim_addr src, pim_addr dst, uint8_t *pim_msg,
-                int pim_msg_size, const char *ifname);
+                int pim_msg_size, struct interface *ifp);
 
 int pim_hello_send(struct interface *ifp, uint16_t holdtime);
 #endif /* PIM_PIM_H */