summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_packet.c18
-rw-r--r--bgpd/bgp_vty.c10
-rw-r--r--ospf6d/ospf6_top.c2
-rw-r--r--pimd/pim_cmd.c11
-rw-r--r--pimd/pim_nb_config.c7
-rw-r--r--tools/coccinelle/zlog_no_newline.cocci20
6 files changed, 53 insertions, 15 deletions
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 4fdb92ce7e..bb2dbc9427 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -337,11 +337,13 @@ static void bgp_write_proceed_actions(struct peer *peer)
struct peer_af *paf;
struct bpacket *next_pkt;
struct update_subgroup *subgrp;
+ enum bgp_af_index index;
- FOREACH_AFI_SAFI (afi, safi) {
- paf = peer_af_find(peer, afi, safi);
+ for (index = BGP_AF_START; index < BGP_AF_MAX; index++) {
+ paf = peer->peer_af_array[index];
if (!paf)
continue;
+
subgrp = paf->subgroup;
if (!subgrp)
continue;
@@ -364,6 +366,9 @@ static void bgp_write_proceed_actions(struct peer *peer)
return;
}
+ afi = paf->afi;
+ safi = paf->safi;
+
/* No packets to send, see if EOR is pending */
if (CHECK_FLAG(peer->cap, PEER_CAP_RESTART_RCV)) {
if (!subgrp->t_coalesce && peer->afc_nego[afi][safi]
@@ -415,11 +420,16 @@ int bgp_generate_updgrp_packets(struct thread *thread)
return 0;
do {
+ enum bgp_af_index index;
+
s = NULL;
- FOREACH_AFI_SAFI (afi, safi) {
- paf = peer_af_find(peer, afi, safi);
+ for (index = BGP_AF_START; index < BGP_AF_MAX; index++) {
+ paf = peer->peer_af_array[index];
if (!paf || !PAF_SUBGRP(paf))
continue;
+
+ afi = paf->afi;
+ safi = paf->safi;
next_pkt = paf->next_pkt_to_send;
/*
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 8a3e74e8a4..14f4fb7310 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -912,13 +912,19 @@ static int bgp_peer_clear(struct peer *peer, afi_t afi, safi_t safi,
if ((afi == AFI_UNSPEC) && (safi == SAFI_UNSPEC)) {
afi_t tmp_afi;
safi_t tmp_safi;
+ enum bgp_af_index index;
+
+ for (index = BGP_AF_START; index < BGP_AF_MAX; index++) {
+ paf = peer->peer_af_array[index];
+ if (!paf)
+ continue;
- FOREACH_AFI_SAFI (tmp_afi, tmp_safi) {
- paf = peer_af_find(peer, tmp_afi, tmp_safi);
if (paf && paf->subgroup)
SET_FLAG(paf->subgroup->sflags,
SUBGRP_STATUS_FORCE_UPDATES);
+ tmp_afi = paf->afi;
+ tmp_safi = paf->safi;
if (!peer->afc[tmp_afi][tmp_safi])
continue;
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index 894ebc7681..6fe7055202 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -651,7 +651,7 @@ bool ospf6_router_id_update(struct ospf6 *ospf6, bool init)
for (ALL_LIST_ELEMENTS_RO(ospf6->area_list, node, oa)) {
if (oa->full_nbrs) {
zlog_err(
- "%s: cannot update router-id. Run the \"clear ipv6 ospf6 process\" command\n",
+ "%s: cannot update router-id. Run the \"clear ipv6 ospf6 process\" command",
__func__);
return false;
}
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 14aa710524..4cd94e0df9 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -3842,7 +3842,7 @@ static void pim_cli_legacy_mesh_group_behavior(struct vty *vty,
xpath_member_value)) {
member_dnode = yang_dnode_get(vty->candidate_config->dnode,
xpath_member_value);
- if (!yang_is_last_list_dnode(member_dnode))
+ if (!member_dnode || !yang_is_last_list_dnode(member_dnode))
return;
}
@@ -4140,10 +4140,9 @@ static void clear_pim_bsr_db(struct pim_instance *pim)
rpnode->info = NULL;
route_unlock_node(rpnode);
route_unlock_node(rpnode);
+ XFREE(MTYPE_PIM_RP, rp_info);
}
- XFREE(MTYPE_PIM_RP, rp_info);
-
pim_free_bsgrp_node(bsgrp->scope->bsrp_table, &bsgrp->group);
pim_free_bsgrp_data(bsgrp);
}
@@ -9762,7 +9761,7 @@ DEFPY(no_ip_msdp_mesh_group_member,
return CMD_WARNING_CONFIG_FAILED;
}
- nb_cli_enqueue_change(vty, xpath_value, NB_OP_DESTROY, NULL);
+ nb_cli_enqueue_change(vty, xpath_member_value, NB_OP_DESTROY, NULL);
/*
* If this is the last member, then we must remove the group altogether
@@ -9796,7 +9795,7 @@ DEFPY(ip_msdp_mesh_group_source,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL);
- /* Create mesh group member. */
+ /* Create mesh group source. */
strlcat(xpath_value, "/source", sizeof(xpath_value));
nb_cli_enqueue_change(vty, xpath_value, NB_OP_MODIFY, saddr_str);
@@ -9827,7 +9826,7 @@ DEFPY(no_ip_msdp_mesh_group_source,
"frr-pim:pimd", "pim", vrfname, "frr-routing:ipv4", gname);
nb_cli_enqueue_change(vty, xpath_value, NB_OP_CREATE, NULL);
- /* Create mesh group member. */
+ /* Create mesh group source. */
strlcat(xpath_value, "/source", sizeof(xpath_value));
nb_cli_enqueue_change(vty, xpath_value, NB_OP_DESTROY, NULL);
diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c
index f4627cbcc2..b9da8ec068 100644
--- a/pimd/pim_nb_config.c
+++ b/pimd/pim_nb_config.c
@@ -1168,6 +1168,7 @@ int pim_msdp_mesh_group_members_destroy(struct nb_cb_destroy_args *args)
{
struct pim_msdp_mg_mbr *mbr;
struct pim_msdp_mg *mg;
+ const struct lyd_node *mg_dnode;
switch (args->event) {
case NB_EV_VALIDATE:
@@ -1176,9 +1177,11 @@ int pim_msdp_mesh_group_members_destroy(struct nb_cb_destroy_args *args)
break;
case NB_EV_APPLY:
mbr = nb_running_get_entry(args->dnode, NULL, true);
- mg = nb_running_get_entry(args->dnode, "../", true);
-
+ mg_dnode =
+ yang_dnode_get_parent(args->dnode, "msdp-mesh-groups");
+ mg = nb_running_get_entry(mg_dnode, NULL, true);
pim_msdp_mg_mbr_del(mg, mbr);
+ nb_running_unset_entry(args->dnode);
break;
}
diff --git a/tools/coccinelle/zlog_no_newline.cocci b/tools/coccinelle/zlog_no_newline.cocci
new file mode 100644
index 0000000000..20cf9d2c78
--- /dev/null
+++ b/tools/coccinelle/zlog_no_newline.cocci
@@ -0,0 +1,20 @@
+// zlog_* should not have \n or \r at the end usually.
+// spatch --sp-file tools/coccinelle/zlog_no_newline.cocci --macro-file tools/cocci.h ./ 2>/dev/null
+
+@r@
+expression fmt;
+identifier func =~ "zlog_";
+position p;
+@@
+(
+ func(fmt)@p
+|
+ func(fmt, ...)@p
+)
+
+@script:python@
+fmt << r.fmt;
+p << r.p;
+@@
+if "\\n" in str(fmt) or "\\r" in str(fmt):
+ print("Newline in logging function detected %s:%s:%s:%s" % (p[0].file, p[0].line, p[0].column, fmt))