add "swconfig list" support
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 36282
This commit is contained in:
		| @@ -167,6 +167,7 @@ show_vlan(struct switch_dev *dev, int vlan, bool all) | ||||
| static 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"); | ||||
| 	exit(1); | ||||
| } | ||||
| @@ -214,6 +215,11 @@ int main(int argc, char **argv) | ||||
| 	char *ckey = NULL; | ||||
| 	char *cvalue = NULL; | ||||
|  | ||||
| 	if((argc == 2) && !strcmp(argv[1], "list")) { | ||||
| 		swlib_list(); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	if(argc < 4) | ||||
| 		print_usage(); | ||||
|  | ||||
|   | ||||
| @@ -624,6 +624,36 @@ done: | ||||
| 	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 * | ||||
| swlib_connect(const char *name) | ||||
|   | ||||
| @@ -154,6 +154,11 @@ struct switch_port { | ||||
| 	unsigned int flags; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * swlib_list: list all switches | ||||
|  */ | ||||
| void swlib_list(void); | ||||
|  | ||||
| /** | ||||
|  * swlib_connect: connect to the switch through netlink | ||||
|  * @name: name of the ethernet interface, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin