]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #11804 from donaldsharp/aug_coverity_update
authorRuss White <russ@riw.us>
Mon, 15 Aug 2022 22:10:03 +0000 (18:10 -0400)
committerGitHub <noreply@github.com>
Mon, 15 Aug 2022 22:10:03 +0000 (18:10 -0400)
Aug coverity update

doc/user/bgp.rst
ospf6d/ospf6_message.c
ospfd/ospf_flood.c
ospfd/ospf_interface.c
ospfd/ospf_interface.h
ospfd/ospf_nsm.c
ospfd/ospf_packet.c
ospfd/ospf_sr.c
ospfd/ospf_vty.c
zebra/zebra_vxlan.c

index e7e13631cc8b2811f812d65f609f6787226c61d3..86cd513b57a45cfd977e379cae5ed2b1be9e0c25 100644 (file)
@@ -1672,7 +1672,7 @@ Configuring Peers
 
 .. clicmd:: bgp fast-external-failover
 
-   This command causes bgp to not take down ebgp peers immediately
+   This command causes bgp to take down ebgp peers immediately
    when a link flaps.  `bgp fast-external-failover` is the default
    and will not be displayed as part of a `show run`.  The no form
    of the command turns off this ability.
index 93a062b215f5f1f9d81d026d8d95019dff42eae6..360a9db0d6e05a983339aec4b0fa3e76249375e4 100644 (file)
@@ -2086,7 +2086,6 @@ static void ospf6_write(struct thread *thread)
 {
        struct ospf6 *ospf6 = THREAD_ARG(thread);
        struct ospf6_interface *oi;
-       struct ospf6_interface *last_serviced_oi = NULL;
        struct ospf6_header *oh;
        struct ospf6_packet *op;
        struct listnode *node;
@@ -2106,9 +2105,7 @@ static void ospf6_write(struct thread *thread)
        assert(node);
        oi = listgetdata(node);
 
-       while ((pkt_count < ospf6->write_oi_count) && oi
-              && (last_serviced_oi != oi)) {
-
+       while ((pkt_count < ospf6->write_oi_count) && oi) {
                op = ospf6_fifo_head(oi->obuf);
                assert(op);
                assert(op->length >= OSPF6_HEADER_SIZE);
@@ -2221,7 +2218,6 @@ static void ospf6_write(struct thread *thread)
                list_delete_node(ospf6->oi_write_q, node);
                if (ospf6_fifo_head(oi->obuf) == NULL) {
                        oi->on_write_q = 0;
-                       last_serviced_oi = NULL;
                        oi = NULL;
                } else {
                        listnode_add(ospf6->oi_write_q, oi);
index 848f3407503e5bf7862cb10ceb4565aedb1281a8..fb3fb21e080209b04910a6ca3f9efc6cd86e3aa4 100644 (file)
@@ -638,13 +638,15 @@ int ospf_flood_through_interface(struct ospf_interface *oi,
        if (oi->type == OSPF_IFTYPE_NBMA) {
                struct ospf_neighbor *nbr;
 
-               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
-                       if ((nbr = rn->info) != NULL)
-                               if (nbr != oi->nbr_self
-                                   && nbr->state >= NSM_Exchange)
-                                       ospf_ls_upd_send_lsa(
-                                               nbr, lsa,
-                                               OSPF_SEND_PACKET_DIRECT);
+               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
+                       nbr = rn->info;
+
+                       if (!nbr)
+                               continue;
+                       if (nbr != oi->nbr_self && nbr->state >= NSM_Exchange)
+                               ospf_ls_upd_send_lsa(nbr, lsa,
+                                                    OSPF_SEND_PACKET_DIRECT);
+               }
        } else
                ospf_ls_upd_send_lsa(oi->nbr_self, lsa,
                                     OSPF_SEND_PACKET_INDIRECT);
@@ -991,18 +993,20 @@ static void ospf_ls_retransmit_delete_nbr_if(struct ospf_interface *oi,
        struct ospf_lsa *lsr;
 
        if (ospf_if_is_enable(oi))
-               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
+               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
                        /* If LSA find in LS-retransmit list, then remove it. */
-                       if ((nbr = rn->info) != NULL) {
-                               lsr = ospf_ls_retransmit_lookup(nbr, lsa);
+                       nbr = rn->info;
 
-                               /* If LSA find in ls-retransmit list, remove it.
-                                */
-                               if (lsr != NULL
-                                   && lsr->data->ls_seqnum
-                                              == lsa->data->ls_seqnum)
-                                       ospf_ls_retransmit_delete(nbr, lsr);
-                       }
+                       if (!nbr)
+                               continue;
+
+                       lsr = ospf_ls_retransmit_lookup(nbr, lsa);
+
+                       /* If LSA find in ls-retransmit list, remove it. */
+                       if (lsr != NULL &&
+                           lsr->data->ls_seqnum == lsa->data->ls_seqnum)
+                               ospf_ls_retransmit_delete(nbr, lsr);
+               }
 }
 
 void ospf_ls_retransmit_delete_nbr_area(struct ospf_area *area,
index 633ab051313e08892f609c89fea3b50a0c237d9b..2a758d55838e63f9dcf59b00779c216baaabe068 100644 (file)
@@ -66,15 +66,16 @@ int ospf_interface_neighbor_count(struct ospf_interface *oi)
 
        for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
                nbr = rn->info;
-               if (nbr) {
-                       /* Do not show myself. */
-                       if (nbr == oi->nbr_self)
-                               continue;
-                       /* Down state is not shown. */
-                       if (nbr->state == NSM_Down)
-                               continue;
-                       count++;
-               }
+               if (!nbr)
+                       continue;
+
+               /* Do not show myself. */
+               if (nbr == oi->nbr_self)
+                       continue;
+               /* Down state is not shown. */
+               if (nbr->state == NSM_Down)
+                       continue;
+               count++;
        }
 
        return count;
@@ -315,10 +316,11 @@ void ospf_if_cleanup(struct ospf_interface *oi)
        }
 
        /* send Neighbor event KillNbr to all associated neighbors. */
-       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
+       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
                if ((nbr = rn->info) != NULL)
                        if (nbr != oi->nbr_self)
                                OSPF_NSM_EVENT_EXECUTE(nbr, NSM_KillNbr);
+       }
 
        /* Cleanup Link State Acknowlegdment list. */
        for (ALL_LIST_ELEMENTS(oi->ls_ack, node, nnode, lsa))
@@ -492,6 +494,20 @@ struct ospf_interface *ospf_if_lookup_recv_if(struct ospf *ospf,
        return match;
 }
 
+void ospf_interface_fifo_flush(struct ospf_interface *oi)
+{
+       struct ospf *ospf = oi->ospf;
+
+       ospf_fifo_flush(oi->obuf);
+
+       if (oi->on_write_q) {
+               listnode_delete(ospf->oi_write_q, oi);
+               if (list_isempty(ospf->oi_write_q))
+                       THREAD_OFF(ospf->t_write);
+               oi->on_write_q = 0;
+       }
+}
+
 static void ospf_if_reset_stats(struct ospf_interface *oi)
 {
        oi->hello_in = oi->hello_out = 0;
@@ -503,19 +519,10 @@ static void ospf_if_reset_stats(struct ospf_interface *oi)
 
 void ospf_if_stream_unset(struct ospf_interface *oi)
 {
-       struct ospf *ospf = oi->ospf;
-
        /* flush the interface packet queue */
-       ospf_fifo_flush(oi->obuf);
+       ospf_interface_fifo_flush(oi);
        /*reset protocol stats */
        ospf_if_reset_stats(oi);
-
-       if (oi->on_write_q) {
-               listnode_delete(ospf->oi_write_q, oi);
-               if (list_isempty(ospf->oi_write_q))
-                       THREAD_OFF(ospf->t_write);
-               oi->on_write_q = 0;
-       }
 }
 
 
index e4410164067a75a8ec085eed26d961a40dde7757..51fc1bf3c3108c10f4fc426de984c485db4c533f 100644 (file)
@@ -351,6 +351,8 @@ extern void ospf_if_interface(struct interface *ifp);
 extern uint32_t ospf_if_count_area_params(struct interface *ifp);
 extern void ospf_reset_hello_timer(struct interface *ifp, struct in_addr addr,
                                   bool is_addr);
+
+extern void ospf_interface_fifo_flush(struct ospf_interface *oi);
 DECLARE_HOOK(ospf_vl_add, (struct ospf_vl_data * vd), (vd));
 DECLARE_HOOK(ospf_vl_delete, (struct ospf_vl_data * vd), (vd));
 
index 333389596b1b97f120ec24c5738914e5243ac11f..a27550853b0004f7ea1b556cc7e1c75df95cebc6 100644 (file)
@@ -382,6 +382,10 @@ static void nsm_clear_adj(struct ospf_neighbor *nbr)
 
 static int nsm_kill_nbr(struct ospf_neighbor *nbr)
 {
+       struct ospf_interface *oi = nbr->oi;
+       struct ospf_neighbor *on;
+       struct route_node *rn;
+
        /* killing nbr_self is invalid */
        if (nbr == nbr->oi->nbr_self) {
                assert(nbr != nbr->oi->nbr_self);
@@ -407,6 +411,35 @@ static int nsm_kill_nbr(struct ospf_neighbor *nbr)
                                ospf_get_name(nbr->oi->ospf));
        }
 
+       /*
+        * Do we have any neighbors that are also operating
+        * on this interface?
+        */
+       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
+               on = rn->info;
+
+               if (!on)
+                       continue;
+
+               if (on == nbr || on == oi->nbr_self)
+                       continue;
+
+               /*
+                * on is in some state where we might be
+                * sending packets on this interface
+                */
+               if (on->state > NSM_Down) {
+                       route_unlock_node(rn);
+                       return 0;
+               }
+       }
+       /*
+        * If we get here we know that this interface
+        * has no neighbors in a state where we could
+        * be sending packets.  Let's flush anything
+        * we got.
+        */
+       ospf_interface_fifo_flush(oi);
        return 0;
 }
 
