Add mac address config option handling
This commit is contained in:
parent
9b161f4f17
commit
41de03f89f
1 changed files with 24 additions and 1 deletions
25
cli.c
25
cli.c
|
|
@ -2,7 +2,7 @@
|
|||
// vim: sw=8 ts=8
|
||||
|
||||
char const *cvs_name = "$Name: $";
|
||||
char const *cvs_id_cli = "$Id: cli.c,v 1.16 2004/09/19 23:26:46 fred_nerk Exp $";
|
||||
char const *cvs_id_cli = "$Id: cli.c,v 1.17 2004/09/21 05:09:09 fred_nerk Exp $";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
|
@ -102,6 +102,7 @@ int cmd_load_plugin(struct cli_def *cli, char *command, char **argv, int argc);
|
|||
int cmd_remove_plugin(struct cli_def *cli, char *command, char **argv, int argc);
|
||||
int cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc);
|
||||
int regular_stuff(struct cli_def *cli);
|
||||
void parsemac(char *string, char mac[6]);
|
||||
|
||||
void init_cli()
|
||||
{
|
||||
|
|
@ -882,6 +883,14 @@ int cmd_show_run(struct cli_def *cli, char *command, char **argv, int argc)
|
|||
cli_print(cli, "set %s %d", config_values[i].key, *(int *)value);
|
||||
else if (config_values[i].type == UNSIGNED_LONG)
|
||||
cli_print(cli, "set %s %lu", config_values[i].key, *(unsigned long *)value);
|
||||
else if (config_values[i].type == MAC)
|
||||
cli_print(cli, "set %s %02x%02x.%02x%02x.%02x%02x", config_values[i].key,
|
||||
*(unsigned short *)(value + 0),
|
||||
*(unsigned short *)(value + 1),
|
||||
*(unsigned short *)(value + 2),
|
||||
*(unsigned short *)(value + 3),
|
||||
*(unsigned short *)(value + 4),
|
||||
*(unsigned short *)(value + 5));
|
||||
}
|
||||
|
||||
cli_print(cli, "# Plugins");
|
||||
|
|
@ -1664,6 +1673,9 @@ int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
|
|||
case IP:
|
||||
*(unsigned *)value = inet_addr(argv[1]);
|
||||
break;
|
||||
case MAC:
|
||||
parsemac(argv[1], (char *)value);
|
||||
break;
|
||||
case BOOL:
|
||||
if (strcasecmp(argv[1], "yes") == 0 || strcasecmp(argv[1], "true") == 0 || strcasecmp(argv[1], "1") == 0)
|
||||
*(int *)value = 1;
|
||||
|
|
@ -1733,3 +1745,14 @@ int regular_stuff(struct cli_def *cli)
|
|||
#endif
|
||||
return CLI_OK;
|
||||
}
|
||||
|
||||
// Convert a string in the form of abcd.ef12.3456 into char[6]
|
||||
void parsemac(char *string, char mac[6])
|
||||
{
|
||||
if (sscanf(string, "%02x%02x.%02x%02x.%02x%02x", (unsigned int *)&mac[0], (unsigned int *)&mac[1], (unsigned int *)&mac[2], (unsigned int *)&mac[3], (unsigned int *)&mac[4], (unsigned int *)&mac[5]) == 6)
|
||||
return;
|
||||
if (sscanf(string, "%02x%02x:%02x%02x:%02x%02x", (unsigned int *)&mac[0], (unsigned int *)&mac[1], (unsigned int *)&mac[2], (unsigned int *)&mac[3], (unsigned int *)&mac[4], (unsigned int *)&mac[5]) == 6)
|
||||
return;
|
||||
memset(mac, 0, 6);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue