Files
ipxe/src/hci/commands/nvo_cmd.c
Michael Brown 92d15eff30 [Settings] Remove assumption that all settings have DHCP tag values
Allow for settings to be described by something other than a DHCP option
tag if desirable.  Currently used only for the MAC address setting.

Separate out fake DHCP packet creation code from dhcp.c to fakedhcp.c.

Remove notion of settings from dhcppkt.c.

Rationalise dhcp.c to use settings API only for final registration of the
DHCP options, rather than using {store,fetch}_setting throughout.
2008-03-25 20:46:16 +00:00

78 lines
1.4 KiB
C

#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <getopt.h>
#include <gpxe/settings.h>
#include <gpxe/command.h>
static int show_exec ( int argc, char **argv ) {
char buf[256];
int rc;
if ( argc != 2 ) {
printf ( "Syntax: %s <identifier>\n", argv[0] );
return 1;
}
if ( ( rc = fetchf_named_setting ( argv[1], buf,
sizeof ( buf ) ) ) < 0 ){
printf ( "Could not find \"%s\": %s\n",
argv[1], strerror ( rc ) );
return 1;
}
printf ( "%s = %s\n", argv[1], buf );
return 0;
}
static int set_exec ( int argc, char **argv ) {
int rc;
if ( argc != 3 ) {
printf ( "Syntax: %s <identifier> <value>\n", argv[0] );
return 1;
}
if ( ( rc = storef_named_setting ( argv[1], argv[2] ) ) != 0 ) {
printf ( "Could not set \"%s\"=\"%s\": %s\n",
argv[1], argv[2], strerror ( rc ) );
return 1;
}
return 0;
}
static int clear_exec ( int argc, char **argv ) {
int rc;
if ( argc != 2 ) {
printf ( "Syntax: %s <identifier>\n", argv[0] );
return 1;
}
if ( ( rc = delete_named_setting ( argv[1] ) ) != 0 ) {
printf ( "Could not clear \"%s\": %s\n",
argv[1], strerror ( rc ) );
return 1;
}
return 0;
}
struct command nvo_commands[] __command = {
{
.name = "show",
.exec = show_exec,
},
{
.name = "set",
.exec = set_exec,
},
{
.name = "clear",
.exec = clear_exec,
},
};