diff options
| -rw-r--r-- | pimd/pim_cmd.c | 14 | ||||
| -rw-r--r-- | pimd/pim_mroute.c | 44 | ||||
| -rw-r--r-- | pimd/pimd.c | 8 | ||||
| -rw-r--r-- | pimd/pimd.h | 13 |
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 |
