Migrate from printb to print_bits for locally defined bit fields.

Reviewed by:	emaste
Event:		Kitchener-Waterloo Hackathon 202406
Differential Revision:	https://reviews.freebsd.org/D45441
This commit is contained in:
Gordon Tetlow 2024-05-31 13:58:52 -07:00
parent c3e9423743
commit a68e4f7a06
No known key found for this signature in database
GPG Key ID: E5F7BCCBA3BDDDF8
4 changed files with 89 additions and 29 deletions

View File

@ -52,17 +52,22 @@
#include "ifconfig.h"
#define MAX_SYSCTL_TRY 5
static const char *ND6BITS[] = {
[0] = "PERFORMNUD",
[1] = "ACCEPT_RTADV",
[2] = "PREFER_SOURCE",
[3] = "IFDISABLED",
[4] = "DONT_SET_IFROUTE",
[5] = "AUTO_LINKLOCAL",
[6] = "NO_RADR",
[7] = "NO_PREFER_IFACE",
[8] = "NO_DAD",
#ifdef DRAFT_IETF_6MAN_IPV6ONLY_FLAG
#define ND6BITS "\020\001PERFORMNUD\002ACCEPT_RTADV\003PREFER_SOURCE" \
"\004IFDISABLED\005DONT_SET_IFROUTE\006AUTO_LINKLOCAL" \
"\007NO_RADR\010NO_PREFER_IFACE\011NO_DAD" \
"\012IPV6_ONLY\013IPV6_ONLY_MANUAL" \
"\020DEFAULTIF"
#else
#define ND6BITS "\020\001PERFORMNUD\002ACCEPT_RTADV\003PREFER_SOURCE" \
"\004IFDISABLED\005DONT_SET_IFROUTE\006AUTO_LINKLOCAL" \
"\007NO_RADR\010NO_PREFER_IFACE\011NO_DAD\020DEFAULTIF"
[9] = "IPV6_ONLY",
[10] = "IPV6_ONLY_MANUAL",
#endif
[15] = "DEFAULTIF",
};
static int isnd6defif(if_ctx *ctx, int s);
void setnd6flags(if_ctx *, const char *, int);
@ -141,6 +146,7 @@ nd6_status(if_ctx *ctx)
int s6;
int error;
int isdefif;
uint32_t bits;
strlcpy(nd.ifname, ctx->ifname, sizeof(nd.ifname));
if ((s6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
@ -159,7 +165,8 @@ nd6_status(if_ctx *ctx)
close(s6);
if (nd.ndi.flags == 0 && !isdefif)
return;
printb("\tnd6 options",
(unsigned int)(nd.ndi.flags | (isdefif << 15)), ND6BITS);
bits = (nd.ndi.flags | (isdefif << 15));
printf("\tnd6 options=%x", bits);
print_bits("options", &bits, 1, ND6BITS, nitems(ND6BITS));
putchar('\n');
}

View File

@ -1617,17 +1617,60 @@ unsetifdescr(if_ctx *ctx, const char *val __unused, int value __unused)
#ifdef WITHOUT_NETLINK
#define IFFBITS \
"\020\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5POINTOPOINT\7RUNNING" \
"\10NOARP\11PROMISC\12ALLMULTI\13OACTIVE\14SIMPLEX\15LINK0\16LINK1\17LINK2" \
"\20MULTICAST\22PPROMISC\23MONITOR\24STATICARP\25STICKYARP"
static const char *IFFBITS[] = {
[0] = "UP",
[1] = "BROADCAST",
[2] = "DEBUG",
[3] = "LOOPBACK",
[4] = "POINTOPOINT",
[6] = "RUNNING",
[7] = "NOARP",
[8] = "PROMISC",
[9] = "ALLMULTI",
[10] = "OACTIVE",
[11] = "SIMPLEX",
[12] = "LINK0",
[13] = "LINK1",
[14] = "LINK2",
[15] = "MULTICAST",
[17] = "PPROMISC",
[18] = "MONITOR",
[19] = "STATICARP",
[20] = "STICKYARP",
};
#define IFCAPBITS \
"\020\1RXCSUM\2TXCSUM\3NETCONS\4VLAN_MTU\5VLAN_HWTAGGING\6JUMBO_MTU\7POLLING" \
"\10VLAN_HWCSUM\11TSO4\12TSO6\13LRO\14WOL_UCAST\15WOL_MCAST\16WOL_MAGIC" \
"\17TOE4\20TOE6\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" \
"\26RXCSUM_IPV6\27TXCSUM_IPV6\31TXRTLMT\32HWRXTSTMP\33NOMAP\34TXTLS4\35TXTLS6" \
"\36VXLAN_HWCSUM\37VXLAN_HWTSO\40TXTLS_RTLMT"
static const char *IFCAPBITS[] = {
[0] = "RXCSUM",
[1] = "TXCSUM",
[2] = "NETCONS",
[3] = "VLAN_MTU",
[4] = "VLAN_HWTAGGING",
[5] = "JUMBO_MTU",
[6] = "POLLING",
[7] = "VLAN_HWCSUM",
[8] = "TSO4",
[9] = "TSO6",
[10] = "LRO",
[11] = "WOL_UCAST",
[12] = "WOL_MCAST",
[13] = "WOL_MAGIC",
[14] = "TOE4",
[15] = "TOE6",
[16] = "VLAN_HWFILTER",
[18] = "VLAN_HWTSO",
[19] = "LINKSTATE",
[20] = "NETMAP",
[21] = "RXCSUM_IPV6",
[22] = "TXCSUM_IPV6",
[24] = "TXRTLMT",
[25] = "HWRXTSTMP",
[26] = "NOMAP",
[27] = "TXTLS4",
[28] = "TXTLS6",
[29] = "VXLAN_HWCSUM",
[30] = "VXLAN_HWTSO",
[31] = "TXTLS_RTLMT",
};
static void
print_ifcap_nv(if_ctx *ctx)
@ -1699,10 +1742,12 @@ print_ifcap(if_ctx *ctx)
if ((ifr.ifr_curcap & IFCAP_NV) != 0)
print_ifcap_nv(ctx);
else {
printb("\toptions", ifr.ifr_curcap, IFCAPBITS);
printf("\toptions=%x", ifr.ifr_curcap);
print_bits("options", &ifr.ifr_curcap, 1, IFCAPBITS, nitems(IFCAPBITS));
putchar('\n');
if (ctx->args->supmedia && ifr.ifr_reqcap != 0) {
printb("\tcapabilities", ifr.ifr_reqcap, IFCAPBITS);
printf("\tcapabilities=%x", ifr.ifr_reqcap);
print_bits("capabilities", &ifr.ifr_reqcap, 1, IFCAPBITS, nitems(IFCAPBITS));
putchar('\n');
}
}
@ -1790,8 +1835,8 @@ status(if_ctx *ctx, const struct sockaddr_dl *sdl __unused, struct ifaddrs *ifa)
old_s = ctx->io_s;
ctx->io_s = s;
printf("%s: ", ctx->ifname);
printb("flags", ifa->ifa_flags, IFFBITS);
printf("%s: flags=%x", ctx->ifname, ifa->ifa_flags);
print_bits("flags", &ifa->ifa_flags, 1, IFFBITS, nitems(IFFBITS));
print_metric(ctx);
print_mtu(ctx);
putchar('\n');

View File

@ -48,7 +48,9 @@
#include "ifconfig.h"
#define GIFBITS "\020\2IGNORE_SOURCE"
static const char *GIFBITS[] = {
[1] = "IGNORE_SOURCE",
};
static void
gif_status(if_ctx *ctx)
@ -60,7 +62,8 @@ gif_status(if_ctx *ctx)
return;
if (opts == 0)
return;
printb("\toptions", opts, GIFBITS);
printf("\toptions=%x", opts);
print_bits("options", &opts, 1, GIFBITS, nitems(GIFBITS));
putchar('\n');
}

View File

@ -41,7 +41,11 @@
#include "ifconfig.h"
#define GREBITS "\020\01ENABLE_CSUM\02ENABLE_SEQ\03UDPENCAP"
static const char *GREBITS[] = {
[0] = "ENABLE_CSUM",
[1] = "ENABLE_SEQ",
[2] = "UDPENCAP",
};
static void
gre_status(if_ctx *ctx)
@ -60,7 +64,8 @@ gre_status(if_ctx *ctx)
ifr.ifr_data = (caddr_t)&port;
if (ioctl_ctx_ifr(ctx, GREGPORT, &ifr) == 0 && port != 0)
printf("\tudpport: %u\n", port);
printb("\toptions", opts, GREBITS);
printf("\toptions=%x", opts);
print_bits("options", &opts, 1, GREBITS, nitems(GREBITS));
putchar('\n');
}