index 4b3f30a3f19d0212de65d7c706db1786a9670b98..c5e26fa371f38c6baf947c39d58a1777f276c471 100644 (file)
@@ -623,7 +623,6 @@ static void ospf_write(struct thread *thread)
 {
        struct ospf *ospf = THREAD_ARG(thread);
        struct ospf_interface *oi;
-       struct ospf_interface *last_serviced_oi = NULL;
        struct ospf_packet *op;
        struct sockaddr_in sa_dst;
        struct ip iph;
@@ -664,13 +663,7 @@ static void ospf_write(struct thread *thread)
                ipid = (time(NULL) & 0xffff);
 #endif /* WANT_OSPF_WRITE_FRAGMENT */
 
-       while ((pkt_count < ospf->write_oi_count) && oi
-              && (last_serviced_oi != oi)) {
-               /* If there is only packet in the queue, the oi is removed from
-                  write-q, so fix up the last interface that was serviced */
-               if (last_serviced_oi == NULL) {
-                       last_serviced_oi = oi;
-               }
+       while ((pkt_count < ospf->write_oi_count) && oi) {
                pkt_count++;
 #ifdef WANT_OSPF_WRITE_FRAGMENT
                /* convenience - max OSPF data per packet */
@@ -853,11 +846,9 @@ static void ospf_write(struct thread *thread)
                list_delete_node(ospf->oi_write_q, node);
                if (ospf_fifo_head(oi->obuf) == NULL) {
                        oi->on_write_q = 0;
-                       last_serviced_oi = NULL;
                        oi = NULL;
-               } else {
+               } else
                        listnode_add(ospf->oi_write_q, oi);
-               }
 
                /* Setup to service from the head of the queue again */
                if (!list_isempty(ospf->oi_write_q)) {
@@ -3358,49 +3349,44 @@ static int ospf_make_hello(struct ospf_interface *oi, struct stream *s)
        stream_put_ipv4(s, BDR(oi).s_addr);
 
        /* Add neighbor seen. */
-       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
-               if ((nbr = rn->info))
-                       if (nbr->router_id.s_addr
-                           != INADDR_ANY) /* Ignore 0.0.0.0 node. */
-                               if (nbr->state
-                                   != NSM_Attempt) /* Ignore Down neighbor. */
-                                       if (nbr->state
-                                           != NSM_Down) /* This is myself for
-                                                           DR election. */
-                                               if (!IPV4_ADDR_SAME(
-                                                           &nbr->router_id,
-                                                           &oi->ospf->router_id)) {
-                                                       /* Check neighbor is
-                                                        * sane? */
-                                                       if (nbr->d_router.s_addr
-                                                                   != INADDR_ANY
-                                                           && IPV4_ADDR_SAME(
-                                                                   &nbr->d_router,
-                                                                   &oi->address
-                                                                            ->u
-                                                                            .prefix4)
-                                                           && IPV4_ADDR_SAME(
-                                                                   &nbr->bd_router,
-                                                                   &oi->address
-                                                                            ->u
-                                                                            .prefix4))
-                                                               flag = 1;
-
-                                                       /* Hello packet overflows interface MTU. */
-                                                       if (length + sizeof(uint32_t)
-                                                               > ospf_packet_max(oi)) {
-                                                               flog_err(
-                                                                       EC_OSPF_LARGE_HELLO,
-                                                                       "Oversized Hello packet! Larger than MTU. Not sending it out");
-                                                               return 0;
-                                                       }
-
-                                                       stream_put_ipv4(
-                                                               s,
-                                                               nbr->router_id
-                                                                       .s_addr);
-                                                       length += 4;
-                                               }
+       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
+               nbr = rn->info;
+
+               if (!nbr)
+                       continue;
+
+               /* Ignore the 0.0.0.0 node */
+               if (nbr->router_id.s_addr == INADDR_ANY)
+                       continue;
+
+               /* Ignore Down neighbor */
+               if (nbr->state == NSM_Attempt)
+                       continue;
+
+               /* This is myself for DR election */
+               if (nbr->state == NSM_Down)
+                       continue;
+
+               if (IPV4_ADDR_SAME(&nbr->router_id, &oi->ospf->router_id))
+                       continue;
+               /* Check neighbor is  sane? */
+               if (nbr->d_router.s_addr != INADDR_ANY &&
+                   IPV4_ADDR_SAME(&nbr->d_router, &oi->address->u.prefix4) &&
+                   IPV4_ADDR_SAME(&nbr->bd_router, &oi->address->u.prefix4))
+                       flag = 1;
+
+               /* Hello packet overflows interface MTU.
+                */
+               if (length + sizeof(uint32_t) > ospf_packet_max(oi)) {
+                       flog_err(
+                               EC_OSPF_LARGE_HELLO,
+                               "Oversized Hello packet! Larger than MTU. Not sending it out");
+                       return 0;
+               }
+
+               stream_put_ipv4(s, nbr->router_id.s_addr);
+               length += 4;
+       }
 
        /* Let neighbor generate BackupSeen. */
        if (flag == 1)
@@ -3781,54 +3767,44 @@ void ospf_hello_send(struct ospf_interface *oi)
                struct ospf_neighbor *nbr;
                struct route_node *rn;
 
-               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
-                       if ((nbr = rn->info))
-                               if (nbr != oi->nbr_self)
-                                       if (nbr->state != NSM_Down) {
-                                               /*  RFC 2328  Section 9.5.1
-                                                   If the router is not
-                                                  eligible to become Designated
-                                                  Router,
-                                                   it must periodically send
-                                                  Hello Packets to both the
-                                                   Designated Router and the
-                                                  Backup Designated Router (if
-                                                  they
-                                                   exist).  */
-                                               if (PRIORITY(oi) == 0
-                                                   && IPV4_ADDR_CMP(
-                                                              &DR(oi),
-                                                              &nbr->address.u
-                                                                       .prefix4)
-                                                   && IPV4_ADDR_CMP(
-                                                              &BDR(oi),
-                                                              &nbr->address.u
-                                                                       .prefix4))
-                                                       continue;
-
-                                               /*  If the router is eligible to
-                                                  become Designated Router, it
-                                                   must periodically send Hello
-                                                  Packets to all neighbors that
-                                                   are also eligible. In
-                                                  addition, if the router is
-                                                  itself the
-                                                   Designated Router or Backup
-                                                  Designated Router, it must
-                                                  also
-                                                   send periodic Hello Packets
-                                                  to all other neighbors. */
-
-                                               if (nbr->priority == 0
-                                                   && oi->state == ISM_DROther)
-                                                       continue;
-                                               /* if oi->state == Waiting, send
-                                                * hello to all neighbors */
-                                               ospf_hello_send_sub(
-                                                       oi,
-                                                       nbr->address.u.prefix4
-                                                               .s_addr);
-                                       }
+               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
+                       nbr = rn->info;
+                       if (!nbr)
+                               continue;
+
+                       if (nbr == oi->nbr_self)
+                               continue;
+
+                       if (nbr->state == NSM_Down)
+                               continue;
+
+                       /*
+                        * RFC 2328  Section 9.5.1
+                        * If the router is not eligible to become Designated
+                        * Router, it must periodically send Hello Packets to
+                        * both the Designated Router and the Backup
+                        * Designated Router (if they exist).
+                        */
+                       if (PRIORITY(oi) == 0 &&
+                           IPV4_ADDR_CMP(&DR(oi), &nbr->address.u.prefix4) &&
+                           IPV4_ADDR_CMP(&BDR(oi), &nbr->address.u.prefix4))
+                               continue;
+
+                       /*
+                        * If the router is eligible to become Designated
+                        * Router, it must periodically send Hello Packets to
+                        * all neighbors that are also eligible. In addition,
+                        * if the router is itself the Designated Router or
+                        * Backup Designated Router, it must also send periodic
+                        * Hello Packets to all other neighbors.
+                        */
+                       if (nbr->priority == 0 && oi->state == ISM_DROther)
+                               continue;
+
+                       /* if oi->state == Waiting, send
+                        * hello to all neighbors */
+                       ospf_hello_send_sub(oi, nbr->address.u.prefix4.s_addr);
+               }
        } else {
                /* Decide destination address. */
                if (oi->type == OSPF_IFTYPE_VIRTUALLINK)
@@ -4300,14 +4276,18 @@ void ospf_ls_ack_send_delayed(struct ospf_interface *oi)
                struct ospf_neighbor *nbr;
                struct route_node *rn;
 
-               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
-                       if ((nbr = rn->info) != NULL)
-                               if (nbr != oi->nbr_self
-                                   && nbr->state >= NSM_Exchange)
-                                       while (listcount(oi->ls_ack))
-                                               ospf_ls_ack_send_list(
-                                                       oi, oi->ls_ack,
-                                                       nbr->address.u.prefix4);
+               for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
+                       nbr = rn->info;
+
+                       if (!nbr)
+                               continue;
+
+                       if (nbr != oi->nbr_self && nbr->state >= NSM_Exchange)
+                               while (listcount(oi->ls_ack))
+                                       ospf_ls_ack_send_list(
+                                               oi, oi->ls_ack,
+                                               nbr->address.u.prefix4);
+               }
                return;
        }
        if (oi->type == OSPF_IFTYPE_VIRTUALLINK)
