pimd: Disable sending of control packets on passive interface

Signed-off-by: sarita patra <saritap@vmware.com>
This commit is contained in:
sarita patra 2022-04-04 04:37:56 -07:00
parent 78039cb25d
commit 03c106bf30
2 changed files with 15 additions and 4 deletions

View 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_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; socklen_t tolen;
unsigned char buffer[10000]; unsigned char buffer[10000];
unsigned char *msg_start; unsigned char *msg_start;
uint8_t ttl; uint8_t ttl;
struct pim_msg_header *header; 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); 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) if (PIM_DEBUG_PIM_PACKETS)
zlog_debug("%s: to %pPA on %s: msg_size=%d checksum=%x", 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); header->checksum);
if (PIM_DEBUG_PIM_PACKETDUMP_SEND) { 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, pim_msg_send_frame(fd, (char *)buffer, sendlen, (struct sockaddr *)&to,
tolen, ifname); tolen, ifp->name);
return 0; return 0;
} }

View File

@ -58,7 +58,7 @@ int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len,
pim_sgaddr sg); pim_sgaddr sg);
int pim_msg_send(int fd, pim_addr src, pim_addr dst, uint8_t *pim_msg, 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); int pim_hello_send(struct interface *ifp, uint16_t holdtime);
#endif /* PIM_PIM_H */ #endif /* PIM_PIM_H */