Add "route" command (which currently only displays the routing table; it
authorMichael Brown <mcb30@etherboot.org>
Wed, 10 Jan 2007 20:51:14 +0000 (20:51 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 10 Jan 2007 20:51:14 +0000 (20:51 +0000)
can't modify it).

src/config.h
src/core/config.c
src/hci/commands/route_cmd.c [new file with mode: 0644]
src/tests/dhcptest.c

index de1a80a..47e9111 100644 (file)
 #define        NVO_CMD                 /* Non-volatile option storage commands */
 #define        CONFIG_CMD              /* Option configuration console */
 #define        IFMGMT_CMD              /* Interface management commands */
+#define        ROUTE_CMD               /* Routing table management commands */
 
 /* @END general.h */ 
 
index 19deec5..61ffca8 100644 (file)
@@ -155,6 +155,9 @@ REQUIRE_OBJECT ( config_cmd );
 #ifdef IFMGMT_CMD
 REQUIRE_OBJECT ( ifmgmt_cmd );
 #endif
+#ifdef ROUTE_CMD
+REQUIRE_OBJECT ( route_cmd );
+#endif
 
 /*
  * Drag in miscellaneous objects
diff --git a/src/hci/commands/route_cmd.c b/src/hci/commands/route_cmd.c
new file mode 100644 (file)
index 0000000..2e9de56
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <getopt.h>
+#include <vsprintf.h>
+#include <gpxe/command.h>
+#include <usr/route.h>
+
+/** @file
+ *
+ * Routing table management commands
+ *
+ */
+
+/**
+ * "route" command syntax message
+ *
+ * @v argv             Argument list
+ */
+static void route_syntax ( char **argv ) {
+       printf ( "Usage:\n"
+                "  %s\n"
+                "\n"
+                "Displays the routing table\n",
+                argv[0] );
+}
+
+/**
+ * The "route" command
+ *
+ * @v argc             Argument count
+ * @v argv             Argument list
+ * @ret rc             Exit code
+ */
+static int route_exec ( int argc, char **argv ) {
+       static struct option longopts[] = {
+               { "help", 0, NULL, 'h' },
+               { NULL, 0, NULL, 0 },
+       };
+
+       int c;
+
+       /* Parse options */
+       while ( ( c = getopt_long ( argc, argv, "h", longopts, NULL ) ) >= 0 ){
+               switch ( c ) {
+               case 'h':
+                       /* Display help text */
+               default:
+                       /* Unrecognised/invalid option */
+                       route_syntax ( argv );
+                       return 1;
+               }
+       }
+
+       if ( optind != argc ) {
+               route_syntax ( argv );
+               return 1;
+       }
+
+       route();
+       return 0;
+}
+
+/** Routing table management commands */
+struct command route_commands[] __command = {
+       {
+               .name = "route",
+               .exec = route_exec,
+       },
+};
index 318ce5e..5cca514 100644 (file)
@@ -260,8 +260,6 @@ int test_dhcp ( struct net_device *netdev ) {
        unregister_dhcp_options ( dhcp.options );
        free_dhcp_options ( dhcp.options );
  out_no_options:
-       /* Take down IP interface */
-       del_ipv4_address ( netdev );
  out_no_del_ipv4:
        return rc;
 }