Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sbin/ifconfig Add descr,description/-descr,-description comm...



details:   https://anonhg.NetBSD.org/src/rev/ef9acba4a0e0
branches:  trunk
changeset: 1000072:ef9acba4a0e0
user:      ozaki-r <ozaki-r%NetBSD.org@localhost>
date:      Thu Jul 04 02:45:45 2019 +0000

description:
Add descr,description/-descr,-description commands to ifconfig(8) to handle a description.

>From t-kusaba@IIJ

diffstat:

 sbin/ifconfig/ifconfig.8 |   8 ++++-
 sbin/ifconfig/ifconfig.c |  72 ++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 76 insertions(+), 4 deletions(-)

diffs (164 lines):

diff -r d77425a9300d -r ef9acba4a0e0 sbin/ifconfig/ifconfig.8
--- a/sbin/ifconfig/ifconfig.8  Thu Jul 04 02:44:25 2019 +0000
+++ b/sbin/ifconfig/ifconfig.8  Thu Jul 04 02:45:45 2019 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: ifconfig.8,v 1.116 2018/11/15 04:37:20 ozaki-r Exp $
+.\"    $NetBSD: ifconfig.8,v 1.117 2019/07/04 02:45:45 ozaki-r Exp $
 .\"
 .\" Copyright (c) 1983, 1991, 1993
 .\"    The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"     @(#)ifconfig.8 8.4 (Berkeley) 6/1/94
 .\"
-.Dd November 15, 2018
+.Dd June 18, 2019
 .Dt IFCONFIG 8
 .Os
 .Sh NAME
@@ -186,6 +186,10 @@
 .Ar iface .
 If not specified, the kernel will attempt to select an interface with
 a subnet matching that of the carp interface.
+.It Cm description Ar description , Cm descr Ar description
+Set a description of the interface. (0-63 characters)
+.It Cm -description , Cm -descr
+Clear the description of the interface.
 .It Cm debug
 Enable driver dependent debugging code; usually, this turns on
 extra console error logging.
diff -r d77425a9300d -r ef9acba4a0e0 sbin/ifconfig/ifconfig.c
--- a/sbin/ifconfig/ifconfig.c  Thu Jul 04 02:44:25 2019 +0000
+++ b/sbin/ifconfig/ifconfig.c  Thu Jul 04 02:45:45 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ifconfig.c,v 1.238 2018/12/21 08:58:08 msaitoh Exp $   */
+/*     $NetBSD: ifconfig.c,v 1.239 2019/07/04 02:45:45 ozaki-r Exp $   */
 
 /*-
  * Copyright (c) 1997, 1998, 2000 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
 #ifndef lint
 __COPYRIGHT("@(#) Copyright (c) 1983, 1993\
  The Regents of the University of California.  All rights reserved.");
-__RCSID("$NetBSD: ifconfig.c,v 1.238 2018/12/21 08:58:08 msaitoh Exp $");
+__RCSID("$NetBSD: ifconfig.c,v 1.239 2019/07/04 02:45:45 ozaki-r Exp $");
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -133,6 +133,8 @@
 static int setifprefixlen(prop_dictionary_t, prop_dictionary_t);
 static int setlinkstr(prop_dictionary_t, prop_dictionary_t);
 static int unsetlinkstr(prop_dictionary_t, prop_dictionary_t);
+static int setifdescr(prop_dictionary_t, prop_dictionary_t);
+static int unsetifdescr(prop_dictionary_t, prop_dictionary_t);
 static void status(const struct sockaddr *, prop_dictionary_t,
     prop_dictionary_t);
 __dead static void usage(void);
@@ -193,6 +195,9 @@
     "broadcast address",
     setifbroadaddr, "broadcast", NULL, NULL, NULL, &command_root.pb_parser);
 
+struct pstr parse_descr = PSTR_INITIALIZER1(&parse_descr, "descr",
+    setifdescr, "descr", false, &command_root.pb_parser);
+
 static const struct kwinst misckw[] = {
          {.k_word = "alias", .k_key = "alias", .k_deact = "alias",
           .k_type = KW_T_BOOL, .k_neg = true,
@@ -213,6 +218,12 @@
        , {.k_word = "linkstr", .k_nextparser = &parse_linkstr.ps_parser }
        , {.k_word = "-linkstr", .k_exec = unsetlinkstr,
           .k_nextparser = &command_root.pb_parser }
+       , {.k_word = "descr", .k_nextparser = &parse_descr.ps_parser}
+       , {.k_word = "description", .k_nextparser = &parse_descr.ps_parser}
+       , {.k_word = "-descr", .k_exec = unsetifdescr,
+          .k_nextparser = &command_root.pb_parser}
+       , {.k_word = "-description", .k_exec = unsetifdescr,
+          .k_nextparser = &command_root.pb_parser}
 };
 
 /* key: clonecmd */
@@ -1270,6 +1281,7 @@
        struct ifcapreq ifcr;
        unsigned short flags;
        const struct afswtch *afp;
+       char ifdescr[IFDESCRSIZE];
 
        if ((af = getaf(env)) == -1) {
                afp = NULL;
@@ -1321,6 +1333,12 @@
        SIMPLEQ_FOREACH(status_f, &status_funcs, f_next)
                (*status_f->f_func)(env, oenv);
 
+       estrlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       ifr.ifr_buf = &ifdescr;
+       ifr.ifr_buflen = sizeof(ifdescr);
+       if (prog_ioctl(s, SIOCGIFDESCR, &ifr) == 0)
+               printf("\tdescription: \"%s\"\n", (char *)ifr.ifr_buf);
+
        print_link_addresses(env, true);
 
        estrlcpy(ifdrv.ifd_name, ifname, sizeof(ifdrv.ifd_name));
@@ -1461,6 +1479,55 @@
        return 0;
 }
 
+static int
+setifdescr(prop_dictionary_t env, prop_dictionary_t oenv)
+{
+       struct ifreq ifr;
+       size_t len;
+       prop_data_t data;
+       char *descr;
+
+       data = (prop_data_t)prop_dictionary_get(env, "descr");
+       if (data == NULL) {
+               errno = ENOENT;
+               return -1;
+       }
+       len = prop_data_size(data) + 1;
+
+       if (len > IFDESCRSIZE)
+               err(EXIT_FAILURE, "description too long");
+
+       descr = malloc(len);
+       if (descr == NULL)
+               err(EXIT_FAILURE, "malloc description space");
+       if (getargstr(env, "descr", descr, len) == -1)
+               errx(EXIT_FAILURE, "getargstr descr failed");
+
+
+       ifr.ifr_buf = descr;
+       ifr.ifr_buflen = len;
+       if (direct_ioctl(env, SIOCSIFDESCR, &ifr) != 0)
+               err(EXIT_FAILURE, "SIOCSIFDESCR");
+
+       free(descr);
+
+       return 0;
+}
+
+static int
+unsetifdescr(prop_dictionary_t env, prop_dictionary_t oenv)
+{
+       struct ifreq ifr;
+       ifr.ifr_buf = NULL;
+       ifr.ifr_buflen = 0;
+
+       if (direct_ioctl(env, SIOCSIFDESCR, &ifr) != 0)
+               err(EXIT_FAILURE, "SIOCSIFDESCR");
+
+       return 0;
+}
+
+
 static void
 usage(void)
 {
@@ -1486,6 +1553,7 @@
                "\t[ preference n ]\n"
                "\t[ link0 | -link0 ] [ link1 | -link1 ] [ link2 | -link2 ]\n"
                "\t[ linkstr str | -linkstr ]\n"
+               "\t[ description str | descr str | -description | -descr ]\n"
                "       %s -a [-b] [-d] [-h] %s[-u] [-v] [-z] [ af ]\n"
                "       %s -l [-b] [-d] [-s] [-u]\n"
                "       %s -C\n"



Home | Main Index | Thread Index | Old Index