From 875b9f66d19e8a651ebccf4b689d67c2e412fa74 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Sun, 21 Apr 2013 18:23:46 +0200 Subject: [PATCH] Use BNetworkDevice to get the current associated wireless network. Use BNetworkDevice instead of using the driver settings api to get the associated wireless network. Also got rid of Settings::_PrepareRequest(), since it's no longer needed. --- src/preferences/network/Settings.cpp | 70 ++++------------------------ src/preferences/network/Settings.h | 2 - 2 files changed, 10 insertions(+), 62 deletions(-) diff --git a/src/preferences/network/Settings.cpp b/src/preferences/network/Settings.cpp index 9fcd81ca73..3eab5d3d24 100644 --- a/src/preferences/network/Settings.cpp +++ b/src/preferences/network/Settings.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -50,22 +51,6 @@ Settings::~Settings() } -bool -Settings::_PrepareRequest(struct ifreq& request) -{ - // This function is used for talking direct to the stack. - // It´s used by _ShowConfiguration. - - const char* name = fName.String(); - - if (strlen(name) > IF_NAMESIZE) - return false; - - strcpy(request.ifr_name, name); - return true; -} - - static status_t GetDefaultGateway(BString& gateway) { @@ -132,6 +117,7 @@ Settings::ReadConfiguration() BNetworkInterface interface(fName); BNetworkInterfaceAddress address; + // TODO: We only get the first address if (interface.GetAddressAt(0, address) != B_OK) return; @@ -150,51 +136,15 @@ Settings::ReadConfiguration() fWirelessNetwork.SetTo(NULL); - BPath path; - find_directory(B_COMMON_SETTINGS_DIRECTORY, &path); - path.Append("network"); - path.Append("interfaces"); - - void* handle = load_driver_settings(path.Path()); - if (handle != NULL) { - const driver_settings* settings = get_driver_settings(handle); - if (settings != NULL) { - for (int32 i = 0; i < settings->parameter_count; i++) { - driver_parameter& top = settings->parameters[i]; - if (!strcmp(top.name, "interface")) { - // The name of the interface can either be the value of - // the "interface" parameter, or a separate "name" parameter - const char* name = NULL; - if (top.value_count > 0) { - name = top.values[0]; - if (fName != name) - continue; - } - - // search "network" parameter - for (int32 j = 0; j < top.parameter_count; j++) { - driver_parameter& sub = top.parameters[j]; - if (name == NULL && !strcmp(sub.name, "name") - && sub.value_count > 0) { - name = sub.values[0]; - if (fName != sub.values[0]) - break; - } - - if (!strcmp(sub.name, "network") - && sub.value_count > 0) { - fWirelessNetwork.SetTo(sub.values[0]); - break; - } - } - - // We found our interface - if (fName == name) - break; - } - } + BNetworkDevice networkDevice(fName); + if (networkDevice.IsWireless()) { + uint32 networkIndex = 0; + wireless_network wirelessNetwork; + // TODO: We only get the first associated network for now + if (networkDevice.GetNextAssociatedNetwork(networkIndex, + wirelessNetwork) == B_OK) { + fWirelessNetwork.SetTo(wirelessNetwork.name); } - unload_driver_settings(handle); } // read resolv.conf for the dns. diff --git a/src/preferences/network/Settings.h b/src/preferences/network/Settings.h index d47d730ea9..cfa270c3b2 100644 --- a/src/preferences/network/Settings.h +++ b/src/preferences/network/Settings.h @@ -48,8 +48,6 @@ public: void ReadConfiguration(); private: - bool _PrepareRequest(struct ifreq& request); - BString fIP; BString fGateway; BString fNetmask;