Browse Source

Add "route" command (which currently only displays the routing table; it

can't modify it).
tags/v0.9.3
Michael Brown 17 years ago
parent
commit
d45c5e7ce7
4 changed files with 89 additions and 2 deletions
  1. 1
    0
      src/config.h
  2. 3
    0
      src/core/config.c
  3. 85
    0
      src/hci/commands/route_cmd.c
  4. 0
    2
      src/tests/dhcptest.c

+ 1
- 0
src/config.h View File

@@ -119,6 +119,7 @@
119 119
 #define	NVO_CMD			/* Non-volatile option storage commands */
120 120
 #define	CONFIG_CMD		/* Option configuration console */
121 121
 #define	IFMGMT_CMD		/* Interface management commands */
122
+#define	ROUTE_CMD		/* Routing table management commands */
122 123
 
123 124
 /* @END general.h */ 
124 125
 

+ 3
- 0
src/core/config.c View File

@@ -155,6 +155,9 @@ REQUIRE_OBJECT ( config_cmd );
155 155
 #ifdef IFMGMT_CMD
156 156
 REQUIRE_OBJECT ( ifmgmt_cmd );
157 157
 #endif
158
+#ifdef ROUTE_CMD
159
+REQUIRE_OBJECT ( route_cmd );
160
+#endif
158 161
 
159 162
 /*
160 163
  * Drag in miscellaneous objects

+ 85
- 0
src/hci/commands/route_cmd.c View File

@@ -0,0 +1,85 @@
1
+/*
2
+ * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>.
3
+ *
4
+ * This program is free software; you can redistribute it and/or
5
+ * modify it under the terms of the GNU General Public License as
6
+ * published by the Free Software Foundation; either version 2 of the
7
+ * License, or any later version.
8
+ *
9
+ * This program is distributed in the hope that it will be useful, but
10
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
+ * General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with this program; if not, write to the Free Software
16
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
+ */
18
+
19
+#include <getopt.h>
20
+#include <vsprintf.h>
21
+#include <gpxe/command.h>
22
+#include <usr/route.h>
23
+
24
+/** @file
25
+ *
26
+ * Routing table management commands
27
+ *
28
+ */
29
+
30
+/**
31
+ * "route" command syntax message
32
+ *
33
+ * @v argv		Argument list
34
+ */
35
+static void route_syntax ( char **argv ) {
36
+	printf ( "Usage:\n"
37
+		 "  %s\n"
38
+		 "\n"
39
+		 "Displays the routing table\n",
40
+		 argv[0] );
41
+}
42
+
43
+/**
44
+ * The "route" command
45
+ *
46
+ * @v argc		Argument count
47
+ * @v argv		Argument list
48
+ * @ret rc		Exit code
49
+ */
50
+static int route_exec ( int argc, char **argv ) {
51
+	static struct option longopts[] = {
52
+		{ "help", 0, NULL, 'h' },
53
+		{ NULL, 0, NULL, 0 },
54
+	};
55
+
56
+	int c;
57
+
58
+	/* Parse options */
59
+	while ( ( c = getopt_long ( argc, argv, "h", longopts, NULL ) ) >= 0 ){
60
+		switch ( c ) {
61
+		case 'h':
62
+			/* Display help text */
63
+		default:
64
+			/* Unrecognised/invalid option */
65
+			route_syntax ( argv );
66
+			return 1;
67
+		}
68
+	}
69
+
70
+	if ( optind != argc ) {
71
+		route_syntax ( argv );
72
+		return 1;
73
+	}
74
+
75
+	route();
76
+	return 0;
77
+}
78
+
79
+/** Routing table management commands */
80
+struct command route_commands[] __command = {
81
+	{
82
+		.name = "route",
83
+		.exec = route_exec,
84
+	},
85
+};

+ 0
- 2
src/tests/dhcptest.c View File

@@ -260,8 +260,6 @@ int test_dhcp ( struct net_device *netdev ) {
260 260
 	unregister_dhcp_options ( dhcp.options );
261 261
 	free_dhcp_options ( dhcp.options );
262 262
  out_no_options:
263
-	/* Take down IP interface */
264
-	del_ipv4_address ( netdev );
265 263
  out_no_del_ipv4:
266 264
 	return rc;
267 265
 }

Loading…
Cancel
Save