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 FILE_LICENCE ( GPL2_OR_LATER );
20
21 #include <stdio.h>
22 #include <getopt.h>
23 #include <gpxe/command.h>
24 #include <usr/route.h>
25
26 /** @file
27 *
28 * Routing table management commands
29 *
30 */
31
32 /**
33 * "route" command syntax message
34 *
35 * @v argv Argument list
36 */
route_syntax(char ** argv)37 static void route_syntax ( char **argv ) {
38 printf ( "Usage:\n"
39 " %s\n"
40 "\n"
41 "Displays the routing table\n",
42 argv[0] );
43 }
44
45 /**
46 * The "route" command
47 *
48 * @v argc Argument count
49 * @v argv Argument list
50 * @ret rc Exit code
51 */
route_exec(int argc,char ** argv)52 static int route_exec ( int argc, char **argv ) {
53 static struct option longopts[] = {
54 { "help", 0, NULL, 'h' },
55 { NULL, 0, NULL, 0 },
56 };
57
58 int c;
59
60 /* Parse options */
61 while ( ( c = getopt_long ( argc, argv, "h", longopts, NULL ) ) >= 0 ){
62 switch ( c ) {
63 case 'h':
64 /* Display help text */
65 default:
66 /* Unrecognised/invalid option */
67 route_syntax ( argv );
68 return 1;
69 }
70 }
71
72 if ( optind != argc ) {
73 route_syntax ( argv );
74 return 1;
75 }
76
77 route();
78 return 0;
79 }
80
81 /** Routing table management commands */
82 struct command route_commands[] __command = {
83 {
84 .name = "route",
85 .exec = route_exec,
86 },
87 };
88