ifconfig: Add format shortcuts.

MFC after:	1 week
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D45166

(cherry picked from commit 847ef59d4b5eab234bd1f8eb947ad74bdab5614e)

ifconfig: Markup nits.

MFC after:	3 days
Reviewed by:	imp, allanjude
Differential Revision:	https://reviews.freebsd.org/D45209

(cherry picked from commit 42b28f815214aa582fe4ca707687d3af47850230)
This commit is contained in:
Dag-Erling Smørgrav 2024-05-14 08:51:42 +02:00
parent 14efb9bb71
commit dd1a16c9e2
2 changed files with 48 additions and 26 deletions

View file

@ -27,7 +27,7 @@
.\"
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
.\"
.Dd November 08, 2023
.Dd May 12, 2024
.Dt IFCONFIG 8
.Os
.Sh NAME
@ -137,7 +137,7 @@ and their associated
.Ar format
strings are:
.Pp
.Bl -tag -width ether
.Bl -tag -width default
.It Cm addr
Adjust the display of inet and inet6 addresses:
.Pp
@ -202,6 +202,16 @@ Integer format, for example:
.Ql prefixlen 64
.El
.El
.Pp
In addition, the following shortcuts are accepted:
.Bl -tag -width default
.It Cm default
Resets all formats to their default values.
.It Cm cidr
Shortcut notation for
.Cm inet:cidr,inet6:cidr .
.El
.Pp
.It Fl G Ar groupname
Exclude members of the specified
.Ar groupname
@ -464,13 +474,17 @@ sending out requests and listening for replies.
.It Cm stickyarp
Enable the so-called sticky ARP mode for the interface.
If this option is enabled on the given interface, any resolved address is
marked as a static one and never expires. This may be used to increase
marked as a static one and never expires.
This may be used to increase
security of the network by preventing ARP spoofing or to reduce latency for
high-performance Ethernet networks where the time needed for ARP resolution is
too high. Please note that a similar feature is also provided for bridges. See
too high.
Please note that a similar feature is also provided for bridges.
See
the sticky option in the
.Sx Bridge Interface Parameters
section. Enabling this
section.
Enabling this
option may impact techniques which rely on ARP expiration/overwriting feature
such as load-balancers or high-availabity solutions such as
.Xr carp 4 .
@ -1227,8 +1241,8 @@ Set the interval at which beacon frames are sent when operating in
ad-hoc or ap mode.
The
.Ar interval
parameter is specified in TU's (1024 usecs).
By default beacon frames are transmitted every 100 TU's.
parameter is specified in TUs (1024 usecs).
By default beacon frames are transmitted every 100 TUs.
.It Cm bmissthreshold Ar count
Set the number of consecutive missed beacons at which the station
will attempt to roam (i.e., search for a new access point).
@ -1885,8 +1899,8 @@ Use
.Fl powersave
to disable powersave operation when operating as a client.
.It Cm powersavesleep Ar sleep
Set the desired max powersave sleep time in TU's (1024 usecs).
By default the max powersave sleep time is 100 TU's.
Set the desired max powersave sleep time in TUs (1024 usecs).
By default the max powersave sleep time is 100 TUs.
.It Cm protmode Ar technique
For interfaces operating in 802.11g, use the specified
.Ar technique

View file

@ -322,14 +322,10 @@ cmpifaddrs(struct ifaddrs *a, struct ifaddrs *b, struct ifa_queue *q)
static void freeformat(void)
{
if (f_inet != NULL)
free(f_inet);
if (f_inet6 != NULL)
free(f_inet6);
if (f_ether != NULL)
free(f_ether);
if (f_addr != NULL)
free(f_addr);
free(f_inet);
free(f_inet6);
free(f_ether);
free(f_addr);
}
static void setformat(char *input)
@ -339,9 +335,18 @@ static void setformat(char *input)
formatstr = strdup(input);
while ((category = strsep(&formatstr, ",")) != NULL) {
modifier = strchr(category, ':');
if (modifier == NULL || modifier[1] == '\0') {
warnx("Skipping invalid format specification: %s\n",
category);
if (modifier == NULL) {
if (strcmp(category, "default") == 0) {
freeformat();
} else if (strcmp(category, "cidr") == 0) {
free(f_inet);
f_inet = strdup(category);
free(f_inet6);
f_inet6 = strdup(category);
} else {
warnx("Skipping invalid format: %s\n",
category);
}
continue;
}
@ -349,14 +354,19 @@ static void setformat(char *input)
modifier[0] = '\0';
modifier++;
if (strcmp(category, "addr") == 0)
if (strcmp(category, "addr") == 0) {
free(f_addr);
f_addr = strdup(modifier);
else if (strcmp(category, "ether") == 0)
} else if (strcmp(category, "ether") == 0) {
free(f_ether);
f_ether = strdup(modifier);
else if (strcmp(category, "inet") == 0)
} else if (strcmp(category, "inet") == 0) {
free(f_inet);
f_inet = strdup(modifier);
else if (strcmp(category, "inet6") == 0)
} else if (strcmp(category, "inet6") == 0) {
free(f_inet6);
f_inet6 = strdup(modifier);
}
}
free(formatstr);
}
@ -621,8 +631,6 @@ main(int ac, char *av[])
.io_s = -1,
};
f_inet = f_inet6 = f_ether = f_addr = NULL;
lifh = ifconfig_open();
if (lifh == NULL)
err(EXIT_FAILURE, "ifconfig_open");