index 2c7c80686cfd6bacf1b21627616f3a7490544648..3a71e55710823d87079ec374b1066617976a8572 100644 (file)
@@ -756,13 +756,14 @@ static struct ospf_neighbor *get_neighbor_by_addr(struct ospf *top,
        for (ALL_LIST_ELEMENTS_RO(top->oiflist, node, oi))
                for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
                        nbr = rn->info;
-                       if (nbr)
-                               if (IPV4_ADDR_SAME(&nbr->address.u.prefix4,
-                                                  &addr)
-                                   || IPV4_ADDR_SAME(&nbr->router_id, &addr)) {
-                                       route_unlock_node(rn);
-                                       return nbr;
-                               }
+                       if (!nbr)
+                               continue;
+
+                       if (IPV4_ADDR_SAME(&nbr->address.u.prefix4, &addr) ||
+                           IPV4_ADDR_SAME(&nbr->router_id, &addr)) {
+                               route_unlock_node(rn);
+                               return nbr;
+                       }
                }
        return NULL;
 }
index 1c22fad669206b48b72b453f3f1b7d86733ff045..a6572794aac801d318754bdebd62dccf391fb15e 100644 (file)
@@ -4008,13 +4008,15 @@ static void show_ip_ospf_interface_traffic_sub(struct vty *vty,
                                    oi->ls_ack_in);
                json_object_int_add(json_interface_sub, "lsAckOut",
                                    oi->ls_ack_out);
