summaryrefslogtreecommitdiffstats
path: root/pimd
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-05 09:56:24 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-05 09:56:24 +0000
commit54de8bbe36d7d968c6367939277942518bd4e11f (patch)
tree924f8c16d9c8831679f355b88c620b9b356c9d5a /pimd
parentAdding debian version 10.0.1-0.1. (diff)
downloadfrr-54de8bbe36d7d968c6367939277942518bd4e11f.tar.xz
frr-54de8bbe36d7d968c6367939277942518bd4e11f.zip
Merging upstream version 10.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'pimd')
-rw-r--r--pimd/pim_cmd.c15
-rw-r--r--pimd/pim_iface.c2
-rw-r--r--pimd/pim_mroute.c12
-rw-r--r--pimd/pim_msdp.c8
-rw-r--r--pimd/pim_nb_config.c12
5 files changed, 32 insertions, 17 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index c3528e2..a2d756a 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -1941,12 +1941,15 @@ DEFUN (show_ip_pim_mlag_summary,
json_object *json_stat = NULL;
json = json_object_new_object();
- if (router->mlag_flags & PIM_MLAGF_LOCAL_CONN_UP)
- json_object_boolean_true_add(json, "mlagConnUp");
- if (router->mlag_flags & PIM_MLAGF_PEER_CONN_UP)
- json_object_boolean_true_add(json, "mlagPeerConnUp");
- if (router->mlag_flags & PIM_MLAGF_PEER_ZEBRA_UP)
- json_object_boolean_true_add(json, "mlagPeerZebraUp");
+ json_object_boolean_add(json, "mlagConnUp",
+ CHECK_FLAG(router->mlag_flags,
+ PIM_MLAGF_LOCAL_CONN_UP));
+ json_object_boolean_add(json, "mlagPeerConnUp",
+ CHECK_FLAG(router->mlag_flags,
+ PIM_MLAGF_PEER_CONN_UP));
+ json_object_boolean_add(json, "mlagPeerZebraUp",
+ CHECK_FLAG(router->mlag_flags,
+ PIM_MLAGF_PEER_ZEBRA_UP));
json_object_string_add(json, "mlagRole",
mlag_role2str(router->mlag_role,
role_buf, sizeof(role_buf)));
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index 5d7132c..dcb6116 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -1677,7 +1677,9 @@ static int pim_ifp_up(struct interface *ifp)
__func__, vrf->name);
return 0;
}
+
pim_zebra_interface_set_master(master, ifp);
+ break;
}
}
}
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index c63e0f3..adc47e7 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -56,10 +56,14 @@ int pim_mroute_set(struct pim_instance *pim, int enable)
err = setsockopt(pim->mroute_socket, PIM_IPPROTO,
MRT_TABLE, &data, data_len);
if (err) {
- zlog_warn(
- "%s %s: failure: setsockopt(fd=%d,PIM_IPPROTO, MRT_TABLE=%d): errno=%d: %s",
- __FILE__, __func__, pim->mroute_socket,
- data, errno, safe_strerror(errno));
+ if (err == ENOPROTOOPT)
+ zlog_err("%s Kernel is not compiled with CONFIG_IP_MROUTE_MULTIPLE_TABLES and vrf's will not work",
+ __func__);
+ else
+ zlog_warn("%s %s: failure: setsockopt(fd=%d,PIM_IPPROTO, MRT_TABLE=%d): errno=%d: %s",
+ __FILE__, __func__,
+ pim->mroute_socket, data,
+ errno, safe_strerror(errno));
return -1;
}
}
diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c
index 623c14b..ea8c84c 100644
--- a/pimd/pim_msdp.c
+++ b/pimd/pim_msdp.c
@@ -411,12 +411,10 @@ void pim_msdp_sa_ref(struct pim_instance *pim, struct pim_msdp_peer *mp,
pim_addr_to_prefix(&grp, sa->sg.grp);
rp_info = pim_rp_find_match_group(pim, &grp);
if (rp_info) {
- sa->rp = rp_info->rp.rpf_addr;
- } else
- {
- sa->rp = pim->msdp.originator_id;
+ sa->rp = rp_info->rp.rpf_addr;
+ } else {
+ sa->rp = pim->msdp.originator_id;
}
- sa->rp = pim->msdp.originator_id;
pim_msdp_pkt_sa_tx_one(sa);
}
sa->flags &= ~PIM_MSDP_SAF_STALE;
diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c
index 4f1a4a1..be0be85 100644
--- a/pimd/pim_nb_config.c
+++ b/pimd/pim_nb_config.c
@@ -1504,11 +1504,19 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_re
*/
int lib_interface_pim_address_family_create(struct nb_cb_create_args *args)
{
+ struct interface *ifp;
+
switch (args->event) {
case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
case NB_EV_APPLY:
+ case NB_EV_ABORT:
+ break;
+ case NB_EV_PREPARE:
+ ifp = nb_running_get_entry(args->dnode, NULL, true);
+ if (ifp->info)
+ return NB_OK;
+
+ pim_if_new(ifp, false, false, false, false);
break;
}