2 * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>.
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.
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.
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.
23 #include <gpxe/netdevice.h>
24 #include <gpxe/command.h>
25 #include <usr/dhcpmgmt.h>
29 * DHCP management commands
34 * "dhcp" command syntax message
36 * @v argv Argument list
38 static void dhcp_syntax ( char **argv ) {
42 "Configure a network interface using DHCP\n",
49 * @v argc Argument count
50 * @v argv Argument list
53 static int dhcp_exec ( int argc, char **argv ) {
54 static struct option longopts[] = {
55 { "help", 0, NULL, 'h' },
59 struct net_device *netdev;
64 while ( ( c = getopt_long ( argc, argv, "h", longopts, NULL ) ) >= 0 ){
67 /* Display help text */
69 /* Unrecognised/invalid option */
75 /* Need exactly one interface name remaining after the options */
76 if ( optind != ( argc - 1 ) ) {
83 netdev = find_netdev ( name );
85 printf ( "No such interface: %s\n", name );
88 if ( ( rc = dhcp ( netdev ) ) != 0 ) {
89 printf ( "Could not configure %s: %s\n", netdev->name,
97 /** DHCP management commands */
98 struct command dhcp_commands[] __command = {