]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/rfapi/rfapi_rib.c
*: conform with COMMUNITY.md formatting rules, via 'make indent'
[mirror_frr.git] / bgpd / rfapi / rfapi_rib.c
index 58da84ea32d7b501a535ce7657ae2bcdf7ae4812..2a8a465b70bfdb47c9c5994a5b880c7d025cf525 100644 (file)
@@ -207,7 +207,7 @@ void rfapiRibCheckCounts(
                }
        }
 
-       if (checkstats && bgp && bgp->rfapi) {
+       if (checkstats && bgp->rfapi) {
                if (t_pfx_active != bgp->rfapi->rib_prefix_count_total) {
                        vnc_zlog_debug_verbose(
                                "%s: actual total pfx count %u != running %u",
@@ -342,7 +342,7 @@ rfapiRibStartTimer(struct rfapi_descriptor *rfd, struct rfapi_info *ri,
 {
        struct thread *t = ri->timer;
        struct rfapi_rib_tcb *tcb = NULL;
-       char buf_prefix[BUFSIZ];
+       char buf_prefix[PREFIX_STRLEN];
 
        if (t) {
                tcb = t->arg;
@@ -363,7 +363,7 @@ rfapiRibStartTimer(struct rfapi_descriptor *rfd, struct rfapi_info *ri,
                UNSET_FLAG(tcb->flags, RFAPI_RIB_TCB_FLAG_DELETED);
        }
 
-       prefix2str(&rn->p, buf_prefix, BUFSIZ);
+       prefix2str(&rn->p, buf_prefix, sizeof(buf_prefix));
        vnc_zlog_debug_verbose("%s: rfd %p pfx %s life %u", __func__, rfd,
                               buf_prefix, ri->lifetime);
        ri->timer = NULL;
@@ -510,13 +510,13 @@ void rfapiRibClear(struct rfapi_descriptor *rfd)
                                 */
                                if (pn->info) {
                                        if (pn->info != (void *)1) {
-                                               list_delete(
-                                                       (struct list
-                                                                *)(pn->info));
+                                               list_delete_and_null(
+                                                       (struct list *
+                                                                *)(&pn->info));
                                        }
                                        pn->info = NULL;
-                                       route_unlock_node(
-                                               pn); /* linklist or 1 deleted */
+                                       /* linklist or 1 deleted */
+                                       route_unlock_node(pn);
                                }
                        }
                }
@@ -527,11 +527,11 @@ void rfapiRibClear(struct rfapi_descriptor *rfd)
 
                                        struct rfapi_info *ri;
 
-                                       while (0
-                                              == skiplist_first(
-                                                         (struct skiplist *)
-                                                                 rn->info,
-                                                         NULL, (void **)&ri)) {
+                                       while (0 == skiplist_first(
+                                                           (struct skiplist *)
+                                                                   rn->info,
+                                                           NULL,
+                                                           (void **)&ri)) {
 
                                                rfapi_info_free(ri);
                                                skiplist_delete_first(
@@ -687,21 +687,18 @@ static void rfapiRibBi2Ri(struct bgp_info *bi, struct rfapi_info *ri,
                /* copy from RD already stored in bi, so we don't need it_node
                 */
                memcpy(&vo->v.l2addr.macaddr, bi->extra->vnc.import.rd.val + 2,
-                      ETHER_ADDR_LEN);
-
-               if (bi->attr) {
-                       (void)rfapiEcommunityGetLNI(
-                               bi->attr->ecommunity,
-                               &vo->v.l2addr.logical_net_id);
-                       (void)rfapiEcommunityGetEthernetTag(
-                               bi->attr->ecommunity, &vo->v.l2addr.tag_id);
-               }
+                      ETH_ALEN);
+
+               (void)rfapiEcommunityGetLNI(bi->attr->ecommunity,
+                                           &vo->v.l2addr.logical_net_id);
+               (void)rfapiEcommunityGetEthernetTag(bi->attr->ecommunity,
+                                                   &vo->v.l2addr.tag_id);
 
                /* local_nve_id comes from RD */
                vo->v.l2addr.local_nve_id = bi->extra->vnc.import.rd.val[1];
 
                /* label comes from MP_REACH_NLRI label */
-               vo->v.l2addr.label = decode_label(&bi->extra->label);
+               vo->v.l2addr.label = decode_label(&bi->extra->label[0]);
 
                rfapi_vn_options_free(
                        ri->vn_options); /* maybe free old version */
@@ -711,7 +708,7 @@ static void rfapiRibBi2Ri(struct bgp_info *bi, struct rfapi_info *ri,
        /*
         * If there is an auxiliary IP address (L2 can have it), copy it
         */
-       if (bi && bi->extra && bi->extra->vnc.import.aux_prefix.family) {
+       if (bi->extra && bi->extra->vnc.import.aux_prefix.family) {
                ri->rk.aux_prefix = bi->extra->vnc.import.aux_prefix;
        }
 }
@@ -856,7 +853,7 @@ static void process_pending_node(struct bgp *bgp, struct rfapi_descriptor *rfd,
        struct list *lPendCost = NULL;
        struct list *delete_list = NULL;
        int printedprefix = 0;
-       char buf_prefix[BUFSIZ];
+       char buf_prefix[PREFIX_STRLEN];
        int rib_node_started_nonempty = 0;
        int sendingsomeroutes = 0;
 
@@ -867,7 +864,7 @@ static void process_pending_node(struct bgp *bgp, struct rfapi_descriptor *rfd,
 #endif
 
        assert(pn);
-       prefix2str(&pn->p, buf_prefix, BUFSIZ);
+       prefix2str(&pn->p, buf_prefix, sizeof(buf_prefix));
        vnc_zlog_debug_verbose("%s: afi=%d, %s pn->info=%p", __func__, afi,
                               buf_prefix, pn->info);
 
@@ -917,8 +914,8 @@ static void process_pending_node(struct bgp *bgp, struct rfapi_descriptor *rfd,
                        while (0
                               == skiplist_first(slRibPt, NULL, (void **)&ri)) {
 
-                               char buf[BUFSIZ];
-                               char buf2[BUFSIZ];
+                               char buf[PREFIX_STRLEN];
+                               char buf2[PREFIX_STRLEN];
 
                                listnode_add(delete_list, ri);
                                vnc_zlog_debug_verbose(
@@ -936,8 +933,8 @@ static void process_pending_node(struct bgp *bgp, struct rfapi_descriptor *rfd,
                                        ri->timer = NULL;
                                }
 
-                               prefix2str(&ri->rk.vn, buf, BUFSIZ);
-                               prefix2str(&ri->un, buf2, BUFSIZ);
+                               prefix2str(&ri->rk.vn, buf, sizeof(buf));
+                               prefix2str(&ri->un, buf2, sizeof(buf2));
                                vnc_zlog_debug_verbose(
                                        "%s:   put dl pfx=%s vn=%s un=%s cost=%d life=%d vn_options=%p",
                                        __func__, buf_prefix, buf, buf2,
@@ -1127,7 +1124,7 @@ static void process_pending_node(struct bgp *bgp, struct rfapi_descriptor *rfd,
 
                        } else {
 
-                               char buf_rd[BUFSIZ];
+                               char buf_rd[RD_ADDRSTRLEN];
 
                                /* not found: add new route to RIB */
                                ori = rfapi_info_new();
@@ -1406,13 +1403,15 @@ callback:
                                        ri->last_sent_time = rfapi_time(NULL);
 #if DEBUG_RIB_SL_RD
                                        {
-                                               char buf_rd[BUFSIZ];
-                                               prefix_rd2str(&ri->rk.rd,
-                                                             buf_rd,
-                                                             sizeof(buf_rd));
+                                               char buf_rd[RD_ADDRSTRLEN];
+
                                                vnc_zlog_debug_verbose(
                                                        "%s: move route to recently deleted list, rd=%s",
-                                                       __func__, buf_rd);
+                                                       __func__,
+                                                       prefix_rd2str(
+                                                               &ri->rk.rd,
+                                                               buf_rd,
+                                                               sizeof(buf_rd)));
                                        }
 #endif
 
@@ -1435,7 +1434,7 @@ callback:
                }
 
                delete_list->del = (void (*)(void *))rfapi_info_free;
-               list_delete(delete_list);
+               list_delete_and_null(&delete_list);
        }
 
        RFAPI_RIB_CHECK_COUNTS(0, 0);
@@ -1450,7 +1449,7 @@ callback:
                route_unlock_node(pn);
        }
        if (lPendCost) {
-               list_delete(lPendCost);
+               list_delete_and_null(&lPendCost);
                pn->info = NULL;
                route_unlock_node(pn);
        }
@@ -1596,7 +1595,7 @@ void rfapiRibUpdatePendingNode(
        afi_t afi;
        uint32_t queued_flag;
        int count = 0;
-       char buf[BUFSIZ];
+       char buf[PREFIX_STRLEN];
 
        vnc_zlog_debug_verbose("%s: entry", __func__);
 
@@ -1609,7 +1608,7 @@ void rfapiRibUpdatePendingNode(
 
        prefix = &it_node->p;
        afi = family2afi(prefix->family);
-       prefix2str(prefix, buf, BUFSIZ);
+       prefix2str(prefix, buf, sizeof(buf));
        vnc_zlog_debug_verbose("%s: prefix=%s", __func__, buf);
 
        pn = route_node_get(rfd->rib_pending[afi], prefix);
@@ -1634,7 +1633,7 @@ void rfapiRibUpdatePendingNode(
         */
        if (pn->info) {
                if (pn->info != (void *)1) {
-                       list_delete((struct list *)(pn->info));
+                       list_delete_and_null((struct list **)(&pn->info));
                }
                pn->info = NULL;
                route_unlock_node(pn); /* linklist or 1 deleted */
@@ -1669,7 +1668,7 @@ void rfapiRibUpdatePendingNode(
 
                        struct prefix pfx_vn;
 
-                       rfapiRaddr2Qprefix(&rfd->vn_addr, &pfx_vn);
+                       assert(!rfapiRaddr2Qprefix(&rfd->vn_addr, &pfx_vn));
                        if (prefix_same(&pfx_vn, &pfx_nh))
                                continue;
                }
@@ -1815,9 +1814,9 @@ int rfapiRibFTDFilterRecentPrefix(
 
 #if DEBUG_FTD_FILTER_RECENT
        {
-               char buf_pfx[BUFSIZ];
+               char buf_pfx[PREFIX_STRLEN];
 
-               prefix2str(&it_rn->p, buf_pfx, BUFSIZ);
+               prefix2str(&it_rn->p, buf_pfx, sizeof(buf_pfx));
                vnc_zlog_debug_verbose("%s: prefix %s", __func__, buf_pfx);
        }
 #endif
@@ -1979,14 +1978,15 @@ rfapiRibPreload(struct bgp *bgp, struct rfapi_descriptor *rfd,
 
 #if DEBUG_NHL
                {
-                       char str_vn[BUFSIZ];
-                       char str_aux_prefix[BUFSIZ];
+                       char str_vn[PREFIX_STRLEN];
+                       char str_aux_prefix[PREFIX_STRLEN];
 
                        str_vn[0] = 0;
                        str_aux_prefix[0] = 0;
 
-                       prefix2str(&rk.vn, str_vn, BUFSIZ);
-                       prefix2str(&rk.aux_prefix, str_aux_prefix, BUFSIZ);
+                       prefix2str(&rk.vn, str_vn, sizeof(str_vn));
+                       prefix2str(&rk.aux_prefix, str_aux_prefix,
+                                  sizeof(str_aux_prefix));
 
                        if (!rk.aux_prefix.family) {
                        }
@@ -2076,11 +2076,11 @@ rfapiRibPreload(struct bgp *bgp, struct rfapi_descriptor *rfd,
                        route_unlock_node(trn);
 
                {
-                       char str_pfx[BUFSIZ];
-                       char str_pfx_vn[BUFSIZ];
+                       char str_pfx[PREFIX_STRLEN];
+                       char str_pfx_vn[PREFIX_STRLEN];
 
-                       prefix2str(&pfx, str_pfx, BUFSIZ);
-                       prefix2str(&rk.vn, str_pfx_vn, BUFSIZ);
+                       prefix2str(&pfx, str_pfx, sizeof(str_pfx));
+                       prefix2str(&rk.vn, str_pfx_vn, sizeof(str_pfx_vn));
                        vnc_zlog_debug_verbose(
                                "%s:   added pfx=%s nh[vn]=%s, cost=%u, lifetime=%u, allowed=%d",
                                __func__, str_pfx, str_pfx_vn, nhp->prefix.cost,
@@ -2115,9 +2115,9 @@ void rfapiRibPendingDeleteRoute(struct bgp *bgp, struct rfapi_import_table *it,
 {
        struct rfapi_descriptor *rfd;
        struct listnode *node;
-       char buf[BUFSIZ];
+       char buf[PREFIX_STRLEN];
 
-       prefix2str(&it_node->p, buf, BUFSIZ);
+       prefix2str(&it_node->p, buf, sizeof(buf));
        vnc_zlog_debug_verbose("%s: entry, it=%p, afi=%d, it_node=%p, pfx=%s",
                               __func__, it, afi, it_node, buf);
 
@@ -2236,9 +2236,12 @@ void rfapiRibShowResponsesSummary(void *stream)
        struct rfapi_descriptor *rfd;
        struct listnode *node;
 
-
        if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0)
                return;
+       if (!bgp) {
+               fp(out, "Unable to find default BGP instance\n");
+               return;
+       }
 
        fp(out, "%-24s ", "Responses: (Prefixes)");
        fp(out, "%-8s %-8u ", "Active:", bgp->rfapi->rib_prefix_count_total);
@@ -2288,21 +2291,21 @@ static int print_rib_sl(int (*fp)(void *, const char *, ...), struct vty *vty,
        for (rc = skiplist_next(sl, NULL, (void **)&ri, &cursor); !rc;
             rc = skiplist_next(sl, NULL, (void **)&ri, &cursor)) {
 
-               char str_vn[BUFSIZ];
-               char str_un[BUFSIZ];
+               char str_vn[PREFIX_STRLEN];
+               char str_un[PREFIX_STRLEN];
                char str_lifetime[BUFSIZ];
                char str_age[BUFSIZ];
                char *p;
-               char str_rd[BUFSIZ];
+               char str_rd[RD_ADDRSTRLEN];
 
                ++routes_displayed;
 
-               prefix2str(&ri->rk.vn, str_vn, BUFSIZ);
+               prefix2str(&ri->rk.vn, str_vn, sizeof(str_vn));
                p = index(str_vn, '/');
                if (p)
                        *p = 0;
 
-               prefix2str(&ri->un, str_un, BUFSIZ);
+               prefix2str(&ri->un, str_un, sizeof(str_un));
                p = index(str_un, '/');
                if (p)
                        *p = 0;
@@ -2323,11 +2326,10 @@ static int print_rib_sl(int (*fp)(void *, const char *, ...), struct vty *vty,
 
                str_rd[0] = 0; /* start empty */
 #if DEBUG_RIB_SL_RD
-               str_rd[0] = ' ';
-               prefix_rd2str(&ri->rk.rd, str_rd + 1, BUFSIZ - 1);
+               prefix_rd2str(&ri->rk.rd, str_rd, sizeof(str_rd));
 #endif
 
-               fp(out, " %c %-20s %-15s %-15s %-4u %-8s %-8s%s\n",
+               fp(out, " %c %-20s %-15s %-15s %-4u %-8s %-8s %s\n",
                   deleted ? 'r' : ' ', *printedprefix ? "" : str_pfx, str_vn,
                   str_un, ri->cost, str_lifetime, str_age, str_rd);
 
@@ -2350,13 +2352,13 @@ static void rfapiRibShowRibSl(void *stream, struct prefix *pfx,
        const char *vty_newline;
 
        int nhs_displayed = 0;
-       char str_pfx[BUFSIZ];
+       char str_pfx[PREFIX_STRLEN];
        int printedprefix = 0;
 
        if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0)
                return;
 
-       prefix2str(pfx, str_pfx, BUFSIZ);
+       prefix2str(pfx, str_pfx, sizeof(str_pfx));
 
        nhs_displayed +=
                print_rib_sl(fp, vty, out, sl, 0, str_pfx, &printedprefix);
@@ -2388,6 +2390,11 @@ void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,
 
        if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0)
                return;
+       if (!bgp) {
+               fp(out, "Unable to find default BGP instance\n");
+               return;
+       }
+
        /*
         * loop over NVEs
         */
@@ -2411,7 +2418,7 @@ void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,
                             rn = route_next(rn)) {
 
                                struct skiplist *sl;
-                               char str_pfx[BUFSIZ];
+                               char str_pfx[PREFIX_STRLEN];
                                int printedprefix = 0;
 
                                if (!show_removed)
@@ -2449,7 +2456,7 @@ void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,
 #else
                                           "Remaining"
 #endif
-                                       );
+                                          );
                                }
                                if (!printednve) {
                                        char str_vn[BUFSIZ];
@@ -2465,7 +2472,7 @@ void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,
                                                                str_un,
                                                                BUFSIZ));
                                }
-                               prefix2str(&rn->p, str_pfx, BUFSIZ);
+                               prefix2str(&rn->p, str_pfx, sizeof(str_pfx));
                                // fp(out, "  %s\n", buf);  /* prefix */
 
                                routes_displayed++;