summaryrefslogtreecommitdiff
path: root/pimd/pim_pim.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_pim.c')
-rw-r--r--pimd/pim_pim.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index e9d44b9c3c..12b28ed9af 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -149,6 +149,7 @@ int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len)
uint16_t checksum; /* computed checksum */
struct pim_neighbor *neigh;
struct pim_msg_header *header;
+ bool no_fwd;
if (len < sizeof(*ip_hdr)) {
if (PIM_DEBUG_PIM_PACKETS)
@@ -186,6 +187,7 @@ int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len)
/* for computing checksum */
header->checksum = 0;
+ no_fwd = header->Nbit;
if (header->type == PIM_MSG_TYPE_REGISTER) {
/* First 8 byte header checksum */
@@ -274,6 +276,10 @@ int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len)
pim_msg + PIM_MSG_HEADER_LEN,
pim_msg_len - PIM_MSG_HEADER_LEN);
break;
+ case PIM_MSG_TYPE_BOOTSTRAP:
+ return pim_bsm_process(ifp, ip_hdr, pim_msg, pim_msg_len,
+ no_fwd);
+ break;
default:
if (PIM_DEBUG_PIM_PACKETS) {