diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-10-24 17:21:54 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-10-24 17:21:54 +0000 |
commit | eecec8b0f2a2cd86827115c1479de974ece00850 (patch) | |
tree | aeedae966fbdefb3c7ddeb8ba1aaf1afc498a93d /contrib/package/iwinfo/src/iwinfo_madwifi.c | |
parent | 6ef55ba3276ba85cb30d07c528266d92067725d4 (diff) |
libiwinfo: move duplicated coded into iwinfo_utils.[ch]
Diffstat (limited to 'contrib/package/iwinfo/src/iwinfo_madwifi.c')
-rw-r--r-- | contrib/package/iwinfo/src/iwinfo_madwifi.c | 69 |
1 files changed, 10 insertions, 59 deletions
diff --git a/contrib/package/iwinfo/src/iwinfo_madwifi.c b/contrib/package/iwinfo/src/iwinfo_madwifi.c index d779be5a8..cb21ac5a0 100644 --- a/contrib/package/iwinfo/src/iwinfo_madwifi.c +++ b/contrib/package/iwinfo/src/iwinfo_madwifi.c @@ -1,7 +1,7 @@ /* * iwinfo - Wireless Information Library - Madwifi Backend * - * Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org> + * Copyright (C) 2009-2010 Jo-Philipp Wich <xm@subsignal.org> * * The iwinfo library is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -196,26 +196,6 @@ static struct ISO3166_to_CCode }; -static int ioctl_socket = -1; - -static int madwifi_socket(void) -{ - /* Prepare socket */ - if( ioctl_socket == -1 ) - { - ioctl_socket = socket(AF_INET, SOCK_DGRAM, 0); - fcntl(ioctl_socket, F_SETFD, fcntl(ioctl_socket, F_GETFD) | FD_CLOEXEC); - } - - return ioctl_socket; -} - -static int madwifi_ioctl(int cmd, void *ifr) -{ - int s = madwifi_socket(); - return ioctl(s, cmd, ifr); -} - static int madwifi_wrq(struct iwreq *wrq, const char *ifname, int cmd, void *data, size_t len) { strncpy(wrq->ifr_name, ifname, IFNAMSIZ); @@ -233,7 +213,7 @@ static int madwifi_wrq(struct iwreq *wrq, const char *ifname, int cmd, void *dat } } - return madwifi_ioctl(cmd, wrq); + return iwinfo_ioctl(cmd, wrq); } static int get80211priv(const char *ifname, int op, void *data, size_t len) @@ -318,7 +298,7 @@ static char * madwifi_ifadd(const char *ifname) strncpy(ifr.ifr_name, wifidev, IFNAMSIZ); ifr.ifr_data = (void *)&cp; - if( !madwifi_ioctl(SIOC80211IFCREATE, &ifr) ) + if( !iwinfo_ioctl(SIOC80211IFCREATE, &ifr) ) return nif; } @@ -330,35 +310,7 @@ static void madwifi_ifdel(const char *ifname) struct ifreq ifr = { 0 }; strncpy(ifr.ifr_name, ifname, IFNAMSIZ); - madwifi_ioctl(SIOC80211IFDESTROY, &ifr); -} - -static int madwifi_ifup(const char *ifname) -{ - struct ifreq ifr; - - strncpy(ifr.ifr_name, ifname, IFNAMSIZ); - - if( madwifi_ioctl(SIOCGIFFLAGS, &ifr) ) - return 0; - - ifr.ifr_flags |= (IFF_UP | IFF_RUNNING); - - return !madwifi_ioctl(SIOCSIFFLAGS, &ifr); -} - -static int madwifi_ifdown(const char *ifname) -{ - struct ifreq ifr; - - strncpy(ifr.ifr_name, ifname, IFNAMSIZ); - - if( madwifi_ioctl(SIOCGIFFLAGS, &ifr) ) - return 0; - - ifr.ifr_flags &= ~(IFF_UP | IFF_RUNNING); - - return !madwifi_ioctl(SIOCSIFFLAGS, &ifr); + iwinfo_ioctl(SIOC80211IFDESTROY, &ifr); } @@ -369,8 +321,7 @@ int madwifi_probe(const char *ifname) void madwifi_close(void) { - if( ioctl_socket > -1 ) - close(ioctl_socket); + /* Nop */ } int madwifi_get_mode(const char *ifname, char *buf) @@ -804,7 +755,7 @@ int madwifi_get_scanlist(const char *ifname, char *buf, int *len) { if( !!madwifi_isvap(e->d_name, ifname) ) { - if( madwifi_ifup(e->d_name) ) + if( iwinfo_ifup(e->d_name) ) { ret = wext_get_scanlist(e->d_name, buf, len); break; @@ -820,10 +771,10 @@ int madwifi_get_scanlist(const char *ifname, char *buf, int *len) { if( (res = madwifi_ifadd(ifname)) != NULL ) { - if( madwifi_ifup(res) ) + if( iwinfo_ifup(res) ) ret = wext_get_scanlist(res, buf, len); - madwifi_ifdown(res); + iwinfo_ifdown(res); madwifi_ifdel(res); } } @@ -988,9 +939,9 @@ int madwifi_get_mbssid_support(const char *ifname, int *buf) if( nif ) { - *buf = madwifi_ifup(nif); + *buf = iwinfo_ifup(nif); - madwifi_ifdown(nif); + iwinfo_ifdown(nif); madwifi_ifdel(nif); return 0; |