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 | 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) | |||||||
| 	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: | |||||||
| 	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 { | |||||||
| 	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, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin