nshlib: Add vconfig command

Add vconfig command

Signed-off-by: gaohedong <gaohedong@xiaomi.com>
This commit is contained in:
Zhe Weng 2025-01-07 18:02:39 +08:00 committed by Xiang Xiao
parent 9c4103d496
commit ae7c168bf6
4 changed files with 58 additions and 0 deletions

View file

@ -423,6 +423,10 @@ config NSH_DISABLE_IFCONFIG
bool "Disable ifconfig"
default DEFAULT_SMALL || !FS_PROCFS || FS_PROCFS_EXCLUDE_NET
config NSH_DISABLE_VCONFIG
bool "Disable vconfig"
default DEFAULT_SMALL || !FS_PROCFS || FS_PROCFS_EXCLUDE_NET
config NSH_DISABLE_IFUPDOWN
bool "Disable ifup/down"
default DEFAULT_SMALL || !FS_PROCFS || FS_PROCFS_EXCLUDE_NET

View file

@ -1093,6 +1093,9 @@ int cmd_irqinfo(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
# ifndef CONFIG_NSH_DISABLE_IFCONFIG
int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
# endif
# ifndef CONFIG_NSH_DISABLE_VCONFIG
int cmd_vconfig(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
# endif
# ifndef CONFIG_NSH_DISABLE_IFUPDOWN
int cmd_ifup(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
int cmd_ifdown(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);

View file

@ -286,6 +286,10 @@ static const struct cmdmap_s g_cmdmap[] =
"[dr|gw|gateway <dr-address>] [netmask <net-mask>|prefixlen <len>] "
"[dns <dns-address>] [hw <hw-mac>]"),
# endif
# if defined(CONFIG_NET_VLAN) && !defined(CONFIG_NSH_DISABLE_VCONFIG)
CMD_MAP("vconfig", cmd_vconfig, 3, 4,
"[add iface-name vlan-id]|[rem vlan-name]"),
# endif
# ifndef CONFIG_NSH_DISABLE_IFUPDOWN
CMD_MAP("ifdown", cmd_ifdown, 2, 2, "<interface>"),
CMD_MAP("ifup", cmd_ifup, 2, 2, "<interface>"),

View file

@ -1097,6 +1097,53 @@ int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
}
#endif
/****************************************************************************
* Name: cmd_vconfig
****************************************************************************/
#if defined(CONFIG_NET_VLAN) && !defined(CONFIG_NSH_DISABLE_VCONFIG)
int cmd_vconfig(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
{
DEBUGASSERT(argc >= 2);
if (!strcmp(argv[1], "add"))
{
if (argc != 4)
{
nsh_error(vtbl, g_fmtargrequired, argv[0]);
return ERROR;
}
if (netlib_add_vlan(argv[2], atoi(argv[3])) < 0)
{
perror("Failed to add VLAN");
return ERROR;
}
}
else if (!strcmp(argv[1], "rem") || !strcmp(argv[1], "del"))
{
if (argc != 3)
{
nsh_error(vtbl, g_fmtargrequired, argv[0]);
return ERROR;
}
if (netlib_del_vlan(argv[2]) < 0)
{
perror("Failed to remove VLAN");
return ERROR;
}
}
else
{
nsh_error(vtbl, g_fmtarginvalid, argv[1]);
return ERROR;
}
return OK;
}
#endif
/****************************************************************************
* Name: cmd_nslookup
****************************************************************************/