summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormobash-rasool <mobash.rasool@gmail.com>2022-05-11 10:04:18 +0530
committerGitHub <noreply@github.com>2022-05-11 10:04:18 +0530
commitdaa97042a2720ed46a1c1817d58cd7a9d08b333e (patch)
tree0fc037e522f4920dfa2be5697a1a195a0358543c
parent00358e444ee893778f7f21b189c65ed4de263d15 (diff)
parent993e3d8e131ab729f86bfd01f031093dc4827d87 (diff)
Merge pull request #11151 from opensourcerouting/pim-various-20220506
pimd, pim6d: fix various smaller issues
-rw-r--r--include/linux/mroute6.h3
-rw-r--r--pimd/pim6_cmd.c1
-rw-r--r--pimd/pim6_mroute_msg.c9
-rw-r--r--pimd/pim6_stubs.c1
-rw-r--r--pimd/pim_assert.c1
-rw-r--r--pimd/pim_cmd_common.c1
-rw-r--r--pimd/pim_cmd_common.h6
-rw-r--r--pimd/pim_hello.c1
-rw-r--r--pimd/pim_iface.h1
-rw-r--r--pimd/pim_ifchannel.c1
-rw-r--r--pimd/pim_igmp.c1
-rw-r--r--pimd/pim_igmp_mtrace.c1
-rw-r--r--pimd/pim_igmpv2.c1
-rw-r--r--pimd/pim_igmpv3.c1
-rw-r--r--pimd/pim_instance.c1
-rw-r--r--pimd/pim_join.c1
-rw-r--r--pimd/pim_jp_agg.c1
-rw-r--r--pimd/pim_jp_agg.h2
-rw-r--r--pimd/pim_macro.c1
-rw-r--r--pimd/pim_mroute.c12
-rw-r--r--pimd/pim_mroute.h7
-rw-r--r--pimd/pim_mroute_msg.c9
-rw-r--r--pimd/pim_msdp.c1
-rw-r--r--pimd/pim_msdp_packet.c1
-rw-r--r--pimd/pim_msdp_socket.c1
-rw-r--r--pimd/pim_msg.c1
-rw-r--r--pimd/pim_neighbor.c1
-rw-r--r--pimd/pim_nht.c1
-rw-r--r--pimd/pim_pim.c1
-rw-r--r--pimd/pim_rp.c1
-rw-r--r--pimd/pim_rpf.c1
-rw-r--r--pimd/pim_rpf.h2
-rw-r--r--pimd/pim_sock.c1
-rw-r--r--pimd/pim_sock.h2
-rw-r--r--pimd/pim_ssm.c1
-rw-r--r--pimd/pim_ssm.h2
-rw-r--r--pimd/pim_ssmpingd.c1
-rw-r--r--pimd/pim_static.c1
-rw-r--r--pimd/pim_static.h1
-rw-r--r--pimd/pim_tib.c1
-rw-r--r--pimd/pim_tlv.c1
-rw-r--r--pimd/pim_vty.h2
-rw-r--r--pimd/pim_vxlan.h2
-rw-r--r--pimd/pim_zlookup.c1
-rw-r--r--pimd/pim_zlookup.h2
-rw-r--r--pimd/pim_zpthread.c1
-rw-r--r--pimd/pimd.h1
47 files changed, 78 insertions, 16 deletions
diff --git a/include/linux/mroute6.h b/include/linux/mroute6.h
index 1fb90ec021..8c0640671a 100644
--- a/include/linux/mroute6.h
+++ b/include/linux/mroute6.h
@@ -63,7 +63,8 @@ typedef uint32_t if_mask;
#define NIFBITS (sizeof(if_mask) * 8) /* bits per mask */
typedef struct if_set {
- if_mask ifs_bits[__KERNEL_DIV_ROUND_UP(IF_SETSIZE, NIFBITS)];
+ /* __KERNEL_DIV_ROUND_UP() */
+ if_mask ifs_bits[(IF_SETSIZE + NIFBITS - 1) / NIFBITS];
} if_set;
#define IF_SET(n, p) ((p)->ifs_bits[(n)/NIFBITS] |= (1 << ((n) % NIFBITS)))
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c
index 289772260c..6eeb778da9 100644
--- a/pimd/pim6_cmd.c
+++ b/pimd/pim6_cmd.c
@@ -40,6 +40,7 @@
#include "pim_nb.h"
#include "pim_addr.h"
#include "pim_nht.h"
+#include "pim_bsm.h"
#ifndef VTYSH_EXTRACT_PL
diff --git a/pimd/pim6_mroute_msg.c b/pimd/pim6_mroute_msg.c
index 37d67ad048..0b4b31fefa 100644
--- a/pimd/pim6_mroute_msg.c
+++ b/pimd/pim6_mroute_msg.c
@@ -29,6 +29,7 @@
#include "lib/network.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_mroute.h"
#include "pim_oil.h"
#include "pim_str.h"
@@ -167,10 +168,12 @@ int pim_mroute_msg(struct pim_instance *pim, const char *buf,
msg);
case MRT6MSG_WHOLEPKT:
return pim_mroute_msg_wholepkt(pim->mroute_socket, ifp,
- (const char *)msg);
+ (const char *)msg,
+ buf_size);
case MRT6MSG_WRMIFWHOLE:
- return pim_mroute_msg_wrvifwhole(
- pim->mroute_socket, ifp, (const char *)msg);
+ return pim_mroute_msg_wrvifwhole(pim->mroute_socket,
+ ifp, (const char *)msg,
+ buf_size);
default:
break;
}
diff --git a/pimd/pim6_stubs.c b/pimd/pim6_stubs.c
index f799f04f33..8213b9e97f 100644
--- a/pimd/pim6_stubs.c
+++ b/pimd/pim6_stubs.c
@@ -25,6 +25,7 @@
#include "pim_pim.h"
#include "pim_register.h"
#include "pim_cmd.h"
+#include "pim_bsm.h"
/*
* NH lookup / NHT
diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index 7d924d6505..6191f96468 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -24,6 +24,7 @@
#include "if.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_str.h"
#include "pim_tlv.h"
#include "pim_msg.h"
diff --git a/pimd/pim_cmd_common.c b/pimd/pim_cmd_common.c
index d69b94ab12..cb98638107 100644
--- a/pimd/pim_cmd_common.c
+++ b/pimd/pim_cmd_common.c
@@ -34,6 +34,7 @@
#include "lib/linklist.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_vty.h"
#include "lib/northbound_cli.h"
#include "pim_errors.h"
diff --git a/pimd/pim_cmd_common.h b/pimd/pim_cmd_common.h
index 8753d1444e..206a2248f8 100644
--- a/pimd/pim_cmd_common.h
+++ b/pimd/pim_cmd_common.h
@@ -20,6 +20,12 @@
#ifndef PIM_CMD_COMMON_H
#define PIM_CMD_COMMON_H
+struct pim_upstream;
+struct pim_instance;
+
+/* duplicated from pim_instance.h - needed to avoid dependency mess */
+struct pim_instance *pim_get_pim_instance(vrf_id_t vrf_id);
+
const char *pim_cli_get_vrf_name(struct vty *vty);
int pim_process_join_prune_cmd(struct vty *vty, const char *jpi_str);
int pim_process_no_join_prune_cmd(struct vty *vty);
diff --git a/pimd/pim_hello.c b/pimd/pim_hello.c
index fe4f10aa6a..a2f68acc78 100644
--- a/pimd/pim_hello.c
+++ b/pimd/pim_hello.c
@@ -23,6 +23,7 @@
#include "if.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_pim.h"
#include "pim_str.h"
#include "pim_tlv.h"
diff --git a/pimd/pim_iface.h b/pimd/pim_iface.h
index 3535db70a8..45aecdd349 100644
--- a/pimd/pim_iface.h
+++ b/pimd/pim_iface.h
@@ -30,7 +30,6 @@
#include "pim_igmp.h"
#include "pim_upstream.h"
-#include "pim_instance.h"
#include "bfd.h"
#include "pim_str.h"
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index 40aaf1877c..e2d2ab97c9 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -29,6 +29,7 @@
#include "prefix.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_str.h"
#include "pim_iface.h"
#include "pim_ifchannel.h"
diff --git a/pimd/pim_igmp.c b/pimd/pim_igmp.c
index 0dce8faa90..749e259a7e 100644
--- a/pimd/pim_igmp.c
+++ b/pimd/pim_igmp.c
@@ -27,6 +27,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_igmp.h"
#include "pim_igmpv2.h"
#include "pim_igmpv3.h"
diff --git a/pimd/pim_igmp_mtrace.c b/pimd/pim_igmp_mtrace.c
index 9148d1050a..f6c23c8e89 100644
--- a/pimd/pim_igmp_mtrace.c
+++ b/pimd/pim_igmp_mtrace.c
@@ -22,6 +22,7 @@
#include <zebra.h>
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_util.h"
#include "pim_sock.h"
#include "pim_rp.h"
diff --git a/pimd/pim_igmpv2.c b/pimd/pim_igmpv2.c
index a949d2b126..8d0925cb56 100644
--- a/pimd/pim_igmpv2.c
+++ b/pimd/pim_igmpv2.c
@@ -21,6 +21,7 @@
#include "zebra.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_igmp.h"
#include "pim_igmpv2.h"
#include "pim_igmpv3.h"
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index 5d46383a8e..6ba48d6488 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -24,6 +24,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_iface.h"
#include "pim_igmp.h"
#include "pim_igmpv3.h"
diff --git a/pimd/pim_instance.c b/pimd/pim_instance.c
index 14f984508d..66e640e3b5 100644
--- a/pimd/pim_instance.c
+++ b/pimd/pim_instance.c
@@ -25,6 +25,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_ssm.h"
#include "pim_rpf.h"
#include "pim_rp.h"
diff --git a/pimd/pim_join.c b/pimd/pim_join.c
index 88078dd366..58de2c4a86 100644
--- a/pimd/pim_join.c
+++ b/pimd/pim_join.c
@@ -28,6 +28,7 @@
#include "plist.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_str.h"
#include "pim_tlv.h"
#include "pim_msg.h"
diff --git a/pimd/pim_jp_agg.c b/pimd/pim_jp_agg.c
index 7cbd0304ae..16774a03f5 100644
--- a/pimd/pim_jp_agg.c
+++ b/pimd/pim_jp_agg.c
@@ -25,6 +25,7 @@
#include "if.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_msg.h"
#include "pim_jp_agg.h"
#include "pim_join.h"
diff --git a/pimd/pim_jp_agg.h b/pimd/pim_jp_agg.h
index 506bf2d5ac..ee1ca6ac70 100644
--- a/pimd/pim_jp_agg.h
+++ b/pimd/pim_jp_agg.h
@@ -20,6 +20,8 @@
#ifndef __PIM_JP_AGG_H__
#define __PIM_JP_AGG_H__
+#include "pim_rpf.h"
+
struct pim_jp_sources {
struct pim_upstream *up;
int is_join;
diff --git a/pimd/pim_macro.c b/pimd/pim_macro.c
index 0896c52a75..e4d463b70a 100644
--- a/pimd/pim_macro.c
+++ b/pimd/pim_macro.c
@@ -25,6 +25,7 @@
#include "plist.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_macro.h"
#include "pim_iface.h"
#include "pim_ifchannel.h"
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 5f951b4dfc..1978afa7c0 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -137,7 +137,8 @@ int pim_mroute_msg_nocache(int fd, struct interface *ifp, const kernmsg *msg)
return 0;
}
-int pim_mroute_msg_wholepkt(int fd, struct interface *ifp, const char *buf)
+int pim_mroute_msg_wholepkt(int fd, struct interface *ifp, const char *buf,
+ size_t len)
{
struct pim_interface *pim_ifp;
pim_sgaddr sg;
@@ -229,7 +230,7 @@ int pim_mroute_msg_wholepkt(int fd, struct interface *ifp, const char *buf)
}
pim_register_send((uint8_t *)buf + sizeof(ipv_hdr),
- ntohs(IPV_LEN(ip_hdr)) - sizeof(ipv_hdr),
+ len - sizeof(ipv_hdr),
pim_ifp->primary_address, rpg, 0, up);
}
return 0;
@@ -336,7 +337,8 @@ int pim_mroute_msg_wrongvif(int fd, struct interface *ifp, const kernmsg *msg)
return 0;
}
-int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const char *buf)
+int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const char *buf,
+ size_t len)
{
const ipv_hdr *ip_hdr = (const ipv_hdr *)buf;
struct pim_interface *pim_ifp;
@@ -463,7 +465,7 @@ int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const char *buf)
pim_upstream_keep_alive_timer_start(
up, pim_ifp->pim->keep_alive_time);
pim_upstream_inherited_olist(pim_ifp->pim, up);
- pim_mroute_msg_wholepkt(fd, ifp, buf);
+ pim_mroute_msg_wholepkt(fd, ifp, buf, len);
}
return 0;
}
@@ -490,7 +492,7 @@ int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const char *buf)
pim_upstream_mroute_add(up->channel_oil, __func__);
// Send the packet to the RP
- pim_mroute_msg_wholepkt(fd, ifp, buf);
+ pim_mroute_msg_wholepkt(fd, ifp, buf, len);
} else {
up = pim_upstream_add(pim_ifp->pim, &sg, ifp,
PIM_UPSTREAM_FLAG_MASK_SRC_NOCACHE,
diff --git a/pimd/pim_mroute.h b/pimd/pim_mroute.h
index 35ba60bf35..712c916994 100644
--- a/pimd/pim_mroute.h
+++ b/pimd/pim_mroute.h
@@ -136,6 +136,7 @@ typedef struct sioc_sg_req6 pim_sioc_sg_req;
*/
struct channel_oil;
+struct pim_instance;
int pim_mroute_socket_enable(struct pim_instance *pim);
int pim_mroute_socket_disable(struct pim_instance *pim);
@@ -158,8 +159,10 @@ bool pim_mroute_allow_iif_in_oil(struct channel_oil *c_oil,
int pim_mroute_msg(struct pim_instance *pim, const char *buf, size_t buf_size,
ifindex_t ifindex);
int pim_mroute_msg_nocache(int fd, struct interface *ifp, const kernmsg *msg);
-int pim_mroute_msg_wholepkt(int fd, struct interface *ifp, const char *buf);
+int pim_mroute_msg_wholepkt(int fd, struct interface *ifp, const char *buf,
+ size_t len);
int pim_mroute_msg_wrongvif(int fd, struct interface *ifp, const kernmsg *msg);
-int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const char *buf);
+int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const char *buf,
+ size_t len);
int pim_mroute_set(struct pim_instance *pim, int enable);
#endif /* PIM_MROUTE_H */
diff --git a/pimd/pim_mroute_msg.c b/pimd/pim_mroute_msg.c
index 7d80488c68..ef12ec7a49 100644
--- a/pimd/pim_mroute_msg.c
+++ b/pimd/pim_mroute_msg.c
@@ -29,6 +29,7 @@
#include "lib/network.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_mroute.h"
#include "pim_oil.h"
#include "pim_str.h"
@@ -226,10 +227,12 @@ int pim_mroute_msg(struct pim_instance *pim, const char *buf,
msg);
case IGMPMSG_WHOLEPKT:
return pim_mroute_msg_wholepkt(pim->mroute_socket, ifp,
- (const char *)msg);
+ (const char *)msg,
+ buf_size);
case IGMPMSG_WRVIFWHOLE:
- return pim_mroute_msg_wrvifwhole(
- pim->mroute_socket, ifp, (const char *)msg);
+ return pim_mroute_msg_wrvifwhole(pim->mroute_socket,
+ ifp, (const char *)msg,
+ buf_size);
default:
break;
}
diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c
index 10e515cb56..0711a63f63 100644
--- a/pimd/pim_msdp.c
+++ b/pimd/pim_msdp.c
@@ -32,6 +32,7 @@
#include "pimd.h"
#include "pim_memory.h"
+#include "pim_instance.h"
#include "pim_iface.h"
#include "pim_rp.h"
#include "pim_str.h"
diff --git a/pimd/pim_msdp_packet.c b/pimd/pim_msdp_packet.c
index 4adaca4e78..1152dd6f67 100644
--- a/pimd/pim_msdp_packet.c
+++ b/pimd/pim_msdp_packet.c
@@ -26,6 +26,7 @@
#include <lib/lib_errors.h>
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_str.h"
#include "pim_errors.h"
diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c
index facb771c25..819a747122 100644
--- a/pimd/pim_msdp_socket.c
+++ b/pimd/pim_msdp_socket.c
@@ -29,6 +29,7 @@
#include <lib/lib_errors.h>
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_sock.h"
#include "pim_errors.h"
diff --git a/pimd/pim_msg.c b/pimd/pim_msg.c
index 1eda51417f..b67849fd8f 100644
--- a/pimd/pim_msg.c
+++ b/pimd/pim_msg.c
@@ -26,6 +26,7 @@
#include "plist.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_vty.h"
#include "pim_pim.h"
#include "pim_msg.h"
diff --git a/pimd/pim_neighbor.c b/pimd/pim_neighbor.c
index 84b532d345..cf28052de4 100644
--- a/pimd/pim_neighbor.c
+++ b/pimd/pim_neighbor.c
@@ -28,6 +28,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_neighbor.h"
#include "pim_time.h"
#include "pim_str.h"
diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c
index c1242e1509..ac46605dbd 100644
--- a/pimd/pim_nht.c
+++ b/pimd/pim_nht.c
@@ -30,6 +30,7 @@
#include "pimd.h"
#include "pimd/pim_nht.h"
+#include "pim_instance.h"
#include "log.h"
#include "pim_time.h"
#include "pim_oil.h"
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index 1baa5c38ca..352f95c473 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -26,6 +26,7 @@
#include "network.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_pim.h"
#include "pim_time.h"
#include "pim_iface.h"
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index 730870fb33..fdf4b99c32 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -34,6 +34,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_vty.h"
#include "pim_str.h"
#include "pim_iface.h"
diff --git a/pimd/pim_rpf.c b/pimd/pim_rpf.c
index 4e812ae3f0..c470bcd4d7 100644
--- a/pimd/pim_rpf.c
+++ b/pimd/pim_rpf.c
@@ -27,6 +27,7 @@
#include "jhash.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_rpf.h"
#include "pim_pim.h"
#include "pim_str.h"
diff --git a/pimd/pim_rpf.h b/pimd/pim_rpf.h
index 40cd066bd1..a2289b4cc5 100644
--- a/pimd/pim_rpf.h
+++ b/pimd/pim_rpf.h
@@ -23,6 +23,8 @@
#include <zebra.h>
#include "pim_str.h"
+struct pim_instance;
+
/*
RFC 4601:
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c
index 8619cc3f83..d41bc3f436 100644
--- a/pimd/pim_sock.c
+++ b/pimd/pim_sock.c
@@ -37,6 +37,7 @@
#include "network.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_mroute.h"
#include "pim_iface.h"
#include "pim_sock.h"
diff --git a/pimd/pim_sock.h b/pimd/pim_sock.h
index 2e9c043e84..ea9f7009bc 100644
--- a/pimd/pim_sock.h
+++ b/pimd/pim_sock.h
@@ -35,6 +35,8 @@
#define PIM_SOCK_ERR_NAME (-10) /* Socket name (getsockname) */
#define PIM_SOCK_ERR_BIND (-11) /* Can't bind to interface */
+struct pim_instance;
+
int pim_socket_bind(int fd, struct interface *ifp);
void pim_socket_ip_hdr(int fd);
int pim_socket_raw(int protocol);
diff --git a/pimd/pim_ssm.c b/pimd/pim_ssm.c
index 62d6eb8308..1ff60f9b64 100644
--- a/pimd/pim_ssm.c
+++ b/pimd/pim_ssm.c
@@ -27,6 +27,7 @@
#include <lib/lib_errors.h>
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_ssm.h"
#include "pim_igmp.h"
diff --git a/pimd/pim_ssm.h b/pimd/pim_ssm.h
index c6b6978218..adc0cfdea0 100644
--- a/pimd/pim_ssm.h
+++ b/pimd/pim_ssm.h
@@ -21,6 +21,8 @@
#define PIM_SSM_STANDARD_RANGE "232.0.0.0/8"
+struct pim_instance;
+
/* SSM error codes */
enum pim_ssm_err {
PIM_SSM_ERR_NONE = 0,
diff --git a/pimd/pim_ssmpingd.c b/pimd/pim_ssmpingd.c
index d86be85bd8..c8d40371e7 100644
--- a/pimd/pim_ssmpingd.c
+++ b/pimd/pim_ssmpingd.c
@@ -27,6 +27,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_ssmpingd.h"
#include "pim_time.h"
#include "pim_sock.h"
diff --git a/pimd/pim_static.c b/pimd/pim_static.c
index d3b31771a0..581b855f92 100644
--- a/pimd/pim_static.c
+++ b/pimd/pim_static.c
@@ -26,6 +26,7 @@
#include "linklist.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_oil.h"
#include "pim_static.h"
#include "pim_time.h"
diff --git a/pimd/pim_static.h b/pimd/pim_static.h
index 56bfbd4e4f..dcbc790d7a 100644
--- a/pimd/pim_static.h
+++ b/pimd/pim_static.h
@@ -22,6 +22,7 @@
#include <zebra.h>
#include "pim_mroute.h"
+#include "pim_oil.h"
#include "if.h"
struct static_route {
diff --git a/pimd/pim_tib.c b/pimd/pim_tib.c
index 80e75f1b09..a69177a6e5 100644
--- a/pimd/pim_tib.c
+++ b/pimd/pim_tib.c
@@ -22,6 +22,7 @@
#include "pim_tib.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_iface.h"
#include "pim_upstream.h"
#include "pim_oil.h"
diff --git a/pimd/pim_tlv.c b/pimd/pim_tlv.c
index 028514659b..90bf799093 100644
--- a/pimd/pim_tlv.c
+++ b/pimd/pim_tlv.c
@@ -24,6 +24,7 @@
#include "if.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_int.h"
#include "pim_tlv.h"
#include "pim_str.h"
diff --git a/pimd/pim_vty.h b/pimd/pim_vty.h
index c192ba3bbd..0f11d6ec4a 100644
--- a/pimd/pim_vty.h
+++ b/pimd/pim_vty.h
@@ -22,6 +22,8 @@
#include "vty.h"
+struct pim_instance;
+
int pim_debug_config_write(struct vty *vty);
int pim_global_config_write_worker(struct pim_instance *pim, struct vty *vty);
int pim_interface_config_write(struct vty *vty);
diff --git a/pimd/pim_vxlan.h b/pimd/pim_vxlan.h
index 96882918ac..1a7e9dcf1b 100644
--- a/pimd/pim_vxlan.h
+++ b/pimd/pim_vxlan.h
@@ -22,6 +22,8 @@
#ifndef PIM_VXLAN_H
#define PIM_VXLAN_H
+#include "pim_instance.h"
+
/* global timer used for miscellaneous staggered processing */
#define PIM_VXLAN_WORK_TIME 1
/* number of SG entries processed at one shot */
diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c
index a9553089c9..a3978bd0d2 100644
--- a/pimd/pim_zlookup.c
+++ b/pimd/pim_zlookup.c
@@ -30,6 +30,7 @@
#include "lib_errors.h"
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_iface.h"
#include "pim_neighbor.h"
#include "pim_pim.h"
diff --git a/pimd/pim_zlookup.h b/pimd/pim_zlookup.h
index 4ea865a7e7..85d18d1d68 100644
--- a/pimd/pim_zlookup.h
+++ b/pimd/pim_zlookup.h
@@ -26,6 +26,8 @@
#define PIM_NEXTHOP_LOOKUP_MAX (3) /* max. recursive route lookup */
+struct channel_oil;
+
struct pim_zlookup_nexthop {
vrf_id_t vrf_id;
pim_addr nexthop_addr;
diff --git a/pimd/pim_zpthread.c b/pimd/pim_zpthread.c
index a342931085..e6fb3b3a17 100644
--- a/pimd/pim_zpthread.c
+++ b/pimd/pim_zpthread.c
@@ -22,6 +22,7 @@
#include <lib/lib_errors.h>
#include "pimd.h"
+#include "pim_instance.h"
#include "pim_mlag.h"
#include "pim_zebra.h"
diff --git a/pimd/pimd.h b/pimd/pimd.h
index aeb4859952..9ffa075d2a 100644
--- a/pimd/pimd.h
+++ b/pimd/pimd.h
@@ -28,7 +28,6 @@
#include "plist.h"
#include "pim_addr.h"
-#include "pim_instance.h"
#include "pim_str.h"
#include "pim_memory.h"
#include "pim_assert.h"