Commit 5d4954ec authored by blogic's avatar blogic
Browse files

[swconfig] add "swconfig list" support


Signed-off-by: default avatarJohn Crispin <blogic@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36282 3c298f89-4303-0410-b956-a3cf2f4a3e73
parent 340205e6
...@@ -167,6 +167,7 @@ show_vlan(struct switch_dev *dev, int vlan, bool all) ...@@ -167,6 +167,7 @@ show_vlan(struct switch_dev *dev, int vlan, bool all)
static void static void
print_usage(void) print_usage(void)
{ {
printf("swconfig list\n");
printf("swconfig dev <dev> [port <port>|vlan <vlan>] (help|set <key> <value>|get <key>|load <config>|show)\n"); printf("swconfig dev <dev> [port <port>|vlan <vlan>] (help|set <key> <value>|get <key>|load <config>|show)\n");
exit(1); exit(1);
} }
...@@ -214,6 +215,11 @@ int main(int argc, char **argv) ...@@ -214,6 +215,11 @@ int main(int argc, char **argv)
char *ckey = NULL; char *ckey = NULL;
char *cvalue = NULL; char *cvalue = NULL;
if((argc == 2) && !strcmp(argv[1], "list")) {
swlib_list();
return 0;
}
if(argc < 4) if(argc < 4)
print_usage(); print_usage();
......
...@@ -624,6 +624,36 @@ done: ...@@ -624,6 +624,36 @@ done:
return NL_SKIP; return NL_SKIP;
} }
static int
list_switch(struct nl_msg *msg, void *arg)
{
struct swlib_scan_arg *sa = arg;
struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
struct switch_dev *dev;
const char *name;
const char *alias;
if (nla_parse(tb, SWITCH_ATTR_MAX, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL) < 0)
goto done;
if (!tb[SWITCH_ATTR_DEV_NAME] || !tb[SWITCH_ATTR_NAME])
goto done;
printf("Found: %s - %s\n", nla_get_string(tb[SWITCH_ATTR_DEV_NAME]),
nla_get_string(tb[SWITCH_ATTR_ALIAS]));
done:
return NL_SKIP;
}
void
swlib_list(void)
{
if (swlib_priv_init() < 0)
return;
swlib_call(SWITCH_CMD_GET_SWITCH, list_switch, NULL, NULL);
swlib_priv_free();
}
struct switch_dev * struct switch_dev *
swlib_connect(const char *name) swlib_connect(const char *name)
......
...@@ -154,6 +154,11 @@ struct switch_port { ...@@ -154,6 +154,11 @@ struct switch_port {
unsigned int flags; unsigned int flags;
}; };
/**
* swlib_list: list all switches
*/
void swlib_list(void);
/** /**
* swlib_connect: connect to the switch through netlink * swlib_connect: connect to the switch through netlink
* @name: name of the ethernet interface, * @name: name of the ethernet interface,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment