From: Тјеu Кауim <hasbadd...@outlook.com>

Adds a new field `iwinfo_scanlist_entry.country_code` for the ISO 3166
alpha2 of the regulatory domain, extracted from an information element.
It is left zero when the IE is not present, or when a different driver
than nl80211 is used. Also updates the Lua interface to expose it.

Signed-off-by: Тјеu Кауim <hasbadd...@outlook.com>
---
 include/iwinfo.h | 1 +
 iwinfo_lua.c     | 7 +++++++
 iwinfo_nl80211.c | 5 +++++
 3 files changed, 13 insertions(+)

diff --git a/include/iwinfo.h b/include/iwinfo.h
index 8469ee7..9e9a2c4 100644
--- a/include/iwinfo.h
+++ b/include/iwinfo.h
@@ -223,6 +223,7 @@ struct iwinfo_scanlist_entry {
        struct iwinfo_crypto_entry crypto;
        struct iwinfo_scanlist_ht_chan_entry ht_chan_info;
        struct iwinfo_scanlist_vht_chan_entry vht_chan_info;
+       char country_code[2];
 };
 
 struct iwinfo_country_entry {
diff --git a/iwinfo_lua.c b/iwinfo_lua.c
index e49e454..03b6467 100644
--- a/iwinfo_lua.c
+++ b/iwinfo_lua.c
@@ -454,6 +454,13 @@ static int iwinfo_L_scanlist(lua_State *L, int 
(*func)(const char *, char *, int
                        iwinfo_L_cryptotable(L, &e->crypto);
                        lua_setfield(L, -2, "encryption");
 
+                       /* Country */
+                       if (e->country_code[0])
+                       {
+                               lua_pushlstring(L, e->country_code, 2);
+                               lua_setfield(L, -2, "country_code");
+                       }
+
                        lua_rawseti(L, -2, x);
                }
        }
diff --git a/iwinfo_nl80211.c b/iwinfo_nl80211.c
index c4b0ee2..af1e579 100644
--- a/iwinfo_nl80211.c
+++ b/iwinfo_nl80211.c
@@ -2463,6 +2463,11 @@ static void nl80211_get_scanlist_ie(struct nlattr **bss,
                                e->vht_chan_info.center_chan_2 = ie[4];
                        }
                        break;
+
+               case 7: /* Country */
+                       if (ie[1] >= 3)
+                               memcpy(e->country_code, ie + 2, 2);
+                       break;
                }
 
                ielen -= ie[1] + 2;
-- 
2.25.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to