+               json_object_int_add(json_interface_sub, "packetsQueued",
+                                   listcount(oi->obuf));
        } else {
                vty_out(vty,
-                       "%-10s %8u/%-8u %7u/%-7u %7u/%-7u %7u/%-7u %7u/%-7u\n",
+                       "%-10s %8u/%-8u %7u/%-7u %7u/%-7u %7u/%-7u %7u/%-7u %12lu\n",
                        oi->ifp->name, oi->hello_in, oi->hello_out,
                        oi->db_desc_in, oi->db_desc_out, oi->ls_req_in,
                        oi->ls_req_out, oi->ls_upd_in, oi->ls_upd_out,
-                       oi->ls_ack_in, oi->ls_ack_out);
+                       oi->ls_ack_in, oi->ls_ack_out, listcount(oi->obuf));
        }
 }
 
@@ -4030,14 +4032,14 @@ static int show_ip_ospf_interface_traffic_common(
 
        if (!use_json && !display_once) {
                vty_out(vty, "\n");
-               vty_out(vty, "%-12s%-17s%-17s%-17s%-17s%-17s\n", "Interface",
-                       "    HELLO", "    DB-Desc", "   LS-Req", "   LS-Update",
-                       "   LS-Ack");
-               vty_out(vty, "%-10s%-18s%-18s%-17s%-17s%-17s\n", "",
+               vty_out(vty, "%-12s%-17s%-17s%-17s%-17s%-17s%-17s\n",
+                       "Interface", "    HELLO", "    DB-Desc", "   LS-Req",
+                       "   LS-Update", "   LS-Ack", "    Packets");
+               vty_out(vty, "%-10s%-18s%-18s%-17s%-17s%-17s%-17s\n", "",
                        "      Rx/Tx", "     Rx/Tx", "    Rx/Tx", "    Rx/Tx",
-                       "    Rx/Tx");
+                       "    Rx/Tx", "    Queued");
                vty_out(vty,
-                       "--------------------------------------------------------------------------------------------\n");
+                       "-------------------------------------------------------------------------------------------------------------\n");
        } else if (use_json) {
                if (use_vrf)
                        json_vrf = json_object_new_object();
@@ -4476,19 +4478,22 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
        struct ospf_neighbor *nbr, *prev_nbr = NULL;
 
        for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
-               if ((nbr = rn->info)) {
-                       /* Do not show myself. */
-                       if (nbr == oi->nbr_self)
-                               continue;
-                       /* Down state is not shown. */
-                       if (nbr->state == NSM_Down)
-                               continue;
+               nbr = rn->info;
 
-                       prev_nbr = nbr;
+               if (!nbr)
+                       continue;
 
-                       show_ip_ospf_neighbour_brief(vty, nbr, prev_nbr, json,
-                                                    use_json);
-               }
+               /* Do not show myself. */
+               if (nbr == oi->nbr_self)
+                       continue;
+               /* Down state is not shown. */
+               if (nbr->state == NSM_Down)
+                       continue;
+
+               prev_nbr = nbr;
+
+               show_ip_ospf_neighbour_brief(vty, nbr, prev_nbr, json,
+                                            use_json);
        }
 }
 
