aboutsummaryrefslogtreecommitdiffstats
path: root/package/nvram/src/wl.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-01-22 14:46:37 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-01-22 14:46:37 +0000
commit4880cc6dc69fb2623a919f50238f6fa0d9e21bf5 (patch)
tree0a75dd1f63d01539d378f517855a9204d955c763 /package/nvram/src/wl.c
parentb1dfc3a3ef53fb699aa660d7af1cc6bed284295c (diff)
downloadupstream-4880cc6dc69fb2623a919f50238f6fa0d9e21bf5.tar.gz
upstream-4880cc6dc69fb2623a919f50238f6fa0d9e21bf5.tar.bz2
upstream-4880cc6dc69fb2623a919f50238f6fa0d9e21bf5.zip
remove lots of useless junk from the nvram package
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6177 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/nvram/src/wl.c')
-rw-r--r--package/nvram/src/wl.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/package/nvram/src/wl.c b/package/nvram/src/wl.c
index 5738e2cd04..c33610310c 100644
--- a/package/nvram/src/wl.c
+++ b/package/nvram/src/wl.c
@@ -11,12 +11,69 @@
*
* $Id$
*/
+#include <stdio.h>
+#include <unistd.h>
#include <string.h>
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
#include <typedefs.h>
#include <wlutils.h>
int
+wl_ioctl(char *name, int cmd, void *buf, int len)
+{
+ struct ifreq ifr;
+ wl_ioctl_t ioc;
+ int ret = 0;
+ int s;
+
+ /* open socket to kernel */
+ if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+ perror("socket");
+ return errno;
+ }
+
+ /* do it */
+ ioc.cmd = cmd;
+ ioc.buf = buf;
+ ioc.len = len;
+ strncpy(ifr.ifr_name, name, IFNAMSIZ);
+ ifr.ifr_data = (caddr_t) &ioc;
+ if ((ret = ioctl(s, SIOCDEVPRIVATE, &ifr)) < 0)
+ if (cmd != WLC_GET_MAGIC)
+ perror(ifr.ifr_name);
+
+ /* cleanup */
+ close(s);
+ return ret;
+}
+
+int
+wl_hwaddr(char *name, unsigned char *hwaddr)
+{
+ struct ifreq ifr;
+ int ret = 0;
+ int s;
+
+ /* open socket to kernel */
+ if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+ perror("socket");
+ return errno;
+ }
+
+ /* do it */
+ strncpy(ifr.ifr_name, name, IFNAMSIZ);
+ if ((ret = ioctl(s, SIOCGIFHWADDR, &ifr)) == 0)
+ memcpy(hwaddr, ifr.ifr_hwaddr.sa_data, ETHER_ADDR_LEN);
+
+ /* cleanup */
+ close(s);
+ return ret;
+}
+
+int
wl_probe(char *name)
{
int ret, val;