summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_cmd.c14
-rw-r--r--pimd/pim_mroute.c44
-rw-r--r--pimd/pimd.c8
-rw-r--r--pimd/pimd.h13
4 files changed, 38 insertions, 41 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index e32643f66f..ff0167de30 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -2555,17 +2555,17 @@ static void show_scan_oil_stats(struct vty *vty, time_t now)
pim_time_uptime_begin(uptime_scan_oil, sizeof(uptime_scan_oil), now,
qpim_scan_oil_last);
pim_time_uptime_begin(uptime_mroute_add, sizeof(uptime_mroute_add), now,
- qpim_mroute_add_last);
+ pimg->mroute_add_last);
pim_time_uptime_begin(uptime_mroute_del, sizeof(uptime_mroute_del), now,
- qpim_mroute_del_last);
+ pimg->mroute_del_last);
vty_out(vty,
"Scan OIL - Last: %s Events: %lld\n"
"MFC Add - Last: %s Events: %lld\n"
"MFC Del - Last: %s Events: %lld\n",
uptime_scan_oil, (long long)qpim_scan_oil_events,
- uptime_mroute_add, (long long)qpim_mroute_add_events,
- uptime_mroute_del, (long long)qpim_mroute_del_events);
+ uptime_mroute_add, (long long)pimg->mroute_add_events,
+ uptime_mroute_del, (long long)pimg->mroute_del_events);
}
static void pim_show_rpf(struct vty *vty, u_char uj)
@@ -3659,7 +3659,7 @@ static void show_multicast_interfaces(struct vty *vty)
memset(&vreq, 0, sizeof(vreq));
vreq.vifi = pim_ifp->mroute_vif_index;
- if (ioctl(qpim_mroute_socket_fd, SIOCGETVIFCNT, &vreq)) {
+ if (ioctl(pimg->mroute_socket, SIOCGETVIFCNT, &vreq)) {
zlog_warn(
"ioctl(SIOCGETVIFCNT=%lu) failure for interface %s vif_index=%d: errno=%d: %s\n",
(unsigned long)SIOCGETVIFCNT, ifp->name,
@@ -3688,10 +3688,10 @@ DEFUN (show_ip_multicast,
char uptime[10];
- vty_out(vty, "Mroute socket descriptor: %d\n", qpim_mroute_socket_fd);
+ vty_out(vty, "Mroute socket descriptor: %d\n", pimg->mroute_socket);
pim_time_uptime(uptime, sizeof(uptime),
- now - qpim_mroute_socket_creation);
+ now - pimg->mroute_socket_creation);
vty_out(vty, "Mroute socket uptime: %s\n", uptime);
vty_out(vty, "\n");
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index a3c1100ba7..ad641c2d9c 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -655,7 +655,7 @@ done:
static void mroute_read_on()
{
- thread_add_read(master, mroute_read, 0, qpim_mroute_socket_fd,
+ thread_add_read(master, mroute_read, 0, pimg->mroute_socket,
&qpim_mroute_socket_reader);
}
@@ -692,9 +692,9 @@ int pim_mroute_socket_enable()
return -3;
}
- qpim_mroute_socket_fd = fd;
+ pimg->mroute_socket = fd;
+ pimg->mroute_socket_creation = pim_time_monotonic_sec();
- qpim_mroute_socket_creation = pim_time_monotonic_sec();
mroute_read_on();
return 0;
@@ -702,21 +702,21 @@ int pim_mroute_socket_enable()
int pim_mroute_socket_disable()
{
- if (pim_mroute_set(qpim_mroute_socket_fd, 0)) {
+ if (pim_mroute_set(pimg->mroute_socket, 0)) {
zlog_warn(
"Could not disable mroute on socket fd=%d: errno=%d: %s",
- qpim_mroute_socket_fd, errno, safe_strerror(errno));
+ pimg->mroute_socket, errno, safe_strerror(errno));
return -2;
}
- if (close(qpim_mroute_socket_fd)) {
+ if (close(pimg->mroute_socket)) {
zlog_warn("Failure closing mroute socket: fd=%d errno=%d: %s",
- qpim_mroute_socket_fd, errno, safe_strerror(errno));
+ pimg->mroute_socket, errno, safe_strerror(errno));
return -3;
}
mroute_read_off();
- qpim_mroute_socket_fd = -1;
+ pimg->mroute_socket = -1;
return 0;
}
@@ -757,7 +757,7 @@ int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
}
#endif
- err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_ADD_VIF,
+ err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_ADD_VIF,
(void *)&vc, sizeof(vc));
if (err) {
char ifaddr_str[INET_ADDRSTRLEN];
@@ -767,7 +767,7 @@ int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
zlog_warn(
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_ADD_VIF,vif_index=%d,ifaddr=%s,flag=%d): errno=%d: %s",
- __FILE__, __PRETTY_FUNCTION__, qpim_mroute_socket_fd,
+ __FILE__, __PRETTY_FUNCTION__, pimg->mroute_socket,
ifp->ifindex, ifaddr_str, flags, errno,
safe_strerror(errno));
return -2;
@@ -791,12 +791,12 @@ int pim_mroute_del_vif(int vif_index)
memset(&vc, 0, sizeof(vc));
vc.vifc_vifi = vif_index;
- err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_DEL_VIF,
+ err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_DEL_VIF,
(void *)&vc, sizeof(vc));
if (err) {
zlog_warn(
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_DEL_VIF,vif_index=%d): errno=%d: %s",
- __FILE__, __PRETTY_FUNCTION__, qpim_mroute_socket_fd,
+ __FILE__, __PRETTY_FUNCTION__, pimg->mroute_socket,
vif_index, errno, safe_strerror(errno));
return -2;
}
@@ -810,8 +810,8 @@ int pim_mroute_add(struct channel_oil *c_oil, const char *name)
int orig = 0;
int orig_iif_vif = 0;
- qpim_mroute_add_last = pim_time_monotonic_sec();
- ++qpim_mroute_add_events;
+ pimg->mroute_add_last = pim_time_monotonic_sec();
+ ++pimg->mroute_add_events;
/* Do not install route if incoming interface is undefined. */
if (c_oil->oil.mfcc_parent >= MAXVIFS) {
@@ -846,14 +846,14 @@ int pim_mroute_add(struct channel_oil *c_oil, const char *name)
orig_iif_vif = c_oil->oil.mfcc_parent;
c_oil->oil.mfcc_parent = 0;
}
- err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_ADD_MFC,
+ err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_ADD_MFC,
&c_oil->oil, sizeof(c_oil->oil));
if (!err && !c_oil->installed
&& c_oil->oil.mfcc_origin.s_addr != INADDR_ANY
&& orig_iif_vif != 0) {
c_oil->oil.mfcc_parent = orig_iif_vif;
- err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_ADD_MFC,
+ err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_ADD_MFC,
&c_oil->oil, sizeof(c_oil->oil));
}
@@ -863,7 +863,7 @@ int pim_mroute_add(struct channel_oil *c_oil, const char *name)
if (err) {
zlog_warn(
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_ADD_MFC): errno=%d: %s",
- __FILE__, __PRETTY_FUNCTION__, qpim_mroute_socket_fd,
+ __FILE__, __PRETTY_FUNCTION__, pimg->mroute_socket,
errno, safe_strerror(errno));
return -2;
}
@@ -882,8 +882,8 @@ int pim_mroute_del(struct channel_oil *c_oil, const char *name)
{
int err;
- qpim_mroute_del_last = pim_time_monotonic_sec();
- ++qpim_mroute_del_events;
+ pimg->mroute_del_last = pim_time_monotonic_sec();
+ ++pimg->mroute_del_events;
if (!c_oil->installed) {
if (PIM_DEBUG_MROUTE) {
@@ -897,14 +897,14 @@ int pim_mroute_del(struct channel_oil *c_oil, const char *name)
return -2;
}
- err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_DEL_MFC,
+ err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_DEL_MFC,
&c_oil->oil, sizeof(c_oil->oil));
if (err) {
if (PIM_DEBUG_MROUTE)
zlog_warn(
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_DEL_MFC): errno=%d: %s",
__FILE__, __PRETTY_FUNCTION__,
- qpim_mroute_socket_fd, errno,
+ pimg->mroute_socket, errno,
safe_strerror(errno));
return -2;
}
@@ -949,7 +949,7 @@ void pim_mroute_update_counters(struct channel_oil *c_oil)
sgreq.grp = c_oil->oil.mfcc_mcastgrp;
pim_zlookup_sg_statistics(c_oil);
- if (ioctl(qpim_mroute_socket_fd, SIOCGETSGCNT, &sgreq)) {
+ if (ioctl(pimg->mroute_socket, SIOCGETSGCNT, &sgreq)) {
if (PIM_DEBUG_MROUTE) {
struct prefix_sg sg;
diff --git a/pimd/pimd.c b/pimd/pimd.c
index 89b235bed1..0db82073af 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -52,8 +52,6 @@ const char *const PIM_ALL_IGMP_ROUTERS = MCAST_ALL_IGMP_ROUTERS;
struct thread_master *master = NULL;
uint32_t qpim_debugs = 0;
-int qpim_mroute_socket_fd = -1;
-int64_t qpim_mroute_socket_creation = 0; /* timestamp of creation */
int qpim_t_periodic =
PIM_DEFAULT_T_PERIODIC; /* Period between Join/Prune Messages */
struct pim_assert_metric qpim_infinite_assert_metric;
@@ -66,10 +64,6 @@ struct list *qpim_ssmpingd_list = NULL;
struct in_addr qpim_ssmpingd_group_addr;
int64_t qpim_scan_oil_events = 0;
int64_t qpim_scan_oil_last = 0;
-int64_t qpim_mroute_add_events = 0;
-int64_t qpim_mroute_add_last = 0;
-int64_t qpim_mroute_del_events = 0;
-int64_t qpim_mroute_del_last = 0;
struct list *qpim_static_route_list = NULL;
unsigned int qpim_keep_alive_time = PIM_KEEPALIVE_PERIOD;
signed int qpim_rp_keep_alive_time = 0;
@@ -114,6 +108,8 @@ static int pim_vrf_enable(struct vrf *vrf)
exit(1);
}
+ pimg->mroute_socket = -1;
+
pimg->send_v6_secondary = 1;
}
return 0;
diff --git a/pimd/pimd.h b/pimd/pimd.h
index 7934bce2d4..c2868105da 100644
--- a/pimd/pimd.h
+++ b/pimd/pimd.h
@@ -128,8 +128,6 @@ const char *const PIM_ALL_IGMP_ROUTERS;
extern struct thread_master *master;
extern struct zebra_privs_t pimd_privs;
uint32_t qpim_debugs;
-int qpim_mroute_socket_fd;
-int64_t qpim_mroute_socket_creation; /* timestamp of creation */
struct in_addr qpim_all_pim_routers_addr;
int qpim_t_periodic; /* Period between Join/Prune Messages */
struct pim_assert_metric qpim_infinite_assert_metric;
@@ -142,10 +140,6 @@ struct list *qpim_ssmpingd_list; /* list of struct ssmpingd_sock */
struct in_addr qpim_ssmpingd_group_addr;
int64_t qpim_scan_oil_events;
int64_t qpim_scan_oil_last;
-int64_t qpim_mroute_add_events;
-int64_t qpim_mroute_add_last;
-int64_t qpim_mroute_del_events;
-int64_t qpim_mroute_del_last;
int64_t qpim_nexthop_lookups;
struct list *qpim_static_route_list; /* list of routes added statically */
extern unsigned int qpim_keep_alive_time;
@@ -256,6 +250,13 @@ struct pim_instance {
void *ssm_info; /* per-vrf SSM configuration */
int send_v6_secondary;
+
+ int mroute_socket;
+ int64_t mroute_socket_creation;
+ int64_t mroute_add_events;
+ int64_t mroute_add_last;
+ int64_t mroute_del_events;
+ int64_t mroute_del_last;
};
extern struct pim_instance *pimg; // Pim Global Instance