]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #8942 from ton31337/fix/cleanups_2
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 6 Jul 2021 13:47:41 +0000 (09:47 -0400)
committerGitHub <noreply@github.com>
Tue, 6 Jul 2021 13:47:41 +0000 (09:47 -0400)
Another round of cleanup

21 files changed:
bfdd/dplane.c
bgpd/bgp_aspath.c
bgpd/bgp_attr.c
bgpd/bgp_evpn_mh.c
bgpd/bgp_mpath.c
bgpd/bgp_nht.c
bgpd/bgp_route.c
bgpd/bgp_routemap_nb_config.c
bgpd/bgp_updgrp_adv.c
bgpd/bgp_vty.c
bgpd/bgpd.c
lib/buffer.c
lib/csv.c
lib/link_state.c
lib/network.c
lib/ntop.c
lib/prefix.c
lib/sockopt.c
lib/stream.c
lib/zclient.c
tools/coccinelle/xcalloc-xmalloc.cocci [new file with mode: 0644]

index 6fb301d46a89a4a6be208f10057c7779b3ec4f8e..4b7f9ba7ace568af64493e1b1b850a8744720ec4 100644 (file)
@@ -651,8 +651,6 @@ static struct bfd_dplane_ctx *bfd_dplane_ctx_new(int sock)
        struct bfd_dplane_ctx *bdc;
 
        bdc = XCALLOC(MTYPE_BFDD_DPLANE_CTX, sizeof(*bdc));
-       if (bdc == NULL)
-               return NULL;
 
        bdc->sock = sock;
        bdc->inbuf = stream_new(BFD_DPLANE_CLIENT_BUF_SIZE);
