Move print_bits to ifconfig.c and make available to other src files.

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:48:10 -04:00
parent 079d67b1d8
commit c3e9423743
No known key found for this signature in database
GPG key ID: E5F7BCCBA3BDDDF8
3 changed files with 25 additions and 23 deletions

View file

@ -1877,6 +1877,29 @@ Perror(const char *cmd)
Perrorc(cmd, errno);
}
void
print_bits(const char *btype, uint32_t *v, const int v_count,
const char **names, const int n_count)
{
int num = 0;
for (int i = 0; i < v_count * 32; i++) {
bool is_set = v[i / 32] & (1U << (i % 32));
if (is_set) {
if (num++ == 0)
printf("<");
if (num != 1)
printf(",");
if (i < n_count)
printf("%s", names[i]);
else
printf("%s_%d", btype, i);
}
}
if (num > 0)
printf(">");
}
/*
* Print a value a la the %b format of the kernel's printf
*/

View file

@ -260,6 +260,8 @@ void setifcap(if_ctx *ctx, const char *, int value);
void setifcapnv(if_ctx *ctx, const char *vname, const char *arg);
void Perror(const char *cmd);
void print_bits(const char *btype, uint32_t *v, const int v_count,
const char **names, const int n_count);
void printb(const char *s, unsigned value, const char *bits);
void ifmaybeload(struct ifconfig_args *args, const char *name);

View file

@ -81,29 +81,6 @@ static const char *IFFBITS[] = {
"LOWER_UP", /* 24:0x1000000 IFF_NETLINK_1*/
};
static void
print_bits(const char *btype, uint32_t *v, const int v_count,
const char **names, const int n_count)
{
int num = 0;
for (int i = 0; i < v_count * 32; i++) {
bool is_set = v[i / 32] & (1U << (i % 32));
if (is_set) {
if (num++ == 0)
printf("<");
if (num != 1)
printf(",");
if (i < n_count)
printf("%s", names[i]);
else
printf("%s_%d", btype, i);
}
}
if (num > 0)
printf(">");
}
static void
nl_init_socket(struct snl_state *ss)
{