> Date: Mon, 18 Feb 2019 21:59:38 +0100
> From: Claudio Jeker <cje...@diehard.n-r-g.com>
> 
> In some places bgpd just wants something bigger then a 32bit int.
> Instead of using int64_t or u_int64_t use (unsigned) long long which is at
> least 64bit and therefor good enough. Makes the mess with type definition
> of int64_t on various systems go away (including a bunch of type casts).
> While there also apply the endian.h cleanup done in bgpd a few days ago.
> 
> OK?

You could use <stdint.h> and uint64_t instead.  That should be
portable.  But you'd still need to be careful about printf statements
since (u)int64_t might be (unsigned) long on some systems.

Oh, long long doesn't work on MSVC, but you probably don't care about
that.

> -- 
> :wq Claudio
> 
> Index: usr.sbin/bgpctl/bgpctl.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v
> retrieving revision 1.229
> diff -u -p -r1.229 bgpctl.c
> --- usr.sbin/bgpctl/bgpctl.c  11 Feb 2019 15:47:55 -0000      1.229
> +++ usr.sbin/bgpctl/bgpctl.c  18 Feb 2019 20:53:38 -0000
> @@ -23,6 +23,7 @@
>  #include <sys/stat.h>
>  #include <sys/un.h>
>  
> +#include <endian.h>
>  #include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
> @@ -84,7 +85,6 @@ void                 show_attr(void *, u_int16_t, int)
>  void          show_community(u_char *, u_int16_t);
>  void          show_large_community(u_char *, u_int16_t);
>  void          show_ext_community(u_char *, u_int16_t);
> -char         *fmt_mem(int64_t);
>  int           show_rib_memory_msg(struct imsg *);
>  void          send_filterset(struct imsgbuf *, struct filter_set_head *);
>  const char   *get_errstr(u_int8_t, u_int8_t);
> @@ -1761,12 +1761,12 @@ show_ext_community(u_char *data, u_int16
>               case EXT_COMMUNITY_TRANS_OPAQUE:
>               case EXT_COMMUNITY_TRANS_EVPN:
>                       memcpy(&ext, data + i, sizeof(ext));
> -                     ext = betoh64(ext) & 0xffffffffffffLL;
> -                     printf("0x%llx", ext);
> +                     ext = be64toh(ext) & 0xffffffffffffLL;
> +                     printf("0x%llx", (unsigned long long)ext);
>                       break;
>               case EXT_COMMUNITY_NON_TRANS_OPAQUE:
>                       memcpy(&ext, data + i, sizeof(ext));
> -                     ext = betoh64(ext) & 0xffffffffffffLL;
> +                     ext = be64toh(ext) & 0xffffffffffffLL;
>                       switch (ext) {
>                       case EXT_COMMUNITY_OVS_VALID:
>                               printf("valid ");
> @@ -1778,26 +1778,26 @@ show_ext_community(u_char *data, u_int16
>                               printf("invalid ");
>                               break;
>                       default:
> -                             printf("0x%llx ", ext);
> +                             printf("0x%llx ", (unsigned long long)ext);
>                               break;
>                       }
>                       break;
>               default:
>                       memcpy(&ext, data + i, sizeof(ext));
> -                     printf("0x%llx", betoh64(ext));
> +                     printf("0x%llx", (unsigned long long)be64toh(ext));
>               }
>               if (i + 8 < len)
>                       printf(", ");
>       }
>  }
>  
> -char *
> -fmt_mem(int64_t num)
> +static char *
> +fmt_mem(long long num)
>  {
>       static char     buf[16];
>  
>       if (fmt_scaled(num, buf) == -1)
> -             snprintf(buf, sizeof(buf), "%lldB", (long long)num);
> +             snprintf(buf, sizeof(buf), "%lldB", num);
>  
>       return (buf);
>  }
> @@ -1822,31 +1822,31 @@ show_rib_memory_msg(struct imsg *imsg)
>                               continue;
>                       pts += stats.pt_cnt[i] * pt_sizes[i];
>                       printf("%10lld %s network entries using %s of memory\n",
> -                         (long long)stats.pt_cnt[i], aid_vals[i].name,
> +                         stats.pt_cnt[i], aid_vals[i].name,
>                           fmt_mem(stats.pt_cnt[i] * pt_sizes[i]));
>               }
>               printf("%10lld rib entries using %s of memory\n",
> -                 (long long)stats.rib_cnt, fmt_mem(stats.rib_cnt *
> +                 stats.rib_cnt, fmt_mem(stats.rib_cnt *
>                   sizeof(struct rib_entry)));
>               printf("%10lld prefix entries using %s of memory\n",
> -                 (long long)stats.prefix_cnt, fmt_mem(stats.prefix_cnt *
> +                 stats.prefix_cnt, fmt_mem(stats.prefix_cnt *
>                   sizeof(struct prefix)));
>               printf("%10lld BGP path attribute entries using %s of memory\n",
> -                 (long long)stats.path_cnt, fmt_mem(stats.path_cnt *
> +                 stats.path_cnt, fmt_mem(stats.path_cnt *
>                   sizeof(struct rde_aspath)));
>               printf("\t   and holding %lld references\n",
> -                 (long long)stats.path_refs);
> +                 stats.path_refs);
>               printf("%10lld BGP AS-PATH attribute entries using "
>                   "%s of memory\n\t   and holding %lld references\n",
> -                 (long long)stats.aspath_cnt, fmt_mem(stats.aspath_size),
> -                 (long long)stats.aspath_refs);
> +                 stats.aspath_cnt, fmt_mem(stats.aspath_size),
> +                 stats.aspath_refs);
>               printf("%10lld BGP attributes entries using %s of memory\n",
> -                 (long long)stats.attr_cnt, fmt_mem(stats.attr_cnt *
> +                 stats.attr_cnt, fmt_mem(stats.attr_cnt *
>                   sizeof(struct attr)));
>               printf("\t   and holding %lld references\n",
> -                 (long long)stats.attr_refs);
> +                 stats.attr_refs);
>               printf("%10lld BGP attributes using %s of memory\n",
> -                 (long long)stats.attr_dcnt, fmt_mem(stats.attr_data));
> +                 stats.attr_dcnt, fmt_mem(stats.attr_data));
>               printf("%10lld as-set elements in %lld tables using "
>                   "%s of memory\n", stats.aset_nmemb, stats.aset_cnt,
>                   fmt_mem(stats.aset_size));
> Index: usr.sbin/bgpd/bgpd.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v
> retrieving revision 1.372
> diff -u -p -r1.372 bgpd.h
> --- usr.sbin/bgpd/bgpd.h      18 Feb 2019 12:35:08 -0000      1.372
> +++ usr.sbin/bgpd/bgpd.h      18 Feb 2019 20:53:38 -0000
> @@ -1064,33 +1064,33 @@ extern struct rib_names ribnames;
>  #define AS_NONE              0
>  
>  struct rde_memstats {
> -     int64_t         path_cnt;
> -     int64_t         path_refs;
> -     int64_t         prefix_cnt;
> -     int64_t         rib_cnt;
> -     int64_t         pt_cnt[AID_MAX];
> -     int64_t         nexthop_cnt;
> -     int64_t         aspath_cnt;
> -     int64_t         aspath_size;
> -     int64_t         aspath_refs;
> -     int64_t         attr_cnt;
> -     int64_t         attr_refs;
> -     int64_t         attr_data;
> -     int64_t         attr_dcnt;
> -     int64_t         aset_cnt;
> -     int64_t         aset_size;
> -     int64_t         aset_nmemb;
> -     int64_t         pset_cnt;
> -     int64_t         pset_size;
> +     long long       path_cnt;
> +     long long       path_refs;
> +     long long       prefix_cnt;
> +     long long       rib_cnt;
> +     long long       pt_cnt[AID_MAX];
> +     long long       nexthop_cnt;
> +     long long       aspath_cnt;
> +     long long       aspath_size;
> +     long long       aspath_refs;
> +     long long       attr_cnt;
> +     long long       attr_refs;
> +     long long       attr_data;
> +     long long       attr_dcnt;
> +     long long       aset_cnt;
> +     long long       aset_size;
> +     long long       aset_nmemb;
> +     long long       pset_cnt;
> +     long long       pset_size;
>  };
>  
>  struct rde_hashstats {
>       char            name[16];
> -     int64_t         num;
> -     int64_t         min;
> -     int64_t         max;
> -     int64_t         sum;
> -     int64_t         sumq;
> +     long long       num;
> +     long long       min;
> +     long long       max;
> +     long long       sum;
> +     long long       sumq;
>  };
>  
>  #define      MRT_FILE_LEN    512
> Index: usr.sbin/bgpd/session.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/session.h,v
> retrieving revision 1.131
> diff -u -p -r1.131 session.h
> --- usr.sbin/bgpd/session.h   18 Feb 2019 09:58:19 -0000      1.131
> +++ usr.sbin/bgpd/session.h   18 Feb 2019 20:53:38 -0000
> @@ -149,22 +149,22 @@ struct ctl_conn {
>  TAILQ_HEAD(ctl_conns, ctl_conn)      ctl_conns;
>  
>  struct peer_stats {
> -     u_int64_t                msg_rcvd_open;
> -     u_int64_t                msg_rcvd_update;
> -     u_int64_t                msg_rcvd_notification;
> -     u_int64_t                msg_rcvd_keepalive;
> -     u_int64_t                msg_rcvd_rrefresh;
> -     u_int64_t                msg_sent_open;
> -     u_int64_t                msg_sent_update;
> -     u_int64_t                msg_sent_notification;
> -     u_int64_t                msg_sent_keepalive;
> -     u_int64_t                msg_sent_rrefresh;
> -     u_int64_t                prefix_rcvd_update;
> -     u_int64_t                prefix_rcvd_withdraw;
> -     u_int64_t                prefix_rcvd_eor;
> -     u_int64_t                prefix_sent_update;
> -     u_int64_t                prefix_sent_withdraw;
> -     u_int64_t                prefix_sent_eor;
> +     unsigned long long       msg_rcvd_open;
> +     unsigned long long       msg_rcvd_update;
> +     unsigned long long       msg_rcvd_notification;
> +     unsigned long long       msg_rcvd_keepalive;
> +     unsigned long long       msg_rcvd_rrefresh;
> +     unsigned long long       msg_sent_open;
> +     unsigned long long       msg_sent_update;
> +     unsigned long long       msg_sent_notification;
> +     unsigned long long       msg_sent_keepalive;
> +     unsigned long long       msg_sent_rrefresh;
> +     unsigned long long       prefix_rcvd_update;
> +     unsigned long long       prefix_rcvd_withdraw;
> +     unsigned long long       prefix_rcvd_eor;
> +     unsigned long long       prefix_sent_update;
> +     unsigned long long       prefix_sent_withdraw;
> +     unsigned long long       prefix_sent_eor;
>       time_t                   last_updown;
>       time_t                   last_read;
>       u_int32_t                prefix_cnt;
> 
> 

Reply via email to