index 25109e030b8d705ecb3cc4ae46c86672ae03a97a..3c67017dc7209856f52a995f63c469e25a60119f 100644 (file)
@@ -193,7 +193,8 @@ static struct assegment *assegment_prepend_asns(struct assegment *seg,
        if (num >= AS_SEGMENT_MAX)
                return seg; /* we don't do huge prepends */
 
-       if ((newas = assegment_data_new(seg->length + num)) == NULL)
+       newas = assegment_data_new(seg->length + num);
+       if (newas == NULL)
                return seg;
 
        for (i = 0; i < num; i++)
index 2f0751a5f045ed1ed98c589aa0c93761e1519b07..1bf48b225b17be0ee8ae4cb1bdafcabae9648e4d 100644 (file)
@@ -3317,7 +3317,8 @@ bgp_attr_parse_ret_t bgp_attr_parse(struct peer *peer, struct attr *attr,
        }
 
        /* Check all mandatory well-known attributes are present */
-       if ((ret = bgp_attr_check(peer, attr)) < 0)
+       ret = bgp_attr_check(peer, attr);
+       if (ret < 0)
                goto done;
 
        /*
index 4b90937f627ceaa7eb573d132e0325d092f85a20..34094a0bde9831d3d49154a658066c10bb651d47 100644 (file)
@@ -1311,7 +1311,7 @@ static void bgp_evpn_es_vtep_re_eval_active(struct bgp *bgp,
        bool old_active;
        bool new_active;
 
-       old_active = !!CHECK_FLAG(es_vtep->flags, BGP_EVPNES_VTEP_ACTIVE);
+       old_active = CHECK_FLAG(es_vtep->flags, BGP_EVPNES_VTEP_ACTIVE);
        /* currently we need an active EVI reference to use the VTEP as
         * a nexthop. this may change...
         */
@@ -1320,7 +1320,7 @@ static void bgp_evpn_es_vtep_re_eval_active(struct bgp *bgp,
        else
                UNSET_FLAG(es_vtep->flags, BGP_EVPNES_VTEP_ACTIVE);
 
-       new_active = !!CHECK_FLAG(es_vtep->flags, BGP_EVPNES_VTEP_ACTIVE);
+       new_active = CHECK_FLAG(es_vtep->flags, BGP_EVPNES_VTEP_ACTIVE);
 
        if ((old_active != new_active) || (new_active && param_change)) {
 
@@ -3119,7 +3119,7 @@ static void bgp_evpn_es_evi_vtep_re_eval_active(struct bgp *bgp,
        bool new_active;
        uint32_t ead_activity_flags;
 
-       old_active = !!CHECK_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_ACTIVE);
+       old_active = CHECK_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_ACTIVE);
 
        if (bgp_mh_info->ead_evi_rx)
                /* Both EAD-per-ES and EAD-per-EVI routes must be rxed from a PE
@@ -3135,7 +3135,7 @@ static void bgp_evpn_es_evi_vtep_re_eval_active(struct bgp *bgp,
        else
                UNSET_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_ACTIVE);
 
-       new_active = !!CHECK_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_ACTIVE);
+       new_active = CHECK_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_ACTIVE);
 
        if (old_active == new_active)
                return;
index d5fce115de4273a39493892a0c7fa60a4cb40b2a..8127428bc71dc8597f1e980cad539a7993e38024 100644 (file)
@@ -411,7 +411,8 @@ static void bgp_path_info_mpath_lb_update(struct bgp_path_info *path, bool set,
 {
        struct bgp_path_info_mpath *mpath;
 
-       if ((mpath = path->mpath) == NULL) {
+       mpath = path->mpath;
+       if (mpath == NULL) {
                if (!set || (cum_bw == 0 && !all_paths_lb))
                        return;
 
index 6f7424c5eadca1d5c53a911f0ecd67908e183c93..eb00a4641c8393d6d43a2e3a288cfe94d2743dda 100644 (file)
@@ -1053,7 +1053,7 @@ void evaluate_paths(struct bgp_nexthop_cache *bnc)
                    || path->attr->srte_color != 0)
                        SET_FLAG(path->flags, BGP_PATH_IGP_CHANGED);
 
-               path_valid = !!CHECK_FLAG(path->flags, BGP_PATH_VALID);
+               path_valid = CHECK_FLAG(path->flags, BGP_PATH_VALID);
                if (path_valid != bnc_is_valid_nexthop) {
                        if (path_valid) {
                                /* No longer valid, clear flag; also for EVPN
index ab877574fa14bfe9eb6f2a87b5d1d77d8593bbf3..107aa1eb12e93d5adfb023dbf87c685b2cde64eb 100644 (file)
@@ -11643,7 +11643,8 @@ static int bgp_show_route_in_table(struct vty *vty, struct bgp *bgp,
                        if (!table)
                                continue;
 
-                       if ((rm = bgp_node_match(table, &match)) == NULL)
+                       rm = bgp_node_match(table, &match);
+                       if (rm == NULL)
                                continue;
 
                        const struct prefix *rm_p = bgp_dest_get_prefix(rm);
@@ -11735,7 +11736,8 @@ static int bgp_show_route_in_table(struct vty *vty, struct bgp *bgp,
                                json_object_free(json_paths);
                }
        } else {
-               if ((dest = bgp_node_match(rib, &match)) != NULL) {
+               dest = bgp_node_match(rib, &match);
+               if (dest != NULL) {
                        const struct prefix *dest_p = bgp_dest_get_prefix(dest);
                        if (!prefix_check
                            || dest_p->prefixlen == match.prefixlen) {
@@ -14759,7 +14761,8 @@ static int bgp_clear_damp_route(struct vty *vty, const char *view_name,
                        table = bgp_dest_get_bgp_table_info(dest);
                        if (!table)
                                continue;
-                       if ((rm = bgp_node_match(table, &match)) == NULL)
+                       rm = bgp_node_match(table, &match);
+                       if (rm == NULL)
                                continue;
 
                        const struct prefix *rm_p = bgp_dest_get_prefix(dest);
@@ -14783,8 +14786,8 @@ static int bgp_clear_damp_route(struct vty *vty, const char *view_name,
                        bgp_dest_unlock_node(rm);
                }
        } else {
-               if ((dest = bgp_node_match(bgp->rib[afi][safi], &match))
-                   != NULL) {
+               dest = bgp_node_match(bgp->rib[afi][safi], &match);
+               if (dest != NULL) {
                        const struct prefix *dest_p = bgp_dest_get_prefix(dest);
 
                        if (!prefix_check
index e541d117bee8b48447d006642ac5dabf514f2be1..88e3f6438f547299887441b85406f2a3ad6afc05 100644 (file)
@@ -70,8 +70,8 @@ static int bgp_route_match_delete(struct route_map_index *index,
        if (type != RMAP_EVENT_MATCH_DELETED) {
                /* ignore the mundane, the types without any dependency */
                if (arg == NULL) {
-                       if ((tmpstr = route_map_get_match_arg(index, command))
-                                       != NULL)
+                       tmpstr = route_map_get_match_arg(index, command);
+                       if (tmpstr != NULL)
                                dep_name =
                                        XSTRDUP(MTYPE_ROUTE_MAP_RULE, tmpstr);
                } else {
index 18829aa7477a944debe9e28d48da67d9df2f64ff..9c2288cba3999dbbf9dc35e3223a0f4e8913689e 100644 (file)
@@ -572,7 +572,8 @@ void bgp_adj_out_unset_subgroup(struct bgp_dest *dest,
                return;
 
        /* Lookup existing adjacency */
-       if ((adj = adj_lookup(dest, subgrp, addpath_tx_id)) != NULL) {
+       adj = adj_lookup(dest, subgrp, addpath_tx_id);
+       if (adj != NULL) {
                /* Clean up previous advertisement.  */
                if (adj->adv)
                        bgp_advertise_clean_subgroup(subgrp, adj);
index e713894eb11730ee95c6e6f9f23596ad89115ddf..9d7e88bb1ca08348378d90e45a117e56ef6f7abf 100644 (file)
@@ -1857,9 +1857,8 @@ void cli_show_router_bgp_med_config(struct vty *vty, struct lyd_node *dnode,
                uint32_t med_admin_val;
 
                vty_out(vty, " bgp max-med administrative");
-               if ((med_admin_val =
-                            yang_dnode_get_uint32(dnode, "./max-med-admin"))
-                   != BGP_MAXMED_VALUE_DEFAULT)
+               med_admin_val = yang_dnode_get_uint32(dnode, "./max-med-admin");
+               if (med_admin_val != BGP_MAXMED_VALUE_DEFAULT)
                        vty_out(vty, " %u", med_admin_val);
                vty_out(vty, "\n");
        }
@@ -10196,7 +10195,8 @@ static int bgp_clear_prefix(struct vty *vty, const char *view_name,
                        if (table == NULL)
                                continue;
 
-                       if ((rm = bgp_node_match(table, &match)) != NULL) {
+                       rm = bgp_node_match(table, &match);
+                       if (rm != NULL) {
                                const struct prefix *rm_p =
                                        bgp_dest_get_prefix(rm);
 
@@ -10209,7 +10209,8 @@ static int bgp_clear_prefix(struct vty *vty, const char *view_name,
                        }
                }
        } else {
-               if ((dest = bgp_node_match(rib, &match)) != NULL) {
+               dest = bgp_node_match(rib, &match);
+               if (dest != NULL) {
                        const struct prefix *dest_p = bgp_dest_get_prefix(dest);
 
                        if (dest_p->prefixlen == match.prefixlen) {
index b861d13fd1d26ddd76c617c8aaf843c6608bdce2..acade16ef27fb8cebf0de2e67def58ec6621731f 100644 (file)
@@ -3099,8 +3099,7 @@ static struct bgp *bgp_create(as_t *as, const char *name,
        afi_t afi;
        safi_t safi;
 
-       if ((bgp = XCALLOC(MTYPE_BGP, sizeof(struct bgp))) == NULL)
-               return NULL;
+       bgp = XCALLOC(MTYPE_BGP, sizeof(struct bgp));
 
        if (BGP_DEBUG(zebra, ZEBRA)) {
                if (inst_type == BGP_INSTANCE_TYPE_DEFAULT)
index 7929b3709dc1d7cfc239533f42e5997d81efcfdd..41b1adc9fc0d2dc9e333ac84e1ffb4495a0bd859 100644 (file)
@@ -357,7 +357,8 @@ buffer_status_t buffer_flush_window(struct buffer *b, int fd, int width,
 
                        iov_size =
                                ((iov_index > IOV_MAX) ? IOV_MAX : iov_index);
-                       if ((nbytes = writev(fd, c_iov, iov_size)) < 0) {
+                       nbytes = writev(fd, c_iov, iov_size);
+                       if (nbytes < 0) {
                                flog_err(EC_LIB_SOCKET,
                                         "%s: writev to fd %d failed: %s",
                                         __func__, fd, safe_strerror(errno));
@@ -370,7 +371,8 @@ buffer_status_t buffer_flush_window(struct buffer *b, int fd, int width,
                }
        }
 #else  /* IOV_MAX */
-       if ((nbytes = writev(fd, iov, iov_index)) < 0)
+       nbytes = writev(fd, iov, iov_index);
+       if (nbytes < 0)
                flog_err(EC_LIB_SOCKET, "%s: writev to fd %d failed: %s",
                         __func__, fd, safe_strerror(errno));
 #endif /* IOV_MAX */
@@ -472,13 +474,17 @@ buffer_status_t buffer_write(struct buffer *b, int fd, const void *p,
                /* Buffer is not empty, so do not attempt to write the new data.
                 */
                nbytes = 0;
-       else if ((nbytes = write(fd, p, size)) < 0) {
-               if (ERRNO_IO_RETRY(errno))
-                       nbytes = 0;
-               else {
-                       flog_err(EC_LIB_SOCKET, "%s: write error on fd %d: %s",
-                                __func__, fd, safe_strerror(errno));
-                       return BUFFER_ERROR;
+       else {
+               nbytes = write(fd, p, size);
+               if (nbytes < 0) {
+                       if (ERRNO_IO_RETRY(errno))
+                               nbytes = 0;
+                       else {
+                               flog_err(EC_LIB_SOCKET,
+                                        "%s: write error on fd %d: %s",
+                                        __func__, fd, safe_strerror(errno));
+                               return BUFFER_ERROR;
+                       }
                }
        }
        /* Add any remaining data to the buffer. */
index b48b79792e6ed7f728831ee14e6434f9684c3850..05b9dbe39ee283b736ea050db9da3594cfe0caaa 100644 (file)
--- a/lib/csv.c
+++ b/lib/csv.c
@@ -641,7 +641,8 @@ static int get_memory_usage(pid_t pid)
        char *vm;
 
        snprintf(status_child, sizeof(status_child), "/proc/%d/status", pid);
-       if ((fd = open(status_child, O_RDONLY)) < 0)
+       fd = open(status_child, O_RDONLY);
+       if (fd < 0)
                return -1;
 
        read(fd, buf, 4095);
index e8a6b89f8910a794e5e7436c93ccf1f68d205dc5..062384aac7ab388b8d22d15584a4fd86e6eeffde 100644 (file)
@@ -538,8 +538,6 @@ struct ls_edge *ls_edge_add(struct ls_ted *ted,
 
        /* Create Edge and add it to the TED */
        new = XCALLOC(MTYPE_LS_DB, sizeof(struct ls_edge));
-       if (!new)
-               return NULL;
 
        new->attributes = attributes;
        new->key = key;
@@ -804,8 +802,6 @@ struct ls_ted *ls_ted_new(const uint32_t key, const char *name,
        struct ls_ted *new;
 
        new = XCALLOC(MTYPE_LS_DB, sizeof(struct ls_ted));
-       if (new == NULL)
-               return new;
 
        /* Set basic information for this ted */
        new->key = key;
@@ -1005,8 +1001,6 @@ static struct ls_node *ls_parse_node(struct stream *s)
        size_t len;
 
        node = XCALLOC(MTYPE_LS_DB, sizeof(struct ls_node));
-       if (node == NULL)
-               return NULL;
 
        STREAM_GET(&node->adv, s, sizeof(struct ls_node_id));
        STREAM_GETW(s, node->flags);
@@ -1051,8 +1045,6 @@ static struct ls_attributes *ls_parse_attributes(struct stream *s)
        size_t len;
 
        attr = XCALLOC(MTYPE_LS_DB, sizeof(struct ls_attributes));
-       if (attr == NULL)
-               return NULL;
        attr->srlgs = NULL;
 
        STREAM_GET(&attr->adv, s, sizeof(struct ls_node_id));
@@ -1157,8 +1149,6 @@ static struct ls_prefix *ls_parse_prefix(struct stream *s)
        size_t len;
 
        ls_pref = XCALLOC(MTYPE_LS_DB, sizeof(struct ls_prefix));
-       if (ls_pref == NULL)
-               return NULL;
 
        STREAM_GET(&ls_pref->adv, s, sizeof(struct ls_node_id));
        STREAM_GETW(s, ls_pref->flags);
@@ -1193,8 +1183,6 @@ struct ls_message *ls_parse_msg(struct stream *s)
        struct ls_message *msg;
 
        msg = XCALLOC(MTYPE_LS_DB, sizeof(struct ls_message));
-       if (msg == NULL)
-               return NULL;
 
        /* Read LS Message header */
        STREAM_GETC(s, msg->event);
index 411661a5e1bca1764803289f0edad2f373794acf..b60ad9a57c3800f97bae4cdde4708c133bd15e29 100644 (file)
@@ -78,7 +78,8 @@ int set_nonblocking(int fd)
        /* According to the Single UNIX Spec, the return value for F_GETFL
           should
           never be negative. */
-       if ((flags = fcntl(fd, F_GETFL)) < 0) {
+       flags = fcntl(fd, F_GETFL);
+       if (flags < 0) {
                flog_err(EC_LIB_SYSTEM_CALL,
                         "fcntl(F_GETFL) failed for fd %d: %s", fd,
                         safe_strerror(errno));
index ccbf8793d38e2ce3fd3b208f87b6eacaebbea3bf..1b2dd7a6d12da7be9afbc9e79cb494ea3ab1cdee 100644 (file)
@@ -40,14 +40,18 @@ static inline void putbyte(uint8_t bytex, char **posx)
        bool zero = false;
        int byte = bytex, tmp, a, b;
 
-       if ((tmp = byte - 200) >= 0) {
+       tmp = byte - 200;
+       if (tmp >= 0) {
                *pos++ = '2';
                zero = true;
                byte = tmp;
-       } else if ((tmp = byte - 100) >= 0) {
-               *pos++ = '1';
-               zero = true;
-               byte = tmp;
+       } else {
+               tmp = byte - 100;
+               if (tmp >= 0) {
+                       *pos++ = '1';
+                       zero = true;
+                       byte = tmp;
+               }
        }
 
        /* make sure the compiler knows the value range of "byte" */
index 1c57715e8f3a1ad4bc87f2247dbf5b001501513a..ef7d2e59daaded2799853c70c510a36ab50576d4 100644 (file)
@@ -1034,7 +1034,8 @@ const char *prefix2str(union prefixconstptr pu, char *str, int size)
                l = strlen(buf);
                buf[l++] = '/';
                byte = p->prefixlen;
-               if ((tmp = p->prefixlen - 100) >= 0) {
+               tmp = p->prefixlen - 100;
+               if (tmp >= 0) {
                        buf[l++] = '1';
                        z = true;
                        byte = tmp;
index 98bfda507964931393d5b30e410892bd16672e93..150736e00c9393eb3ce12d9dbf05059d90f84074 100644 (file)
@@ -379,14 +379,14 @@ static int setsockopt_ipv4_ifindex(int sock, ifindex_t val)
        int ret;
 
 #if defined(IP_PKTINFO)
-       if ((ret = setsockopt(sock, IPPROTO_IP, IP_PKTINFO, &val, sizeof(val)))
-           < 0)
+       ret = setsockopt(sock, IPPROTO_IP, IP_PKTINFO, &val, sizeof(val));
+       if (ret < 0)
                flog_err(EC_LIB_SOCKET,
                         "Can't set IP_PKTINFO option for fd %d to %d: %s",
                         sock, val, safe_strerror(errno));
 #elif defined(IP_RECVIF)
-       if ((ret = setsockopt(sock, IPPROTO_IP, IP_RECVIF, &val, sizeof(val)))
-           < 0)
+       ret = setsockopt(sock, IPPROTO_IP, IP_RECVIF, &val, sizeof(val));
+       if (ret < 0)
                flog_err(EC_LIB_SOCKET,
                         "Can't set IP_RECVIF option for fd %d to %d: %s", sock,
                         val, safe_strerror(errno));
@@ -639,12 +639,8 @@ int sockopt_tcp_signature_ext(int sock, union sockunion *su, uint16_t prefixlen,
 
 #endif /* GNU_LINUX */
 
-       if ((ret = setsockopt(sock, IPPROTO_TCP, optname, &md5sig,
-                             sizeof(md5sig)))
-           < 0) {
-               /* ENOENT is harmless.  It is returned when we clear a password
-                  for which
-                  one was not previously set. */
+       ret = setsockopt(sock, IPPROTO_TCP, optname, &md5sig, sizeof(md5sig));
+       if (ret < 0) {
                if (ENOENT == errno)
                        ret = 0;
                else
index 904ee73b10ce2da231791cfbda1786960d45db1a..1557500c607171c955f26e234bf2acd1e2a183eb 100644 (file)
@@ -1097,7 +1097,8 @@ ssize_t stream_read_try(struct stream *s, int fd, size_t size)
                return -1;
        }
 
-       if ((nbytes = read(fd, s->data + s->endp, size)) >= 0) {
+       nbytes = read(fd, s->data + s->endp, size);
+       if (nbytes >= 0) {
                s->endp += nbytes;
                return nbytes;
        }
@@ -1126,9 +1127,8 @@ ssize_t stream_recvfrom(struct stream *s, int fd, size_t size, int flags,
                return -1;
        }
 
-       if ((nbytes = recvfrom(fd, s->data + s->endp, size, flags, from,
-                              fromlen))
-           >= 0) {
+       nbytes = recvfrom(fd, s->data + s->endp, size, flags, from, fromlen);
+       if (nbytes >= 0) {
                s->endp += nbytes;
                return nbytes;
        }
index 1b4ac080cdd5f8991057f1b9dea453555f87803b..dc832276590d599cc65cc31a3e6bd91cdfa7a5c5 100644 (file)
@@ -3812,7 +3812,8 @@ static int zclient_read(struct thread *thread)
        zclient->t_read = NULL;
 
        /* Read zebra header (if we don't have it already). */
-       if ((already = stream_get_endp(zclient->ibuf)) < ZEBRA_HEADER_SIZE) {
+       already = stream_get_endp(zclient->ibuf);
+       if (already < ZEBRA_HEADER_SIZE) {
                ssize_t nbyte;
                if (((nbyte = stream_read_try(zclient->ibuf, zclient->sock,
                                              ZEBRA_HEADER_SIZE - already))
@@ -3825,7 +3826,6 @@ static int zclient_read(struct thread *thread)
                        return zclient_failed(zclient);
                }
                if (nbyte != (ssize_t)(ZEBRA_HEADER_SIZE - already)) {
-                       /* Try again later. */
                        zclient_event(ZCLIENT_READ, zclient);
                        return 0;
                }
diff --git a/tools/coccinelle/xcalloc-xmalloc.cocci b/tools/coccinelle/xcalloc-xmalloc.cocci
new file mode 100644 (file)
index 0000000..2a091d4
--- /dev/null
@@ -0,0 +1,17 @@
+// No need checking against NULL for XMALLOC/XCALLOC.
+// If that happens, we have more problems with memory.
+
+@@
+type T;
+T *ptr;
+@@
+
+ptr =
+(
+XCALLOC(...)
+|
+XMALLOC(...)
+)
+...
+- if (ptr == NULL)
+- return ...;