commit-inetutils
[Top][All Lists]
Advanced

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

[SCM] GNU Inetutils branch, master, updated. inetutils-1_9_2-14-g765036


From: Mats Erik Andersson
Subject: [SCM] GNU Inetutils branch, master, updated. inetutils-1_9_2-14-g765036a
Date: Sun, 23 Mar 2014 00:04:05 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Inetutils ".

The branch, master has been updated
       via  765036a319083f5861c1e056da2eaf23e1e20758 (commit)
      from  13c195583c3bbc922ff59a61dde336e708851e1d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/inetutils.git/commit/?id=765036a319083f5861c1e056da2eaf23e1e20758


commit 765036a319083f5861c1e056da2eaf23e1e20758
Author: Mats Erik Andersson <address@hidden>
Date:   Sun Mar 23 00:31:51 2014 +0100

    ifconfig: Parse address family.
    
    Have all supported systems accept an address
    family parameter in the expected form.

diff --git a/ChangeLog b/ChangeLog
index ea5a2d8..c63d0fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2014-03-23  Mats Erik Andersson  <address@hidden>
+
+       ifconfig: Parse address family.
+       Allow for address family argument on supported systems.
+
+       * ifconfig/system/bsd.c (system_parse_opt_rest): New enum
+       values EXPECT_COMMAND and EXPECT_AF.  Use the first to detect
+       `create' and `destroy', but claiming lack of support.  Accept
+       `inet' as family, but reject `inet6'.  Rewrite return status.
+       * ifconfig/system/linux.c (system_parse_opt_rest): Rename
+       enum value EXPECT_INET to EXPECT_AF.  Detect family `inet6',
+       but reject it.
+       * ifconfig/system/solaris.c (system_parse_opt_rest): New enum
+       value EXPECT_AF.  Accept `inet' as address family argument,
+       but reject `inet6'.  Rewrite return status.
+
 2014-03-20  Mats Erik Andersson  <address@hidden>
 
        ifconfig: Command line parsing.
diff --git a/ifconfig/system/bsd.c b/ifconfig/system/bsd.c
index 278cf6e..130c558 100644
--- a/ifconfig/system/bsd.c
+++ b/ifconfig/system/bsd.c
@@ -64,11 +64,13 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
   enum
   {
     EXPECT_NOTHING,
+    EXPECT_COMMAND,
+    EXPECT_AF,
     EXPECT_BROADCAST,
     EXPECT_NETMASK,
     EXPECT_METRIC,
     EXPECT_MTU
-  } expect = EXPECT_NOTHING;
+  } expect = EXPECT_COMMAND;
 
   *ifp = parse_opt_new_ifs (argv[0]);
 
@@ -92,10 +94,37 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
          parse_opt_set_metric (*ifp, argv[i]);
          break;
 
+       case EXPECT_COMMAND:
+         expect = EXPECT_AF;           /* Applicable at creation.  */
+         if (!strcmp (argv[i], "create"))
+           {
+             error (0, 0, "interface creation is not supported");
+             return 0;
+           }
+         else if (!strcmp (argv[i], "destroy"))
+           {
+             error (0, 0, "interface destruction is not supported");
+             return 0;
+           }
+         break;
+
+       case EXPECT_AF:
        case EXPECT_NOTHING:
          break;
        }
 
+      if (expect == EXPECT_AF) /* Address selection is single shot.  */
+       {
+         expect = EXPECT_NOTHING;
+         if (!strcmp (argv[i], "inet"))
+           continue;
+         else if (!strcmp (argv[i], "inet6"))
+           {
+             error (0, 0, "%s is not a supported address family", argv[i]);
+             return 0;
+           }
+       }
+
       if (expect != EXPECT_NOTHING)
        expect = EXPECT_NOTHING;
       else if (!strcmp (argv[i], "broadcast"))
@@ -115,8 +144,7 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
        parse_opt_set_flag (*ifp, mask, rev);
       else
        {
-         /* Recognize AF here.  */
-         /* Also alias, -alias, create, destroy.  */
+         /* Also alias, -alias.  */
          if (!((*ifp)->valid & IF_VALID_ADDR))
            parse_opt_set_address (*ifp, argv[i]);
          else if (!((*ifp)->valid & IF_VALID_DSTADDR))
@@ -142,10 +170,12 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
       error (0, 0, "option `mtu' requires an argument");
       break;
 
+    case EXPECT_AF:            /* dummy */
+    case EXPECT_COMMAND:       /* dummy */
     case EXPECT_NOTHING:
-      break;
+      return 1;
     }
-  return expect == EXPECT_NOTHING;
+  return 0;
 }
 
 int
diff --git a/ifconfig/system/linux.c b/ifconfig/system/linux.c
index 733b1c8..00309ed 100644
--- a/ifconfig/system/linux.c
+++ b/ifconfig/system/linux.c
@@ -763,7 +763,7 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
   int i = 0;
   enum
   {
-    EXPECT_INET,
+    EXPECT_AF,
     EXPECT_NOTHING,
     EXPECT_BROADCAST,
     EXPECT_DSTADDR,
@@ -771,7 +771,7 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
     EXPECT_MTU,
     EXPECT_METRIC,
     EXPECT_TXQLEN,
-  } expect = EXPECT_INET;
+  } expect = EXPECT_AF;
   int mask, rev;
 
   *ifp = parse_opt_new_ifs (argv[0]);
@@ -804,10 +804,15 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
          system_parse_opt_set_txqlen (*ifp, argv[i]);
          break;
 
-       case EXPECT_INET:
+       case EXPECT_AF:
          expect = EXPECT_NOTHING;
          if (!strcmp (argv[i], "inet"))
            continue;
+         else if (!strcmp (argv[i], "inet6"))
+           {
+             error (0, 0, "%s is not a supported address family", argv[i]);
+             return 0;
+           }
          break;
 
        case EXPECT_NOTHING:
@@ -866,7 +871,7 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
       error (0, 0, "option `txqueuelen' requires an argument");
       break;
 
-    case EXPECT_INET:
+    case EXPECT_AF:
     case EXPECT_NOTHING:
       return 1;
     }
diff --git a/ifconfig/system/solaris.c b/ifconfig/system/solaris.c
index 317579e..7bdf07e 100644
--- a/ifconfig/system/solaris.c
+++ b/ifconfig/system/solaris.c
@@ -78,11 +78,12 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
   enum
   {
     EXPECT_NOTHING,
+    EXPECT_AF,
     EXPECT_BROADCAST,
     EXPECT_NETMASK,
     EXPECT_METRIC,
     EXPECT_MTU
-  } expect = EXPECT_NOTHING;
+  } expect = EXPECT_AF;
 
   *ifp = parse_opt_new_ifs (argv[0]);
 
@@ -106,6 +107,17 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
          parse_opt_set_metric (*ifp, argv[i]);
          break;
 
+       case EXPECT_AF:
+         expect = EXPECT_NOTHING;
+         if (!strcmp (argv[i], "inet"))
+           continue;
+         else if (!strcmp (argv[i], "inet6"))
+           {
+             error (0, 0, "%s is not a supported address family", argv[i]);
+             return 0;
+           }
+         break;
+
        case EXPECT_NOTHING:
          break;
        }
@@ -129,7 +141,6 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
        parse_opt_set_flag (*ifp, mask, rev);
       else
        {
-         /* Recognize AF here.  */
          /* Also auto-revarp, plumb, unplumb.  */
          if (!((*ifp)->valid & IF_VALID_ADDR))
            parse_opt_set_address (*ifp, argv[i]);
@@ -156,10 +167,11 @@ system_parse_opt_rest (struct ifconfig **ifp, int argc, 
char *argv[])
       error (0, 0, "option `mtu' requires an argument");
       break;
 
+    case EXPECT_AF:
     case EXPECT_NOTHING:
-      break;
+      return 1;
     }
-  return expect == EXPECT_NOTHING;
+  return 0;
 }
 
 int

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                 |   16 ++++++++++++++++
 ifconfig/system/bsd.c     |   40 +++++++++++++++++++++++++++++++++++-----
 ifconfig/system/linux.c   |   13 +++++++++----
 ifconfig/system/solaris.c |   20 ++++++++++++++++----
 4 files changed, 76 insertions(+), 13 deletions(-)


hooks/post-receive
-- 
GNU Inetutils 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]