dpctl: Allow initial set of interfaces to be specified on "adddp" command.
authorBen Pfaff <blp@nicira.com>
Tue, 10 Mar 2009 23:13:35 +0000 (16:13 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 11 Mar 2009 00:02:28 +0000 (17:02 -0700)
Commands such as e.g. "dpctl adddp dp0 eth0 eth1 eth2" are now accepted.

utilities/dpctl.c

index 06012a728262fe2aa658cf6c8f6f4f619088049a..b934e6a095acb1b2dfbefa32f53a15ebc0d6dac0 100644 (file)
@@ -207,8 +207,8 @@ usage(void)
 {
     printf("%s: OpenFlow switch management utility\n"
            "usage: %s [OPTIONS] COMMAND [ARG...]\n"
-           "\nFor local datapaths:\n"
-           "  adddp DP                    add a new local datapath DP\n"
+           "\nFor datapaths:\n"
+           "  adddp DP [IFACE...]         add new datapath DP (with IFACES)\n"
            "  deldp DP                    delete local datapath DP\n"
            "  addif DP IFACE...           add each IFACE as a port on DP\n"
            "  delif DP IFACE...           delete each IFACE from DP\n"
@@ -273,6 +273,8 @@ static void run(int retval, const char *message, ...)
     }
 }
 \f
+static void do_add_port(const struct settings *, int argc, char *argv[]);
+
 static int if_up(const char *netdev_name)
 {
     struct netdev *netdev;
@@ -301,6 +303,9 @@ do_add_dp(const struct settings *s UNUSED, int argc UNUSED, char *argv[])
     struct dpif dpif;
     run(dpif_create(argv[1], &dpif), "add_dp");
     dpif_close(&dpif);
+    if (argc > 2) {
+        do_add_port(s, argc, argv);
+    }
 }
 
 static void
@@ -1510,7 +1515,7 @@ do_help(const struct settings *s UNUSED, int argc UNUSED, char *argv[] UNUSED)
 
 static struct command all_commands[] = {
 #ifdef HAVE_NETLINK
-    { "adddp", 1, 1, do_add_dp },
+    { "adddp", 1, INT_MAX, do_add_dp },
     { "deldp", 1, 1, do_del_dp },
     { "addif", 2, INT_MAX, do_add_port },
     { "delif", 2, INT_MAX, do_del_port },