summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_iface.c7
-rw-r--r--pimd/pim_iface.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index fae11b674a..1ffea6ab46 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -87,6 +87,7 @@ struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim)
pim_ifp->options = 0;
pim_ifp->mroute_vif_index = -1;
+ pim_ifp->pim_raw_fd = -1;
pim_ifp->igmp_default_robustness_variable = IGMP_DEFAULT_ROBUSTNESS_VARIABLE;
pim_ifp->igmp_default_query_interval = IGMP_GENERAL_QUERY_INTERVAL;
@@ -162,6 +163,12 @@ void pim_if_delete(struct interface *ifp)
pim_ifp = ifp->info;
zassert(pim_ifp);
+ if (pim_ifp->pim_raw_fd == -1)
+ {
+ close (pim_ifp->pim_raw_fd);
+ pim_ifp->pim_raw_fd = -1;
+ }
+
if (pim_ifp->igmp_join_list) {
pim_if_igmp_join_del_all(ifp);
}
diff --git a/pimd/pim_iface.h b/pimd/pim_iface.h
index 75b85c306a..7f3d6961fa 100644
--- a/pimd/pim_iface.h
+++ b/pimd/pim_iface.h
@@ -73,6 +73,7 @@ struct pim_interface {
struct list *igmp_join_list; /* list of struct igmp_join */
int pim_sock_fd; /* PIM socket file descriptor */
+ int pim_raw_fd; /* RP forwarding */
struct thread *t_pim_sock_read; /* thread for reading PIM socket */
int64_t pim_sock_creation; /* timestamp of PIM socket creation */