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
|
// vim: sw=8 ts=8
|
||||||
|
|
||||||
char const *cvs_name = "$Name: $";
|
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 <stdio.h>
|
||||||
#include <stdarg.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_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 cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc);
|
||||||
int regular_stuff(struct cli_def *cli);
|
int regular_stuff(struct cli_def *cli);
|
||||||
|
void parsemac(char *string, char mac[6]);
|
||||||
|
|
||||||
void init_cli()
|
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);
|
cli_print(cli, "set %s %d", config_values[i].key, *(int *)value);
|
||||||
else if (config_values[i].type == UNSIGNED_LONG)
|
else if (config_values[i].type == UNSIGNED_LONG)
|
||||||
cli_print(cli, "set %s %lu", config_values[i].key, *(unsigned long *)value);
|
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");
|
cli_print(cli, "# Plugins");
|
||||||
|
|
@ -1664,6 +1673,9 @@ int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
|
||||||
case IP:
|
case IP:
|
||||||
*(unsigned *)value = inet_addr(argv[1]);
|
*(unsigned *)value = inet_addr(argv[1]);
|
||||||
break;
|
break;
|
||||||
|
case MAC:
|
||||||
|
parsemac(argv[1], (char *)value);
|
||||||
|
break;
|
||||||
case BOOL:
|
case BOOL:
|
||||||
if (strcasecmp(argv[1], "yes") == 0 || strcasecmp(argv[1], "true") == 0 || strcasecmp(argv[1], "1") == 0)
|
if (strcasecmp(argv[1], "yes") == 0 || strcasecmp(argv[1], "true") == 0 || strcasecmp(argv[1], "1") == 0)
|
||||||
*(int *)value = 1;
|
*(int *)value = 1;
|
||||||
|
|
@ -1733,3 +1745,14 @@ int regular_stuff(struct cli_def *cli)
|
||||||
#endif
|
#endif
|
||||||
return CLI_OK;
|
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