ifconfig: Add format shortcuts.

MFC after:	1 week
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D45166
This commit is contained in:
Dag-Erling Smørgrav 2024-05-14 08:51:42 +02:00
parent c9f4001f81
commit 847ef59d4b
2 changed files with 37 additions and 19 deletions

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.Dd May 1, 2024 .Dd May 12, 2024
.Dt IFCONFIG 8 .Dt IFCONFIG 8
.Os .Os
.Sh NAME .Sh NAME
@ -135,7 +135,7 @@ and their associated
.Ar format .Ar format
strings are: strings are:
.Pp .Pp
.Bl -tag -width ether .Bl -tag -width default
.It Cm addr .It Cm addr
Adjust the display of inet and inet6 addresses: Adjust the display of inet and inet6 addresses:
.Pp .Pp
@ -200,6 +200,16 @@ Integer format, for example:
.Ql prefixlen 64 .Ql prefixlen 64
.El .El
.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 .It Fl G Ar groupname
Exclude members of the specified Exclude members of the specified
.Ar groupname .Ar groupname

View file

@ -313,14 +313,10 @@ cmpifaddrs(struct ifaddrs *a, struct ifaddrs *b, struct ifa_queue *q)
static void freeformat(void) static void freeformat(void)
{ {
if (f_inet != NULL) free(f_inet);
free(f_inet); free(f_inet6);
if (f_inet6 != NULL) free(f_ether);
free(f_inet6); free(f_addr);
if (f_ether != NULL)
free(f_ether);
if (f_addr != NULL)
free(f_addr);
} }
static void setformat(char *input) static void setformat(char *input)
@ -330,9 +326,18 @@ static void setformat(char *input)
formatstr = strdup(input); formatstr = strdup(input);
while ((category = strsep(&formatstr, ",")) != NULL) { while ((category = strsep(&formatstr, ",")) != NULL) {
modifier = strchr(category, ':'); modifier = strchr(category, ':');
if (modifier == NULL || modifier[1] == '\0') { if (modifier == NULL) {
warnx("Skipping invalid format specification: %s\n", if (strcmp(category, "default") == 0) {
category); 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; continue;
} }
@ -340,14 +345,19 @@ static void setformat(char *input)
modifier[0] = '\0'; modifier[0] = '\0';
modifier++; modifier++;
if (strcmp(category, "addr") == 0) if (strcmp(category, "addr") == 0) {
free(f_addr);
f_addr = strdup(modifier); f_addr = strdup(modifier);
else if (strcmp(category, "ether") == 0) } else if (strcmp(category, "ether") == 0) {
free(f_ether);
f_ether = strdup(modifier); f_ether = strdup(modifier);
else if (strcmp(category, "inet") == 0) } else if (strcmp(category, "inet") == 0) {
free(f_inet);
f_inet = strdup(modifier); f_inet = strdup(modifier);
else if (strcmp(category, "inet6") == 0) } else if (strcmp(category, "inet6") == 0) {
free(f_inet6);
f_inet6 = strdup(modifier); f_inet6 = strdup(modifier);
}
} }
free(formatstr); free(formatstr);
} }
@ -612,8 +622,6 @@ main(int ac, char *av[])
.io_s = -1, .io_s = -1,
}; };
f_inet = f_inet6 = f_ether = f_addr = NULL;
lifh = ifconfig_open(); lifh = ifconfig_open();
if (lifh == NULL) if (lifh == NULL)
err(EXIT_FAILURE, "ifconfig_open"); err(EXIT_FAILURE, "ifconfig_open");