diff --git a/repos/dde_linux/src/lib/libnl/if.cc b/repos/dde_linux/src/lib/libnl/if.cc index e121b3982e..e99254d4db 100644 --- a/repos/dde_linux/src/lib/libnl/if.cc +++ b/repos/dde_linux/src/lib/libnl/if.cc @@ -3,20 +3,21 @@ #include -#define WLAN_DEV "wlan0" - extern "C" { +unsigned int wifi_ifindex(void); +char const * wifi_ifname(void); + unsigned int if_nametoindex(const char *ifname) { - /* we make sure the index is always 1 in the wifi driver */ - return 1; + return wifi_ifindex(); } char *if_indextoname(unsigned int ifindex, char *ifname) { - Genode::memcpy(ifname, WLAN_DEV, Genode::strlen(WLAN_DEV)); + char const *p = wifi_ifname(); + Genode::memcpy(ifname, p, Genode::strlen(p)); return ifname; } diff --git a/repos/dde_linux/src/lib/wifi/init.cc b/repos/dde_linux/src/lib/wifi/init.cc index 1f2db4a3fe..391f240963 100644 --- a/repos/dde_linux/src/lib/wifi/init.cc +++ b/repos/dde_linux/src/lib/wifi/init.cc @@ -67,6 +67,18 @@ void wifi_set_rfkill(bool blocked) } +extern "C" unsigned int wifi_ifindex(void) +{ + return 1; +} + + +extern "C" char const wifi_ifname(void) +{ + return "wlan0"; +} + + /************************** ** socketcall poll hack ** **************************/ diff --git a/repos/dde_linux/src/lib/wifi/symbol.map b/repos/dde_linux/src/lib/wifi/symbol.map index 261c62a9f3..765e7b3952 100644 --- a/repos/dde_linux/src/lib/wifi/symbol.map +++ b/repos/dde_linux/src/lib/wifi/symbol.map @@ -14,6 +14,9 @@ _*wifi_*_rfkill*; _*wifi_kick_*; + /* interface libnl/wpa_driver_nl80211*/ + wifi_if*; + /* used by libnl's time() */ jiffies; diff --git a/repos/dde_linux/src/lib/wpa_driver_nl80211/ioctl.cc b/repos/dde_linux/src/lib/wpa_driver_nl80211/ioctl.cc index 37ba5eff9b..7394398211 100644 --- a/repos/dde_linux/src/lib/wpa_driver_nl80211/ioctl.cc +++ b/repos/dde_linux/src/lib/wpa_driver_nl80211/ioctl.cc @@ -31,6 +31,8 @@ extern Wifi::Socket_call socket_call; extern "C" { +unsigned int wifi_ifindex(void); + int ioctl(int fd, unsigned long request, ...) { long arg; @@ -46,7 +48,7 @@ int ioctl(int fd, unsigned long request, ...) Genode::error("ioctl: request SIOCGIFADDR not implemented."); return -1; case SIOCGIFINDEX: - ifr->ifr_ifindex = 1; + ifr->ifr_ifindex = wifi_ifindex(); return 0; case SIOCGIFHWADDR: socket_call.get_mac_address((unsigned char*)ifr->ifr_hwaddr.sa_data);