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? -- :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;