From 82d1c7f615b64508df592271b68a3d4f60df0762 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sun, 15 Oct 2006 16:56:09 +0000
Subject: [PATCH] implement wlc call to read wds endpoint mac

SVN-Revision: 5121
---
 package/broadcom-wl/src/wlc/wlc.c | 42 +++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/package/broadcom-wl/src/wlc/wlc.c b/package/broadcom-wl/src/wlc/wlc.c
index 09cbb84538..2d6b846a09 100644
--- a/package/broadcom-wl/src/wlc/wlc.c
+++ b/package/broadcom-wl/src/wlc/wlc.c
@@ -644,6 +644,36 @@ static int wlc_wme_ac(wlc_param param, void *data, void *value)
 	return ret;
 }
 
+static int wlc_ifname(wlc_param param, void *data, void *value)
+{
+	char *val = (char *) value;
+	int ret = 0;
+	
+	if (param & SET) {
+		if (strlen(val) < 16)
+			strcpy(interface, val);
+		else ret = -1;
+	}
+	if (param & GET) {
+		strcpy(val, interface);
+	}
+
+	return ret;
+}
+
+static int wlc_wdsmac(wlc_param param, void *data, void *value)
+{
+	static struct ether_addr mac;
+	int ret = 0;
+	
+	ret = wl_ioctl(interface, WLC_WDS_GET_REMOTE_HWADDR, &mac, 6);
+	if (ret == 0) {
+		strcpy((char *) value, ether_ntoa(&mac));
+	}
+
+	return ret;
+}
+
 static const struct wlc_call wlc_calls[] = {
 	{
 		.name = "version",
@@ -666,6 +696,12 @@ static const struct wlc_call wlc_calls[] = {
 		.data.ptr = &fromstdin,
 		.desc = "Accept input from stdin"
 	},
+	{
+		.name = "ifname",
+		.param = STRING,
+		.handler = wlc_ifname,
+		.desc = "interface to send commands to"
+	},
 	{
 		.name = "up",
 		.param = NOARG,
@@ -956,6 +992,12 @@ static const struct wlc_call wlc_calls[] = {
 		.data.str = "wdstimeout",
 		.desc = "WDS link detection timeout"
 	},
+	{
+		.name = "wdsmac",
+		.param = STRING|NOARG,
+		.handler = wlc_wdsmac,
+		.desc = "MAC of the remote WDS endpoint (only with wds0.* interfaces)"
+	},
 	{
 		.name = "afterburner",
 		.param = INT,
-- 
2.30.2