diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-08-05 09:56:23 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-08-05 09:56:23 +0000 |
commit | c15d6efd40655f717841d00839a43df1ead5cb26 (patch) | |
tree | 35d579f9a19170e2b39085669ca92533c2d161b4 /pimd | |
parent | Adding upstream version 10.0.1. (diff) | |
download | frr-upstream.tar.xz frr-upstream.zip |
Adding upstream version 10.1.upstream/10.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'pimd')
-rw-r--r-- | pimd/pim_cmd.c | 15 | ||||
-rw-r--r-- | pimd/pim_iface.c | 2 | ||||
-rw-r--r-- | pimd/pim_mroute.c | 12 | ||||
-rw-r--r-- | pimd/pim_msdp.c | 8 | ||||
-rw-r--r-- | pimd/pim_nb_config.c | 12 |
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; } |