diff options
| author | sarita patra <saritap@vmware.com> | 2022-04-04 04:37:56 -0700 | 
|---|---|---|
| committer | sarita patra <saritap@vmware.com> | 2022-05-12 23:51:21 -0700 | 
| commit | 03c106bf3001c389611de9a8f3cb093a39c39a87 (patch) | |
| tree | 838ba236361c84958ae1ce72b41eaccd1eb5bc78 /pimd/pim_pim.c | |
| parent | 78039cb25dc25f4cb1c4cca4a729f2f099e4cf97 (diff) | |
pimd: Disable sending of control packets on passive interface
Signed-off-by: sarita patra <saritap@vmware.com>
Diffstat (limited to 'pimd/pim_pim.c')
| -rw-r--r-- | pimd/pim_pim.c | 17 | 
1 files changed, 14 insertions, 3 deletions
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c index 352f95c473..e9426c1c95 100644 --- a/pimd/pim_pim.c +++ b/pimd/pim_pim.c @@ -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;  }  | 
