X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=contrib%2Fpackage%2Fiwinfo%2Fsrc%2Fiwinfo_lualib.c;h=c87e5591796eb64433fc06e8f790e9a1f07907b3;hp=1377ffeb249d3c49a07dbdd7f51cc72831952749;hb=5039b43e953c16c8510ff89b2c90470882ec55c3;hpb=ed1d776849fc3a30c6f0b9eb07c73e2e1ab59f21 diff --git a/contrib/package/iwinfo/src/iwinfo_lualib.c b/contrib/package/iwinfo/src/iwinfo_lualib.c index 1377ffeb2..c87e55917 100644 --- a/contrib/package/iwinfo/src/iwinfo_lualib.c +++ b/contrib/package/iwinfo/src/iwinfo_lualib.c @@ -308,6 +308,21 @@ static int iwinfo_L_type(lua_State *L) return 1; } +/* Shutdown backends */ +static int iwinfo_L__gc(lua_State *L) +{ +#ifdef USE_WL + wl_close(); +#endif +#ifdef USE_MADWIFI + madwifi_close(); +#endif +#ifdef USE_NL80211 + nl80211_close(); +#endif + wext_close(); +} + /* * Build a short textual description of the crypto info */ @@ -656,6 +671,10 @@ static int iwinfo_L_freqlist(lua_State *L, int (*func)(const char *, char *, int lua_pushinteger(L, e->channel); lua_setfield(L, -2, "channel"); + /* Restricted (DFS/TPC/Radar) */ + lua_pushboolean(L, e->restricted); + lua_setfield(L, -2, "restricted"); + lua_rawseti(L, -2, x); } } @@ -678,6 +697,34 @@ static int iwinfo_L_encryption(lua_State *L, int (*func)(const char *, char *)) return 0; } +/* Wrapper for hwmode list */ +static int iwinfo_L_hwmodelist(lua_State *L, int (*func)(const char*, int *)) +{ + const char *ifname = luaL_checkstring(L, 1); + int hwmodes = 0; + + if( !(*func)(ifname, &hwmodes) ) + { + lua_newtable(L); + + lua_pushboolean(L, hwmodes & IWINFO_80211_A); + lua_setfield(L, -2, "a"); + + lua_pushboolean(L, hwmodes & IWINFO_80211_B); + lua_setfield(L, -2, "b"); + + lua_pushboolean(L, hwmodes & IWINFO_80211_G); + lua_setfield(L, -2, "g"); + + lua_pushboolean(L, hwmodes & IWINFO_80211_N); + lua_setfield(L, -2, "n"); + + return 1; + } + + return 0; +} + /* Wrapper for country list */ static char * iwinfo_L_country_lookup(char *buf, int len, int iso3166) { @@ -755,6 +802,7 @@ LUA_WRAP_LIST(wl,txpwrlist) LUA_WRAP_LIST(wl,scanlist) LUA_WRAP_LIST(wl,freqlist) LUA_WRAP_LIST(wl,countrylist) +LUA_WRAP_LIST(wl,hwmodelist) LUA_WRAP_LIST(wl,encryption) #endif @@ -778,6 +826,7 @@ LUA_WRAP_LIST(madwifi,txpwrlist) LUA_WRAP_LIST(madwifi,scanlist) LUA_WRAP_LIST(madwifi,freqlist) LUA_WRAP_LIST(madwifi,countrylist) +LUA_WRAP_LIST(madwifi,hwmodelist) LUA_WRAP_LIST(madwifi,encryption) #endif @@ -801,6 +850,7 @@ LUA_WRAP_LIST(nl80211,txpwrlist) LUA_WRAP_LIST(nl80211,scanlist) LUA_WRAP_LIST(nl80211,freqlist) LUA_WRAP_LIST(nl80211,countrylist) +LUA_WRAP_LIST(nl80211,hwmodelist) LUA_WRAP_LIST(nl80211,encryption) #endif @@ -823,6 +873,7 @@ LUA_WRAP_LIST(wext,txpwrlist) LUA_WRAP_LIST(wext,scanlist) LUA_WRAP_LIST(wext,freqlist) LUA_WRAP_LIST(wext,countrylist) +LUA_WRAP_LIST(wext,hwmodelist) LUA_WRAP_LIST(wext,encryption) #ifdef USE_WL @@ -845,6 +896,7 @@ static const luaL_reg R_wl[] = { LUA_REG(wl,scanlist), LUA_REG(wl,freqlist), LUA_REG(wl,countrylist), + LUA_REG(wl,hwmodelist), LUA_REG(wl,encryption), LUA_REG(wl,mbssid_support), { NULL, NULL } @@ -871,6 +923,7 @@ static const luaL_reg R_madwifi[] = { LUA_REG(madwifi,scanlist), LUA_REG(madwifi,freqlist), LUA_REG(madwifi,countrylist), + LUA_REG(madwifi,hwmodelist), LUA_REG(madwifi,encryption), LUA_REG(madwifi,mbssid_support), { NULL, NULL } @@ -897,6 +950,7 @@ static const luaL_reg R_nl80211[] = { LUA_REG(nl80211,scanlist), LUA_REG(nl80211,freqlist), LUA_REG(nl80211,countrylist), + LUA_REG(nl80211,hwmodelist), LUA_REG(nl80211,encryption), LUA_REG(nl80211,mbssid_support), { NULL, NULL } @@ -922,6 +976,7 @@ static const luaL_reg R_wext[] = { LUA_REG(wext,scanlist), LUA_REG(wext,freqlist), LUA_REG(wext,countrylist), + LUA_REG(wext,hwmodelist), LUA_REG(wext,encryption), LUA_REG(wext,mbssid_support), { NULL, NULL } @@ -930,6 +985,7 @@ static const luaL_reg R_wext[] = { /* Common */ static const luaL_reg R_common[] = { { "type", iwinfo_L_type }, + { "__gc", iwinfo_L__gc }, { NULL, NULL } };