@@ -5402,14 +5407,17 @@ static int show_ip_ospf_neighbor_id_common(struct vty *vty, struct ospf *ospf,
        ospf_show_vrf_name(ospf, vty, json, use_vrf);
 
        for (ALL_LIST_ELEMENTS_RO(ospf->oiflist, node, oi)) {
-               if ((nbr = ospf_nbr_lookup_by_routerid(oi->nbrs, router_id))) {
-                       if (is_detail)
-                               show_ip_ospf_neighbor_detail_sub(
-                                       vty, oi, nbr, NULL, json, use_json);
-                       else
-                               show_ip_ospf_neighbour_brief(vty, nbr, NULL,
-                                                            json, use_json);
-               }
+               nbr = ospf_nbr_lookup_by_routerid(oi->nbrs, router_id);
+
+               if (!nbr)
+                       continue;
+
+               if (is_detail)
+                       show_ip_ospf_neighbor_detail_sub(vty, oi, nbr, NULL,
+                                                        json, use_json);
+               else
+                       show_ip_ospf_neighbour_brief(vty, nbr, NULL, json,
+                                                    use_json);
        }
 
        if (use_json)
@@ -5498,16 +5506,19 @@ static int show_ip_ospf_neighbor_detail_common(struct vty *vty,
                struct ospf_neighbor *nbr, *prev_nbr = NULL;
 
                for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
-                       if ((nbr = rn->info)) {
-                               if (nbr != oi->nbr_self) {
-                                       if (nbr->state != NSM_Down) {
-                                               show_ip_ospf_neighbor_detail_sub(
-                                                       vty, oi, nbr, prev_nbr,
-                                                       json_nbr_sub, use_json);
-                                       }
+                       nbr = rn->info;
+
+                       if (!nbr)
+                               continue;
+
+                       if (nbr != oi->nbr_self) {
+                               if (nbr->state != NSM_Down) {
+                                       show_ip_ospf_neighbor_detail_sub(
+                                               vty, oi, nbr, prev_nbr,
+                                               json_nbr_sub, use_json);
                                }
-                               prev_nbr = nbr;
                        }
+                       prev_nbr = nbr;
                }
        }
 
@@ -5668,27 +5679,29 @@ static int show_ip_ospf_neighbor_detail_all_common(struct vty *vty,
                struct ospf_nbr_nbma *nbr_nbma;
 
                for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
-                       if ((nbr = rn->info)) {
-                               if (nbr != oi->nbr_self)
-                                       if (nbr->state != NSM_Down)
-                                               show_ip_ospf_neighbor_detail_sub(
-                                                       vty, oi, rn->info,
-                                                       prev_nbr,
-                                                       json_vrf, use_json);
-                               prev_nbr = nbr;
-                       }
+                       nbr = rn->info;
+
+                       if (!nbr)
+                               continue;
+
+                       if (nbr != oi->nbr_self)
+                               if (nbr->state != NSM_Down)
+                                       show_ip_ospf_neighbor_detail_sub(
+                                               vty, oi, rn->info, prev_nbr,
+                                               json_vrf, use_json);
+                       prev_nbr = nbr;
                }
 
-               if (oi->type == OSPF_IFTYPE_NBMA) {
-                       struct listnode *nd;
+               if (oi->type != OSPF_IFTYPE_NBMA)
+                       continue;
 
-                       for (ALL_LIST_ELEMENTS_RO(oi->nbr_nbma, nd, nbr_nbma)) {
-                               if (nbr_nbma->nbr == NULL
-                                   || nbr_nbma->nbr->state == NSM_Down)
-                                       show_ip_ospf_nbr_nbma_detail_sub(
-                                               vty, oi, nbr_nbma, use_json,
-                                               json_vrf);
-                       }
+               struct listnode *nd;
+
+               for (ALL_LIST_ELEMENTS_RO(oi->nbr_nbma, nd, nbr_nbma)) {
+                       if (nbr_nbma->nbr == NULL ||
+                           nbr_nbma->nbr->state == NSM_Down)
+                               show_ip_ospf_nbr_nbma_detail_sub(
+                                       vty, oi, nbr_nbma, use_json, json_vrf);
                }
        }
 
@@ -5853,19 +5866,25 @@ static int show_ip_ospf_neighbor_int_detail_common(struct vty *vty,
        }
 
        for (rn = route_top(IF_OIFS(ifp)); rn; rn = route_next(rn)) {
-               if ((oi = rn->info)) {
-                       for (nrn = route_top(oi->nbrs); nrn;
-                            nrn = route_next(nrn)) {
-                               if ((nbr = nrn->info)) {
-                                       if (nbr != oi->nbr_self) {
-                                               if (nbr->state != NSM_Down)
-                                                       show_ip_ospf_neighbor_detail_sub(
-                                                               vty, oi, nbr,
-                                                               NULL,
-                                                               json, use_json);
-                                       }
-                               }
-                       }
+               oi = rn->info;
+
+               if (!oi)
+                       continue;
+
+               for (nrn = route_top(oi->nbrs); nrn; nrn = route_next(nrn)) {
+                       nbr = nrn->info;
+
+                       if (!nbr)
+                               continue;
+
+                       if (nbr == oi->nbr_self)
+                               continue;
+
+                       if (nbr->state == NSM_Down)
+                               continue;
+
+                       show_ip_ospf_neighbor_detail_sub(vty, oi, nbr, NULL,
+                                                        json, use_json);
                }
        }
 
@@ -8019,13 +8038,17 @@ static void ospf_nbr_timer_update(struct ospf_interface *oi)
        struct route_node *rn;
        struct ospf_neighbor *nbr;
 
-       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
-               if ((nbr = rn->info)) {
-                       nbr->v_inactivity = OSPF_IF_PARAM(oi, v_wait);
-                       nbr->v_db_desc = OSPF_IF_PARAM(oi, retransmit_interval);
-                       nbr->v_ls_req = OSPF_IF_PARAM(oi, retransmit_interval);
-                       nbr->v_ls_upd = OSPF_IF_PARAM(oi, retransmit_interval);
-               }
+       for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
+               nbr = rn->info;
+
+               if (!nbr)
+                       continue;
+
+               nbr->v_inactivity = OSPF_IF_PARAM(oi, v_wait);
+               nbr->v_db_desc = OSPF_IF_PARAM(oi, retransmit_interval);
+               nbr->v_ls_req = OSPF_IF_PARAM(oi, retransmit_interval);
+               nbr->v_ls_upd = OSPF_IF_PARAM(oi, retransmit_interval);
+       }
 }
 
 static int ospf_vty_dead_interval_set(struct vty *vty, const char *interval_str,
index 49689c6ac47eb02e980c2bdc98ac2f2a8cd8d214..5a6321ae7e538e944b4456fe2bb0bab25b4b2648 100644 (file)
@@ -4062,7 +4062,7 @@ int zebra_vxlan_dp_network_mac_add(struct interface *ifp,
        }
 
        /* If local MAC on a down local ES translate the network-mac-add
-        * to a local-inactive-mac-add
+        * to a local-active-mac-add
         */
        if (IS_ZEBRA_DEBUG_VXLAN || IS_ZEBRA_DEBUG_EVPN_MH_MAC)
                zlog_debug("dpAdd local-nw-MAC %pEA VID %u", macaddr, vid);