summaryrefslogtreecommitdiff
path: root/pimd
diff options
context:
space:
mode:
Diffstat (limited to 'pimd')
-rw-r--r--pimd/.gitignore14
-rw-r--r--pimd/mtracebis.c4
-rw-r--r--pimd/mtracebis_netlink.c12
-rw-r--r--pimd/mtracebis_routeget.c4
-rw-r--r--pimd/pim_cmd.c165
-rw-r--r--pimd/pim_errors.c4
-rw-r--r--pimd/pim_errors.h4
-rw-r--r--pimd/pim_iface.c16
-rw-r--r--pimd/pim_iface.h5
-rw-r--r--pimd/pim_ifchannel.c3
-rw-r--r--pimd/pim_igmp.c4
-rw-r--r--pimd/pim_igmp_mtrace.c2
-rw-r--r--pimd/pim_igmp_stats.c4
-rw-r--r--pimd/pim_igmpv3.c2
-rw-r--r--pimd/pim_mroute.c26
-rw-r--r--pimd/pim_msdp.c2
-rw-r--r--pimd/pim_msdp_packet.c8
-rw-r--r--pimd/pim_msdp_socket.c43
-rw-r--r--pimd/pim_neighbor.c2
-rw-r--r--pimd/pim_pim.c8
-rw-r--r--pimd/pim_rp.c11
-rw-r--r--pimd/pim_rp.h2
-rw-r--r--pimd/pim_sock.c4
-rw-r--r--pimd/pim_ssm.c6
-rw-r--r--pimd/pim_ssmpingd.c4
-rw-r--r--pimd/pim_time.c8
-rw-r--r--pimd/pim_upstream.c11
-rw-r--r--pimd/pim_vty.c2
-rw-r--r--pimd/pim_zebra.c11
-rw-r--r--pimd/pim_zlookup.c30
-rw-r--r--pimd/pimd.c2
-rw-r--r--pimd/subdir.am3
32 files changed, 229 insertions, 197 deletions
diff --git a/pimd/.gitignore b/pimd/.gitignore
index 1f56cfaecd..b1780df758 100644
--- a/pimd/.gitignore
+++ b/pimd/.gitignore
@@ -1,17 +1,3 @@
-!Makefile
-Makefile.in
-libpim.a
pimd
mtracebis
test_igmpv3_join
-tags
-TAGS
-.deps
-*.o
-*.lo
-*.la
-*.libs
-.arch-inventory
-.arch-ids
-*~
-*.loT
diff --git a/pimd/mtracebis.c b/pimd/mtracebis.c
index c0d95aeed9..65c495eff0 100644
--- a/pimd/mtracebis.c
+++ b/pimd/mtracebis.c
@@ -17,6 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#ifdef __linux__
#include "pim_igmp_mtrace.h"
diff --git a/pimd/mtracebis_netlink.c b/pimd/mtracebis_netlink.c
index b4bf6bada3..47b5f7e52c 100644
--- a/pimd/mtracebis_netlink.c
+++ b/pimd/mtracebis_netlink.c
@@ -10,6 +10,10 @@
*
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#ifdef __linux__
#include <stdio.h>
@@ -239,7 +243,7 @@ int rtnl_dump_filter_l(struct rtnl_handle *rth,
break; /* process next filter */
}
if (h->nlmsg_type == NLMSG_ERROR) {
- struct nlmsgerr *err =
+ struct nlmsgerr *merr =
(struct nlmsgerr *)NLMSG_DATA(
h);
if (h->nlmsg_len
@@ -248,7 +252,7 @@ int rtnl_dump_filter_l(struct rtnl_handle *rth,
fprintf(stderr,
"ERROR truncated\n");
} else {
- errno = -err->error;
+ errno = -merr->error;
perror("RTNETLINK answers");
}
return -1;
@@ -375,12 +379,12 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
}
if (h->nlmsg_type == NLMSG_ERROR) {
- struct nlmsgerr *err =
+ struct nlmsgerr *merr =
(struct nlmsgerr *)NLMSG_DATA(h);
if (l < (int)sizeof(struct nlmsgerr)) {
fprintf(stderr, "ERROR truncated\n");
} else {
- errno = -err->error;
+ errno = -merr->error;
if (errno == 0) {
if (answer)
memcpy(answer, h,
diff --git a/pimd/mtracebis_routeget.c b/pimd/mtracebis_routeget.c
index 8c1cd8d963..8d974403ac 100644
--- a/pimd/mtracebis_routeget.c
+++ b/pimd/mtracebis_routeget.c
@@ -17,6 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#ifdef __linux__
#include <asm/types.h>
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 918eaf2fdb..26932eea20 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -432,7 +432,7 @@ static void pim_show_membership_helper(struct vty *vty,
json_object_object_add(json_iface, ch_grp_str, json_row);
}
static void pim_show_membership(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct pim_interface *pim_ifp;
struct pim_ifchannel *ch;
@@ -549,7 +549,7 @@ static void pim_print_ifp_flags(struct vty *vty, struct interface *ifp,
}
static void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct interface *ifp;
time_t now;
@@ -634,7 +634,7 @@ static void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty,
static void igmp_show_interfaces_single(struct pim_instance *pim,
struct vty *vty, const char *ifname,
- uint8_t uj)
+ bool uj)
{
struct igmp_sock *igmp;
struct interface *ifp;
@@ -894,7 +894,7 @@ static void igmp_show_interface_join(struct pim_instance *pim, struct vty *vty)
static void pim_show_interfaces_single(struct pim_instance *pim,
struct vty *vty, const char *ifname,
- uint8_t uj)
+ bool uj)
{
struct in_addr ifaddr;
struct interface *ifp;
@@ -1187,8 +1187,9 @@ static void pim_show_interfaces_single(struct pim_instance *pim,
vty_out(vty, "Designated Router\n");
vty_out(vty, "-----------------\n");
vty_out(vty, "Address : %s\n", dr_str);
- vty_out(vty, "Priority : %d\n",
- pim_ifp->pim_dr_priority);
+ vty_out(vty, "Priority : %d(%d)\n",
+ pim_ifp->pim_dr_priority,
+ pim_ifp->pim_dr_num_nondrpri_neighbors);
vty_out(vty, "Uptime : %s\n", dr_uptime);
vty_out(vty, "Elections : %d\n",
pim_ifp->pim_dr_election_count);
@@ -1295,7 +1296,7 @@ static void pim_show_interfaces_single(struct pim_instance *pim,
}
static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty,
- const char *ifname, uint8_t uj)
+ const char *ifname, bool uj)
{
struct interface *ifp;
struct igmp_stats rx_stats;
@@ -1365,7 +1366,7 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty,
}
static void pim_show_interfaces(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct interface *ifp;
struct listnode *upnode;
@@ -1458,7 +1459,7 @@ static void pim_show_interfaces(struct pim_instance *pim, struct vty *vty,
}
static void pim_show_interface_traffic(struct pim_instance *pim,
- struct vty *vty, uint8_t uj)
+ struct vty *vty, bool uj)
{
struct interface *ifp = NULL;
struct pim_interface *pim_ifp = NULL;
@@ -1538,7 +1539,7 @@ static void pim_show_interface_traffic(struct pim_instance *pim,
static void pim_show_interface_traffic_single(struct pim_instance *pim,
struct vty *vty,
- const char *ifname, uint8_t uj)
+ const char *ifname, bool uj)
{
struct interface *ifp = NULL;
struct pim_interface *pim_ifp = NULL;
@@ -1627,7 +1628,7 @@ static void pim_show_interface_traffic_single(struct pim_instance *pim,
static void pim_show_join_helper(struct vty *vty, struct pim_interface *pim_ifp,
struct pim_ifchannel *ch, json_object *json,
- time_t now, uint8_t uj)
+ time_t now, bool uj)
{
char ch_src_str[INET_ADDRSTRLEN];
char ch_grp_str[INET_ADDRSTRLEN];
@@ -1690,7 +1691,7 @@ static void pim_show_join_helper(struct vty *vty, struct pim_interface *pim_ifp,
}
}
-static void pim_show_join(struct pim_instance *pim, struct vty *vty, uint8_t uj)
+static void pim_show_join(struct pim_instance *pim, struct vty *vty, bool uj)
{
struct pim_interface *pim_ifp;
struct pim_ifchannel *ch;
@@ -1724,7 +1725,7 @@ static void pim_show_join(struct pim_instance *pim, struct vty *vty, uint8_t uj)
}
static void pim_show_neighbors_single(struct pim_instance *pim, struct vty *vty,
- const char *neighbor, uint8_t uj)
+ const char *neighbor, bool uj)
{
struct listnode *neighnode;
struct interface *ifp;
@@ -1933,8 +1934,7 @@ static void pim_show_neighbors_single(struct pim_instance *pim, struct vty *vty,
}
static void pim_show_state(struct pim_instance *pim, struct vty *vty,
- const char *src_or_group, const char *group,
- uint8_t uj)
+ const char *src_or_group, const char *group, bool uj)
{
struct channel_oil *c_oil;
struct listnode *node;
@@ -2135,7 +2135,7 @@ static void pim_show_state(struct pim_instance *pim, struct vty *vty,
}
static void pim_show_neighbors(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct listnode *neighnode;
struct interface *ifp;
@@ -2331,7 +2331,7 @@ static const char *pim_reg_state2brief_str(enum pim_reg_state reg_state,
}
static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct listnode *upnode;
struct pim_upstream *up;
@@ -2476,7 +2476,7 @@ static void pim_show_join_desired_helper(struct pim_instance *pim,
struct vty *vty,
struct pim_interface *pim_ifp,
struct pim_ifchannel *ch,
- json_object *json, uint8_t uj)
+ json_object *json, bool uj)
{
struct pim_upstream *up = ch->upstream;
json_object *json_group = NULL;
@@ -2532,7 +2532,7 @@ static void pim_show_join_desired_helper(struct pim_instance *pim,
}
static void pim_show_join_desired(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct pim_interface *pim_ifp;
struct pim_ifchannel *ch;
@@ -2568,7 +2568,7 @@ static void pim_show_join_desired(struct pim_instance *pim, struct vty *vty,
}
static void pim_show_upstream_rpf(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct listnode *upnode;
struct pim_upstream *up;
@@ -2701,7 +2701,7 @@ static void show_scan_oil_stats(struct pim_instance *pim, struct vty *vty,
uptime_mroute_del, (long long)pim->mroute_del_events);
}
-static void pim_show_rpf(struct pim_instance *pim, struct vty *vty, uint8_t uj)
+static void pim_show_rpf(struct pim_instance *pim, struct vty *vty, bool uj)
{
struct listnode *up_node;
struct pim_upstream *up;
@@ -2821,8 +2821,7 @@ static void pim_show_nexthop(struct pim_instance *pim, struct vty *vty)
hash_walk(pim->rpf_hash, pim_print_pnc_cache_walkcb, &cwd);
}
-static void igmp_show_groups(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+static void igmp_show_groups(struct pim_instance *pim, struct vty *vty, bool uj)
{
struct interface *ifp;
time_t now;
@@ -4496,7 +4495,7 @@ DEFUN (show_ip_multicast_vrf_all,
}
static void show_mroute(struct pim_instance *pim, struct vty *vty, bool fill,
- uint8_t uj)
+ bool uj)
{
struct listnode *node;
struct channel_oil *c_oil;
@@ -5549,7 +5548,7 @@ DEFUN (no_ip_pim_ssm_prefix_list_name,
}
static void ip_pim_ssm_show_group_range(struct pim_instance *pim,
- struct vty *vty, uint8_t uj)
+ struct vty *vty, bool uj)
{
struct pim_ssm *ssm = pim->ssm_info;
const char *range_str =
@@ -5589,7 +5588,7 @@ DEFUN (show_ip_pim_ssm_range,
}
static void ip_pim_ssm_show_group_type(struct pim_instance *pim,
- struct vty *vty, uint8_t uj,
+ struct vty *vty, bool uj,
const char *group)
{
struct in_addr group_addr;
@@ -5642,27 +5641,6 @@ DEFUN (show_ip_pim_group_type,
return CMD_SUCCESS;
}
-DEFUN_HIDDEN (ip_multicast_routing,
- ip_multicast_routing_cmd,
- "ip multicast-routing",
- IP_STR
- "Enable IP multicast forwarding\n")
-{
- return CMD_SUCCESS;
-}
-
-DEFUN_HIDDEN (no_ip_multicast_routing,
- no_ip_multicast_routing_cmd,
- "no ip multicast-routing",
- NO_STR
- IP_STR
- "Enable IP multicast forwarding\n")
-{
- vty_out(vty,
- "Command is Disabled and will be removed in a future version\n");
- return CMD_SUCCESS;
-}
-
DEFUN (ip_ssmpingd,
ip_ssmpingd_cmd,
"ip ssmpingd [A.B.C.D]",
@@ -5789,7 +5767,7 @@ static int pim_cmd_igmp_start(struct vty *vty, struct interface *ifp)
pim_ifp = ifp->info;
if (!pim_ifp) {
- pim_ifp = pim_if_new(ifp, 1 /* igmp=true */, 0 /* pim=false */);
+ pim_ifp = pim_if_new(ifp, true, false, false);
if (!pim_ifp) {
vty_out(vty, "Could not enable IGMP on interface %s\n",
ifp->name);
@@ -6400,7 +6378,7 @@ static int pim_cmd_interface_add(struct interface *ifp)
struct pim_interface *pim_ifp = ifp->info;
if (!pim_ifp) {
- pim_ifp = pim_if_new(ifp, 0 /* igmp=false */, 1 /* pim=true */);
+ pim_ifp = pim_if_new(ifp, false, true, false);
if (!pim_ifp) {
return 0;
}
@@ -6433,16 +6411,12 @@ DEFUN_HIDDEN (interface_ip_pim_ssm,
return CMD_SUCCESS;
}
-DEFUN (interface_ip_pim_sm,
- interface_ip_pim_sm_cmd,
- "ip pim sm",
- IP_STR
- PIM_STR
- IFACE_PIM_SM_STR)
+static int interface_ip_pim_helper(struct vty *vty)
{
struct pim_interface *pim_ifp;
VTY_DECLVAR_CONTEXT(interface, ifp);
+
if (!pim_cmd_interface_add(ifp)) {
vty_out(vty, "Could not enable PIM SM on interface\n");
return CMD_WARNING_CONFIG_FAILED;
@@ -6455,6 +6429,25 @@ DEFUN (interface_ip_pim_sm,
return CMD_SUCCESS;
}
+DEFUN_HIDDEN (interface_ip_pim_sm,
+ interface_ip_pim_sm_cmd,
+ "ip pim sm",
+ IP_STR
+ PIM_STR
+ IFACE_PIM_SM_STR)
+{
+ return interface_ip_pim_helper(vty);
+}
+
+DEFUN (interface_ip_pim,
+ interface_ip_pim_cmd,
+ "ip pim",
+ IP_STR
+ PIM_STR)
+{
+ return interface_ip_pim_helper(vty);
+}
+
static int pim_cmd_interface_delete(struct interface *ifp)
{
struct pim_interface *pim_ifp = ifp->info;
@@ -6480,13 +6473,7 @@ static int pim_cmd_interface_delete(struct interface *ifp)
return 1;
}
-DEFUN_HIDDEN (interface_no_ip_pim_ssm,
- interface_no_ip_pim_ssm_cmd,
- "no ip pim ssm",
- NO_STR
- IP_STR
- PIM_STR
- IFACE_PIM_STR)
+static int interface_no_ip_pim_helper(struct vty *vty)
{
VTY_DECLVAR_CONTEXT(interface, ifp);
if (!pim_cmd_interface_delete(ifp)) {
@@ -6497,7 +6484,18 @@ DEFUN_HIDDEN (interface_no_ip_pim_ssm,
return CMD_SUCCESS;
}
-DEFUN (interface_no_ip_pim_sm,
+DEFUN_HIDDEN (interface_no_ip_pim_ssm,
+ interface_no_ip_pim_ssm_cmd,
+ "no ip pim ssm",
+ NO_STR
+ IP_STR
+ PIM_STR
+ IFACE_PIM_STR)
+{
+ return interface_no_ip_pim_helper(vty);
+}
+
+DEFUN_HIDDEN (interface_no_ip_pim_sm,
interface_no_ip_pim_sm_cmd,
"no ip pim sm",
NO_STR
@@ -6505,13 +6503,17 @@ DEFUN (interface_no_ip_pim_sm,
PIM_STR
IFACE_PIM_SM_STR)
{
- VTY_DECLVAR_CONTEXT(interface, ifp);
- if (!pim_cmd_interface_delete(ifp)) {
- vty_out(vty, "Unable to delete interface information\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
+ return interface_no_ip_pim_helper(vty);
+}
- return CMD_SUCCESS;
+DEFUN (interface_no_ip_pim,
+ interface_no_ip_pim_cmd,
+ "no ip pim",
+ NO_STR
+ IP_STR
+ PIM_STR)
+{
+ return interface_no_ip_pim_helper(vty);
}
/* boundaries */
@@ -7468,7 +7470,7 @@ DEFUN (interface_pim_use_source,
interface_pim_use_source_cmd,
"ip pim use-source A.B.C.D",
IP_STR
- "pim multicast routing\n"
+ PIM_STR
"Configure primary IP address\n"
"source ip address\n")
{
@@ -7480,7 +7482,7 @@ DEFUN (interface_no_pim_use_source,
"no ip pim use-source [A.B.C.D]",
NO_STR
IP_STR
- "pim multicast routing\n"
+ PIM_STR
"Delete source IP address\n"
"source ip address\n")
{
@@ -7908,7 +7910,7 @@ static void print_empty_json_obj(struct vty *vty)
}
static void ip_msdp_show_mesh_group(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct listnode *mbrnode;
struct pim_msdp_mg_mbr *mbr;
@@ -8030,7 +8032,7 @@ DEFUN (show_ip_msdp_mesh_group_vrf_all,
}
static void ip_msdp_show_peers(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct listnode *mpnode;
struct pim_msdp_peer *mp;
@@ -8084,7 +8086,7 @@ static void ip_msdp_show_peers(struct pim_instance *pim, struct vty *vty,
}
static void ip_msdp_show_peers_detail(struct pim_instance *pim, struct vty *vty,
- const char *peer, uint8_t uj)
+ const char *peer, bool uj)
{
struct listnode *mpnode;
struct pim_msdp_peer *mp;
@@ -8262,8 +8264,7 @@ DEFUN (show_ip_msdp_peer_detail_vrf_all,
return CMD_SUCCESS;
}
-static void ip_msdp_show_sa(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+static void ip_msdp_show_sa(struct pim_instance *pim, struct vty *vty, bool uj)
{
struct listnode *sanode;
struct pim_msdp_sa *sa;
@@ -8340,7 +8341,7 @@ static void ip_msdp_show_sa(struct pim_instance *pim, struct vty *vty,
static void ip_msdp_show_sa_entry_detail(struct pim_msdp_sa *sa,
const char *src_str,
const char *grp_str, struct vty *vty,
- uint8_t uj, json_object *json)
+ bool uj, json_object *json)
{
char rp_str[INET_ADDRSTRLEN];
char peer_str[INET_ADDRSTRLEN];
@@ -8404,7 +8405,7 @@ static void ip_msdp_show_sa_entry_detail(struct pim_msdp_sa *sa,
}
static void ip_msdp_show_sa_detail(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+ bool uj)
{
struct listnode *sanode;
struct pim_msdp_sa *sa;
@@ -8487,7 +8488,7 @@ DEFUN (show_ip_msdp_sa_detail_vrf_all,
}
static void ip_msdp_show_sa_addr(struct pim_instance *pim, struct vty *vty,
- const char *addr, uint8_t uj)
+ const char *addr, bool uj)
{
struct listnode *sanode;
struct pim_msdp_sa *sa;
@@ -8516,7 +8517,7 @@ static void ip_msdp_show_sa_addr(struct pim_instance *pim, struct vty *vty,
}
static void ip_msdp_show_sa_sg(struct pim_instance *pim, struct vty *vty,
- const char *src, const char *grp, uint8_t uj)
+ const char *src, const char *grp, bool uj)
{
struct listnode *sanode;
struct pim_msdp_sa *sa;
@@ -8637,8 +8638,6 @@ void pim_cmd_init(void)
install_node(&debug_node, pim_debug_config_write);
- install_element(CONFIG_NODE, &ip_multicast_routing_cmd);
- install_element(CONFIG_NODE, &no_ip_multicast_routing_cmd);
install_element(CONFIG_NODE, &ip_pim_rp_cmd);
install_element(VRF_NODE, &ip_pim_rp_cmd);
install_element(CONFIG_NODE, &no_ip_pim_rp_cmd);
@@ -8724,6 +8723,8 @@ void pim_cmd_init(void)
install_element(INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd);
install_element(INTERFACE_NODE, &interface_ip_pim_sm_cmd);
install_element(INTERFACE_NODE, &interface_no_ip_pim_sm_cmd);
+ install_element(INTERFACE_NODE, &interface_ip_pim_cmd);
+ install_element(INTERFACE_NODE, &interface_no_ip_pim_cmd);
install_element(INTERFACE_NODE, &interface_ip_pim_drprio_cmd);
install_element(INTERFACE_NODE, &interface_no_ip_pim_drprio_cmd);
install_element(INTERFACE_NODE, &interface_ip_pim_hello_cmd);
diff --git a/pimd/pim_errors.c b/pimd/pim_errors.c
index d154752bdc..0674a4e994 100644
--- a/pimd/pim_errors.c
+++ b/pimd/pim_errors.c
@@ -26,13 +26,13 @@
/* clang-format off */
static struct log_ref ferr_pim_err[] = {
{
- .code = PIM_ERR_MSDP_PACKET,
+ .code = EC_PIM_MSDP_PACKET,
.title = "PIM MSDP Packet Error",
.description = "PIM has received a packet from a peer that does not correctly decode",
.suggestion = "Check MSDP peer and ensure it is correctly working"
},
{
- .code = PIM_ERR_CONFIG,
+ .code = EC_PIM_CONFIG,
.title = "PIM Configuration Error",
.description = "PIM has detected a configuration error",
.suggestion = "Ensure the configuration is correct and apply correct configuration"
diff --git a/pimd/pim_errors.h b/pimd/pim_errors.h
index ad9c95a93d..d73caa3f8f 100644
--- a/pimd/pim_errors.h
+++ b/pimd/pim_errors.h
@@ -24,8 +24,8 @@
#include "lib/ferr.h"
enum pim_log_refs {
- PIM_ERR_MSDP_PACKET = PIM_FERR_START,
- PIM_ERR_CONFIG,
+ EC_PIM_MSDP_PACKET = PIM_FERR_START,
+ EC_PIM_CONFIG,
};
extern void pim_error_init(void);
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index 72ccf3ab1e..249b24c0d7 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -108,7 +108,8 @@ static int pim_sec_addr_comp(const void *p1, const void *p2)
return 0;
}
-struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim)
+struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim,
+ bool ispimreg)
{
struct pim_interface *pim_ifp;
@@ -175,7 +176,7 @@ struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim)
pim_sock_reset(ifp);
- pim_if_add_vif(ifp);
+ pim_if_add_vif(ifp, ispimreg);
return pim_ifp;
}
@@ -626,7 +627,7 @@ void pim_if_addr_add(struct connected *ifc)
address assigned, then try to create a vif_index.
*/
if (pim_ifp->mroute_vif_index < 0) {
- pim_if_add_vif(ifp);
+ pim_if_add_vif(ifp, false);
}
pim_ifchannel_scan_forward_start(ifp);
}
@@ -759,7 +760,7 @@ void pim_if_addr_add_all(struct interface *ifp)
* address assigned, then try to create a vif_index.
*/
if (pim_ifp->mroute_vif_index < 0) {
- pim_if_add_vif(ifp);
+ pim_if_add_vif(ifp, false);
}
pim_ifchannel_scan_forward_start(ifp);
@@ -924,7 +925,7 @@ static int pim_iface_next_vif_index(struct interface *ifp)
see also pim_if_find_vifindex_by_ifindex()
*/
-int pim_if_add_vif(struct interface *ifp)
+int pim_if_add_vif(struct interface *ifp, bool ispimreg)
{
struct pim_interface *pim_ifp = ifp->info;
struct in_addr ifaddr;
@@ -946,8 +947,7 @@ int pim_if_add_vif(struct interface *ifp)
}
ifaddr = pim_ifp->primary_address;
- if (ifp->ifindex != PIM_OIF_PIM_REGISTER_VIF
- && PIM_INADDR_IS_ANY(ifaddr)) {
+ if (!ispimreg && PIM_INADDR_IS_ANY(ifaddr)) {
zlog_warn(
"%s: could not get address for interface %s ifindex=%d",
__PRETTY_FUNCTION__, ifp->name, ifp->ifindex);
@@ -1468,7 +1468,7 @@ void pim_if_create_pimreg(struct pim_instance *pim)
pim->regiface = if_create(pimreg_name, pim->vrf_id);
pim->regiface->ifindex = PIM_OIF_PIM_REGISTER_VIF;
- pim_if_new(pim->regiface, 0, 0);
+ pim_if_new(pim->regiface, false, false, true);
}
}
diff --git a/pimd/pim_iface.h b/pimd/pim_iface.h
index 02926a6973..a7dc097f88 100644
--- a/pimd/pim_iface.h
+++ b/pimd/pim_iface.h
@@ -154,7 +154,8 @@ struct pim_interface {
void pim_if_init(struct pim_instance *pim);
void pim_if_terminate(struct pim_instance *pim);
-struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim);
+struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim,
+ bool ispimreg);
void pim_if_delete(struct interface *ifp);
void pim_if_addr_add(struct connected *ifc);
void pim_if_addr_del(struct connected *ifc, int force_prim_as_any);
@@ -163,7 +164,7 @@ void pim_if_addr_del_all(struct interface *ifp);
void pim_if_addr_del_all_igmp(struct interface *ifp);
void pim_if_addr_del_all_pim(struct interface *ifp);
-int pim_if_add_vif(struct interface *ifp);
+int pim_if_add_vif(struct interface *ifp, bool ispimreg);
int pim_if_del_vif(struct interface *ifp);
void pim_if_add_vif_all(struct pim_instance *pim);
void pim_if_del_vif_all(struct pim_instance *pim);
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index 3137345037..a3d6a2e658 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -1115,7 +1115,8 @@ void pim_ifchannel_local_membership_del(struct interface *ifp,
struct channel_oil *c_oil = child->channel_oil;
struct pim_ifchannel *chchannel =
pim_ifchannel_find(ifp, &child->sg);
- struct pim_interface *pim_ifp = ifp->info;
+
+ pim_ifp = ifp->info;
if (PIM_DEBUG_EVENTS)
zlog_debug("%s %s: Prune(S,G)=%s(%s) from %s",
diff --git a/pimd/pim_igmp.c b/pimd/pim_igmp.c
index 270f1e3f27..64537cfa84 100644
--- a/pimd/pim_igmp.c
+++ b/pimd/pim_igmp.c
@@ -98,7 +98,7 @@ static int igmp_sock_open(struct in_addr ifaddr, struct interface *ifp,
if (!join) {
flog_err_sys(
- LIB_ERR_SOCKET,
+ EC_LIB_SOCKET,
"IGMP socket fd=%d could not join any group on interface address %s",
fd, inet_ntoa(ifaddr));
close(fd);
@@ -700,7 +700,7 @@ static void sock_close(struct igmp_sock *igmp)
if (close(igmp->fd)) {
flog_err(
- LIB_ERR_SOCKET,
+ EC_LIB_SOCKET,
"Failure closing IGMP socket %s fd=%d on interface %s: errno=%d: %s",
inet_ntoa(igmp->ifaddr), igmp->fd,
igmp->interface->name, errno, safe_strerror(errno));
diff --git a/pimd/pim_igmp_mtrace.c b/pimd/pim_igmp_mtrace.c
index 95d0278a34..1fb624a6a0 100644
--- a/pimd/pim_igmp_mtrace.c
+++ b/pimd/pim_igmp_mtrace.c
@@ -615,7 +615,7 @@ int igmp_mtrace_recv_qry_req(struct igmp_sock *igmp, struct ip *ip_hdr,
static uint32_t qry_id, qry_src;
char mtrace_buf[MTRACE_HDR_SIZE + MTRACE_MAX_HOPS * MTRACE_RSP_SIZE];
struct interface *ifp;
- struct interface *out_ifp;
+ struct interface *out_ifp = NULL;
struct pim_interface *pim_ifp;
struct pim_instance *pim;
struct igmp_mtrace *mtracep;
diff --git a/pimd/pim_igmp_stats.c b/pimd/pim_igmp_stats.c
index 428816e1f0..40851a4529 100644
--- a/pimd/pim_igmp_stats.c
+++ b/pimd/pim_igmp_stats.c
@@ -17,6 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "pim_igmp_stats.h"
void igmp_stats_init(struct igmp_stats *stats)
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index 7b21376c99..430cba76b0 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -1585,7 +1585,7 @@ void igmp_v3_send_query(struct igmp_group *group, int fd, const char *ifname,
msg_size = IGMP_V3_SOURCES_OFFSET + (num_sources << 2);
if (msg_size > query_buf_size) {
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"%s %s: unable to send: msg_size=%zd larger than query_buf_size=%d",
__FILE__, __PRETTY_FUNCTION__, msg_size,
query_buf_size);
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index c69e2939e4..436e0508f3 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -154,12 +154,12 @@ static int pim_mroute_msg_nocache(int fd, struct interface *ifp,
* the Interface type is SSM we don't need to
* do anything here
*/
- if (!rpg || (pim_rpf_addr_is_inaddr_none(rpg))
- || (!(PIM_I_am_DR(pim_ifp)))) {
+ if (!rpg || pim_rpf_addr_is_inaddr_none(rpg)) {
if (PIM_DEBUG_MROUTE_DETAIL)
zlog_debug(
- "%s: Interface is not configured correctly to handle incoming packet: Could be !DR, !pim_ifp, !SM, !RP",
+ "%s: Interface is not configured correctly to handle incoming packet: Could be !pim_ifp, !SM, !RP",
__PRETTY_FUNCTION__);
+
return 0;
}
@@ -179,6 +179,26 @@ static int pim_mroute_msg_nocache(int fd, struct interface *ifp,
sg.src = msg->im_src;
sg.grp = msg->im_dst;
+ if (!(PIM_I_am_DR(pim_ifp))) {
+ struct channel_oil *c_oil;
+
+ if (PIM_DEBUG_MROUTE_DETAIL)
+ zlog_debug("%s: Interface is not the DR blackholing incoming traffic for %s",
+ __PRETTY_FUNCTION__, pim_str_sg_dump(&sg));
+
+ /*
+ * We are not the DR, but we are still receiving packets
+ * Let's blackhole those packets for the moment
+ * As that they will be coming up to the cpu
+ * and causing us to consider them.
+ */
+ c_oil = pim_channel_oil_add(pim_ifp->pim, &sg,
+ pim_ifp->mroute_vif_index);
+ pim_mroute_add(c_oil, __PRETTY_FUNCTION__);
+
+ return 0;
+ }
+
up = pim_upstream_find_or_add(&sg, ifp, PIM_UPSTREAM_FLAG_MASK_FHR,
__PRETTY_FUNCTION__);
if (!up) {
diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c
index 7fcf42e8ce..5a75ed329c 100644
--- a/pimd/pim_msdp.c
+++ b/pimd/pim_msdp.c
@@ -519,7 +519,7 @@ static void pim_msdp_sa_local_del_on_up_del(struct pim_instance *pim,
* changes; perhaps
* address this in the next release? - XXX */
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"MSDP sa %s SPT teardown is causing the local entry to be removed",
sa->sg_str);
return;
diff --git a/pimd/pim_msdp_packet.c b/pimd/pim_msdp_packet.c
index 65232aafa2..39e39b9557 100644
--- a/pimd/pim_msdp_packet.c
+++ b/pimd/pim_msdp_packet.c
@@ -147,7 +147,7 @@ static void pim_msdp_connect_check(struct pim_msdp_peer *mp)
/* If getsockopt is fail, this is fatal error. */
if (ret < 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"can't get sockopt for nonblocking connect");
pim_msdp_peer_reset_tcp_conn(mp, "connect-failed");
return;
@@ -484,9 +484,9 @@ static void pim_msdp_pkt_sa_rx_one(struct pim_msdp_peer *mp, struct in_addr rp)
if (prefix_len != 32) {
/* ignore SA update if the prefix length is not 32 */
- flog_err(PIM_ERR_MSDP_PACKET,
- "rxed sa update with invalid prefix length %d",
- prefix_len);
+ flog_err(EC_PIM_MSDP_PACKET,
+ "rxed sa update with invalid prefix length %d",
+ prefix_len);
return;
}
if (PIM_DEBUG_MSDP_PACKETS) {
diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c
index feac42cf53..7997d3138a 100644
--- a/pimd/pim_msdp_socket.c
+++ b/pimd/pim_msdp_socket.c
@@ -43,7 +43,7 @@ static void pim_msdp_update_sock_send_buffer_size(int fd)
socklen_t optlen = sizeof(optval);
if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &optval, &optlen) < 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"getsockopt of SO_SNDBUF failed %s\n",
safe_strerror(errno));
return;
@@ -52,7 +52,7 @@ static void pim_msdp_update_sock_send_buffer_size(int fd)
if (optval < size) {
if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &size, sizeof(size))
< 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"Couldn't increase send buffer: %s\n",
safe_strerror(errno));
}
@@ -74,8 +74,8 @@ static int pim_msdp_sock_accept(struct thread *thread)
/* re-register accept thread */
accept_sock = THREAD_FD(thread);
if (accept_sock < 0) {
- flog_err(LIB_ERR_DEVELOPMENT,
- "accept_sock is negative value %d", accept_sock);
+ flog_err(EC_LIB_DEVELOPMENT, "accept_sock is negative value %d",
+ accept_sock);
return -1;
}
pim->msdp.listener.thread = NULL;
@@ -85,7 +85,7 @@ static int pim_msdp_sock_accept(struct thread *thread)
/* accept client connection. */
msdp_sock = sockunion_accept(accept_sock, &su);
if (msdp_sock < 0) {
- flog_err_sys(LIB_ERR_SOCKET, "pim_msdp_sock_accept failed (%s)",
+ flog_err_sys(EC_LIB_SOCKET, "pim_msdp_sock_accept failed (%s)",
safe_strerror(errno));
return -1;
}
@@ -95,9 +95,9 @@ static int pim_msdp_sock_accept(struct thread *thread)
if (!mp || !PIM_MSDP_PEER_IS_LISTENER(mp)) {
++pim->msdp.rejected_accepts;
if (PIM_DEBUG_MSDP_EVENTS) {
- flog_err(PIM_ERR_MSDP_PACKET,
- "msdp peer connection refused from %s",
- sockunion2str(&su, buf, SU_ADDRSTRLEN));
+ flog_err(EC_PIM_MSDP_PACKET,
+ "msdp peer connection refused from %s",
+ sockunion2str(&su, buf, SU_ADDRSTRLEN));
}
close(msdp_sock);
return -1;
@@ -141,8 +141,7 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
- flog_err_sys(LIB_ERR_SOCKET, "socket: %s",
- safe_strerror(errno));
+ flog_err_sys(EC_LIB_SOCKET, "socket: %s", safe_strerror(errno));
return sock;
}
@@ -161,14 +160,14 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
struct interface *ifp =
if_lookup_by_name(pim->vrf->name, pim->vrf_id);
if (!ifp) {
- flog_err(LIB_ERR_INTERFACE,
- "%s: Unable to lookup vrf interface: %s",
- __PRETTY_FUNCTION__, pim->vrf->name);
+ flog_err(EC_LIB_INTERFACE,
+ "%s: Unable to lookup vrf interface: %s",
+ __PRETTY_FUNCTION__, pim->vrf->name);
close(sock);
return -1;
}
if (pim_socket_bind(sock, ifp)) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"%s: Unable to bind to socket: %s",
__PRETTY_FUNCTION__, safe_strerror(errno));
close(sock);
@@ -182,7 +181,7 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
}
if (rc < 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"pim_msdp_socket bind to port %d: %s",
ntohs(sin.sin_port), safe_strerror(errno));
close(sock);
@@ -191,7 +190,7 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
rc = listen(sock, 3 /* backlog */);
if (rc < 0) {
- flog_err_sys(LIB_ERR_SOCKET, "pim_msdp_socket listen: %s",
+ flog_err_sys(EC_LIB_SOCKET, "pim_msdp_socket listen: %s",
safe_strerror(errno));
close(sock);
return rc;
@@ -232,7 +231,7 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
/* Make socket for the peer. */
mp->fd = sockunion_socket(&mp->su_peer);
if (mp->fd < 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"pim_msdp_socket socket failure: %s",
safe_strerror(errno));
return -1;
@@ -242,13 +241,13 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
struct interface *ifp =
if_lookup_by_name(mp->pim->vrf->name, mp->pim->vrf_id);
if (!ifp) {
- flog_err(LIB_ERR_INTERFACE,
- "%s: Unable to lookup vrf interface: %s",
- __PRETTY_FUNCTION__, mp->pim->vrf->name);
+ flog_err(EC_LIB_INTERFACE,
+ "%s: Unable to lookup vrf interface: %s",
+ __PRETTY_FUNCTION__, mp->pim->vrf->name);
return -1;
}
if (pim_socket_bind(mp->fd, ifp)) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"%s: Unable to bind to socket: %s",
__PRETTY_FUNCTION__, safe_strerror(errno));
close(mp->fd);
@@ -267,7 +266,7 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
/* source bind */
rc = sockunion_bind(mp->fd, &mp->su_local, 0, &mp->su_local);
if (rc < 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"pim_msdp_socket connect bind failure: %s",
safe_strerror(errno));
close(mp->fd);
diff --git a/pimd/pim_neighbor.c b/pimd/pim_neighbor.c
index 11d8476362..bff1e7ff13 100644
--- a/pimd/pim_neighbor.c
+++ b/pimd/pim_neighbor.c
@@ -801,7 +801,7 @@ void pim_neighbor_update(struct pim_neighbor *neigh,
if (neigh->prefix_list == addr_list) {
if (addr_list) {
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"%s: internal error: trying to replace same prefix list=%p",
__PRETTY_FUNCTION__, (void *)addr_list);
}
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index d5ee30fb2e..0696a680e7 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -116,9 +116,9 @@ void pim_sock_delete(struct interface *ifp, const char *delete_message)
delete_message);
if (!ifp->info) {
- flog_err(PIM_ERR_CONFIG,
- "%s: %s: but PIM not enabled on interface %s (!)",
- __PRETTY_FUNCTION__, delete_message, ifp->name);
+ flog_err(EC_PIM_CONFIG,
+ "%s: %s: but PIM not enabled on interface %s (!)",
+ __PRETTY_FUNCTION__, delete_message, ifp->name);
return;
}
@@ -573,8 +573,6 @@ int pim_msg_send(int fd, struct in_addr src, struct in_addr dst,
ip->ip_len = htons(sendlen);
if (PIM_DEBUG_PIM_PACKETS) {
- struct pim_msg_header *header =
- (struct pim_msg_header *)pim_msg;
char dst_str[INET_ADDRSTRLEN];
pim_inet4_dump("<dst?>", dst, dst_str, sizeof(dst_str));
zlog_debug("%s: to %s on %s: msg_size=%d checksum=%x",
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index 3db5015e73..51ca0945b9 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -113,8 +113,8 @@ void pim_rp_init(struct pim_instance *pim)
rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info));
if (!str2prefix("224.0.0.0/4", &rp_info->group)) {
- flog_err(LIB_ERR_DEVELOPMENT,
- "Unable to convert 224.0.0.0/4 to prefix");
+ flog_err(EC_LIB_DEVELOPMENT,
+ "Unable to convert 224.0.0.0/4 to prefix");
list_delete_and_null(&pim->rp_list);
route_table_finish(pim->rp_table);
XFREE(MTYPE_PIM_RP, rp_info);
@@ -236,7 +236,7 @@ static struct rp_info *pim_rp_find_match_group(struct pim_instance *pim,
rn = route_node_match(pim->rp_table, group);
if (!rn) {
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"%s: BUG We should have found default group information\n",
__PRETTY_FUNCTION__);
return best;
@@ -625,7 +625,7 @@ int pim_rp_del(struct pim_instance *pim, const char *rp,
if (rn) {
if (rn->info != rp_info)
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"Expected rn->info to be equal to rp_info");
if (PIM_DEBUG_TRACE) {
@@ -951,8 +951,7 @@ int pim_rp_check_is_my_ip_address(struct pim_instance *pim,
return 0;
}
-void pim_rp_show_information(struct pim_instance *pim, struct vty *vty,
- uint8_t uj)
+void pim_rp_show_information(struct pim_instance *pim, struct vty *vty, bool uj)
{
struct rp_info *rp_info;
struct rp_info *prev_rp_info = NULL;
diff --git a/pimd/pim_rp.h b/pimd/pim_rp.h
index e0631b27be..672a696319 100644
--- a/pimd/pim_rp.h
+++ b/pimd/pim_rp.h
@@ -68,7 +68,7 @@ struct pim_rpf *pim_rp_g(struct pim_instance *pim, struct in_addr group);
#define RP(P, G) pim_rp_g ((P), (G))
void pim_rp_show_information(struct pim_instance *pim, struct vty *vty,
- uint8_t uj);
+ bool uj);
void pim_resolve_rp_nh(struct pim_instance *pim);
int pim_rp_list_cmp(void *v1, void *v2);
#endif
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c
index 1f584a2f9a..c4538a4ac5 100644
--- a/pimd/pim_sock.c
+++ b/pimd/pim_sock.c
@@ -151,7 +151,7 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, struct interface *ifp,
}
#else
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"%s %s: Missing IP_PKTINFO and IP_RECVDSTADDR: unable to get dst addr from recvmsg()",
__FILE__, __PRETTY_FUNCTION__);
close(fd);
@@ -289,7 +289,7 @@ int pim_socket_join(int fd, struct in_addr group, struct in_addr ifaddr,
sprintf(ifaddr_str, "<ifaddr?>");
flog_err(
- LIB_ERR_SOCKET,
+ EC_LIB_SOCKET,
"Failure socket joining fd=%d group %s on interface address %s: errno=%d: %s",
fd, group_str, ifaddr_str, errno, safe_strerror(errno));
return ret;
diff --git a/pimd/pim_ssm.c b/pimd/pim_ssm.c
index 8347878d3f..dfc7063fd0 100644
--- a/pimd/pim_ssm.c
+++ b/pimd/pim_ssm.c
@@ -73,9 +73,9 @@ static int pim_is_grp_standard_ssm(struct prefix *group)
if (first) {
if (!str2prefix(PIM_SSM_STANDARD_RANGE, &group_ssm))
- flog_err(LIB_ERR_DEVELOPMENT,
- "%s: Failure to Read Group Address: %s",
- __PRETTY_FUNCTION__, PIM_SSM_STANDARD_RANGE);
+ flog_err(EC_LIB_DEVELOPMENT,
+ "%s: Failure to Read Group Address: %s",
+ __PRETTY_FUNCTION__, PIM_SSM_STANDARD_RANGE);
first = 0;
}
diff --git a/pimd/pim_ssmpingd.c b/pimd/pim_ssmpingd.c
index be30d9c73e..a5082608b8 100644
--- a/pimd/pim_ssmpingd.c
+++ b/pimd/pim_ssmpingd.c
@@ -83,7 +83,7 @@ static int ssmpingd_socket(struct in_addr addr, int port, int mttl)
fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (fd < 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"%s: could not create socket: errno=%d: %s",
__PRETTY_FUNCTION__, errno, safe_strerror(errno));
return -1;
@@ -127,7 +127,7 @@ static int ssmpingd_socket(struct in_addr addr, int port, int mttl)
}
#else
flog_err(
- LIB_ERR_DEVELOPMENT,
+ EC_LIB_DEVELOPMENT,
"%s %s: missing IP_PKTINFO and IP_RECVDSTADDR: unable to get dst addr from recvmsg()",
__FILE__, __PRETTY_FUNCTION__);
close(fd);
diff --git a/pimd/pim_time.c b/pimd/pim_time.c
index 029e551167..23c85c2fa8 100644
--- a/pimd/pim_time.c
+++ b/pimd/pim_time.c
@@ -35,7 +35,7 @@ static int gettime_monotonic(struct timeval *tv)
result = gettimeofday(tv, 0);
if (result) {
- flog_err_sys(LIB_ERR_SYSTEM_CALL,
+ flog_err_sys(EC_LIB_SYSTEM_CALL,
"%s: gettimeofday() failure: errno=%d: %s",
__PRETTY_FUNCTION__, errno, safe_strerror(errno));
}
@@ -52,7 +52,7 @@ int64_t pim_time_monotonic_sec()
struct timeval now_tv;
if (gettime_monotonic(&now_tv)) {
- flog_err_sys(LIB_ERR_SYSTEM_CALL,
+ flog_err_sys(EC_LIB_SYSTEM_CALL,
"%s: gettime_monotonic() failure: errno=%d: %s",
__PRETTY_FUNCTION__, errno, safe_strerror(errno));
return -1;
@@ -71,7 +71,7 @@ int64_t pim_time_monotonic_dsec()
int64_t now_dsec;
if (gettime_monotonic(&now_tv)) {
- flog_err_sys(LIB_ERR_SYSTEM_CALL,
+ flog_err_sys(EC_LIB_SYSTEM_CALL,
"%s: gettime_monotonic() failure: errno=%d: %s",
__PRETTY_FUNCTION__, errno, safe_strerror(errno));
return -1;
@@ -89,7 +89,7 @@ int64_t pim_time_monotonic_usec(void)
int64_t now_dsec;
if (gettime_monotonic(&now_tv)) {
- flog_err_sys(LIB_ERR_SYSTEM_CALL,
+ flog_err_sys(EC_LIB_SYSTEM_CALL,
"%s: gettime_monotonic() failure: errno=%d: %s",
__PRETTY_FUNCTION__, errno, safe_strerror(errno));
return -1;
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 15cbf6fbc3..cc255a51e2 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -1764,15 +1764,18 @@ void pim_upstream_remove_lhr_star_pimreg(struct pim_instance *pim,
void pim_upstream_init(struct pim_instance *pim)
{
- char hash_name[64];
+ char name[64];
+ snprintf(name, 64, "PIM %s Timer Wheel",
+ pim->vrf->name);
pim->upstream_sg_wheel =
wheel_init(master, 31000, 100, pim_upstream_hash_key,
- pim_upstream_sg_running);
+ pim_upstream_sg_running, name);
- snprintf(hash_name, 64, "PIM %s Upstream Hash", pim->vrf->name);
+ snprintf(name, 64, "PIM %s Upstream Hash",
+ pim->vrf->name);
pim->upstream_hash = hash_create_size(8192, pim_upstream_hash_key,
- pim_upstream_equal, hash_name);
+ pim_upstream_equal, name);
pim->upstream_list = list_new();
pim->upstream_list->cmp = pim_upstream_compare;
diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c
index 88be195bee..a4aec710e9 100644
--- a/pimd/pim_vty.c
+++ b/pimd/pim_vty.c
@@ -267,7 +267,7 @@ int pim_interface_config_write(struct vty *vty)
struct pim_interface *pim_ifp = ifp->info;
if (PIM_IF_TEST_PIM(pim_ifp->options)) {
- vty_out(vty, " ip pim sm\n");
+ vty_out(vty, " ip pim\n");
++writes;
}
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c
index ab6258ad36..4ff9bd6bdc 100644
--- a/pimd/pim_zebra.c
+++ b/pimd/pim_zebra.c
@@ -112,7 +112,7 @@ static int pim_zebra_if_add(int command, struct zclient *zclient,
struct pim_interface *pim_ifp;
if (!ifp->info) {
- pim_ifp = pim_if_new(ifp, 0, 0);
+ pim_ifp = pim_if_new(ifp, false, false, false);
ifp->info = pim_ifp;
}
@@ -1044,9 +1044,14 @@ void igmp_source_forward_start(struct pim_instance *pim,
return;
}
- if (!(PIM_I_am_DR(pim_oif)))
+ if (!(PIM_I_am_DR(pim_oif))) {
+ if (PIM_DEBUG_IGMP_TRACE)
+ zlog_debug("%s: %s was received on %s interface but we are not DR for that interface",
+ __PRETTY_FUNCTION__,
+ pim_str_sg_dump(&sg),
+ group->group_igmp_sock->interface->name);
return;
-
+ }
/*
Feed IGMPv3-gathered local membership information into PIM
per-interface (S,G) state.
diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c
index baa07a8ec6..48a228c744 100644
--- a/pimd/pim_zlookup.c
+++ b/pimd/pim_zlookup.c
@@ -123,8 +123,8 @@ void zclient_lookup_new(void)
{
zlookup = zclient_new_notify(master, &zclient_options_default);
if (!zlookup) {
- flog_err(LIB_ERR_ZAPI_SOCKET, "%s: zclient_new() failure",
- __PRETTY_FUNCTION__);
+ flog_err(EC_LIB_ZAPI_SOCKET, "%s: zclient_new() failure",
+ __PRETTY_FUNCTION__);
return;
}
@@ -170,9 +170,9 @@ static int zclient_read_nexthop(struct pim_instance *pim,
err = zclient_read_header(s, zlookup->sock, &length, &marker,
&version, &vrf_id, &command);
if (err < 0) {
- flog_err(LIB_ERR_ZAPI_MISSMATCH,
- "%s: zclient_read_header() failed",
- __PRETTY_FUNCTION__);
+ flog_err(EC_LIB_ZAPI_MISSMATCH,
+ "%s: zclient_read_header() failed",
+ __PRETTY_FUNCTION__);
zclient_lookup_failed(zlookup);
return -1;
}
@@ -315,9 +315,9 @@ static int zclient_lookup_nexthop_once(struct pim_instance *pim,
/* Check socket. */
if (zlookup->sock < 0) {
- flog_err(LIB_ERR_ZAPI_SOCKET,
- "%s: zclient lookup socket is not connected",
- __PRETTY_FUNCTION__);
+ flog_err(EC_LIB_ZAPI_SOCKET,
+ "%s: zclient lookup socket is not connected",
+ __PRETTY_FUNCTION__);
zclient_lookup_failed(zlookup);
return -1;
}
@@ -338,14 +338,14 @@ static int zclient_lookup_nexthop_once(struct pim_instance *pim,
ret = writen(zlookup->sock, s->data, stream_get_endp(s));
if (ret < 0) {
flog_err(
- LIB_ERR_SOCKET,
+ EC_LIB_SOCKET,
"%s: writen() failure: %d writing to zclient lookup socket",
__PRETTY_FUNCTION__, errno);
zclient_lookup_failed(zlookup);
return -2;
}
if (ret == 0) {
- flog_err_sys(LIB_ERR_SOCKET,
+ flog_err_sys(EC_LIB_SOCKET,
"%s: connection closed on zclient lookup socket",
__PRETTY_FUNCTION__);
zclient_lookup_failed(zlookup);
@@ -516,7 +516,7 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
ret = writen(zlookup->sock, s->data, count);
if (ret <= 0) {
flog_err(
- LIB_ERR_SOCKET,
+ EC_LIB_SOCKET,
"%s: writen() failure: %d writing to zclient lookup socket",
__PRETTY_FUNCTION__, errno);
return -1;
@@ -535,9 +535,9 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
err = zclient_read_header(s, zlookup->sock, &length, &marker,
&version, &vrf_id, &command);
if (err < 0) {
- flog_err(LIB_ERR_ZAPI_MISSMATCH,
- "%s: zclient_read_header() failed",
- __PRETTY_FUNCTION__);
+ flog_err(EC_LIB_ZAPI_MISSMATCH,
+ "%s: zclient_read_header() failed",
+ __PRETTY_FUNCTION__);
zclient_lookup_failed(zlookup);
return -1;
}
@@ -553,7 +553,7 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
more.src = c_oil->oil.mfcc_origin;
more.grp = c_oil->oil.mfcc_mcastgrp;
flog_err(
- LIB_ERR_ZAPI_MISSMATCH,
+ EC_LIB_ZAPI_MISSMATCH,
"%s: Received wrong %s(%s) information requested",
__PRETTY_FUNCTION__, pim_str_sg_dump(&more),
c_oil->pim->vrf->name);
diff --git a/pimd/pimd.c b/pimd/pimd.c
index dd0c7e3c2a..5d3018b2fd 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -86,7 +86,7 @@ void pim_init()
{
if (!inet_aton(PIM_ALL_PIM_ROUTERS, &qpim_all_pim_routers_addr)) {
flog_err(
- LIB_ERR_SOCKET,
+ EC_LIB_SOCKET,
"%s %s: could not solve %s to group address: errno=%d: %s",
__FILE__, __PRETTY_FUNCTION__, PIM_ALL_PIM_ROUTERS,
errno, safe_strerror(errno));
diff --git a/pimd/subdir.am b/pimd/subdir.am
index 55d56ece97..fef8e36577 100644
--- a/pimd/subdir.am
+++ b/pimd/subdir.am
@@ -8,6 +8,9 @@ sbin_PROGRAMS += pimd/pimd
bin_PROGRAMS += pimd/mtracebis
noinst_PROGRAMS += pimd/test_igmpv3_join
dist_examples_DATA += pimd/pimd.conf.sample
+vtysh_scan += $(top_srcdir)/pimd/pim_cmd.c
+man8 += $(MANBUILD)/pimd.8
+man8 += $(MANBUILD)/mtracebis.8
endif
pimd_libpim_a_SOURCES = \