[haiku-commits] haiku: hrev46328 - src/apps/networkstatus

  • From: stefano.ceccherini@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 8 Nov 2013 23:28:15 +0100 (CET)

hrev46328 adds 1 changeset to branch 'master'
old head: fe2d4a0fa3ebcc16de39aa66383d300ccb7fd860
new head: 8897f2780d28e1b4d42988d82bf5e190968b6819
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=8897f27+%5Efe2d4a0

----------------------------------------------------------------------------

8897f27: NetworkStatus: Use the network API
  Use the Network API instead of querying the net_stack via socket.

                       [ Stefano Ceccherini <stefano.ceccherini@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev46328
Commit:      8897f2780d28e1b4d42988d82bf5e190968b6819
URL:         http://cgit.haiku-os.org/haiku/commit/?id=8897f27
Author:      Stefano Ceccherini <stefano.ceccherini@xxxxxxxxx>
Date:        Fri Nov  8 22:26:26 2013 UTC

----------------------------------------------------------------------------

2 files changed, 9 insertions(+), 80 deletions(-)
src/apps/networkstatus/NetworkStatusView.cpp | 87 +++---------------------
src/apps/networkstatus/NetworkStatusView.h   |  2 -

----------------------------------------------------------------------------

diff --git a/src/apps/networkstatus/NetworkStatusView.cpp 
b/src/apps/networkstatus/NetworkStatusView.cpp
index 45b5a4a..a041506 100644
--- a/src/apps/networkstatus/NetworkStatusView.cpp
+++ b/src/apps/networkstatus/NetworkStatusView.cpp
@@ -73,33 +73,6 @@ const uint32 kMinIconWidth = 16;
 const uint32 kMinIconHeight = 16;
 
 
-class SocketOpener {
-public:
-       SocketOpener()
-       {
-               fSocket = socket(AF_INET, SOCK_DGRAM, 0);
-       }
-
-       ~SocketOpener()
-       {
-               close(fSocket);
-       }
-
-       status_t InitCheck()
-       {
-               return fSocket >= 0 ? B_OK : B_ERROR;
-       }
-
-       operator int() const
-       {
-               return fSocket;
-       }
-
-private:
-       int     fSocket;
-};
-
-
 //     #pragma mark -
 
 
@@ -352,57 +325,26 @@ NetworkStatusView::Draw(BRect updateRect)
 void
 NetworkStatusView::_ShowConfiguration(BMessage* message)
 {
-       static const struct information_entry {
-               const char*     label;
-               int32           control;
-       } kInformationEntries[] = {
-               { B_TRANSLATE("Address"), SIOCGIFADDR },
-               { B_TRANSLATE("Broadcast"), SIOCGIFBRDADDR },
-               { B_TRANSLATE("Netmask"), SIOCGIFNETMASK },
-               { NULL }
-       };
-
-       SocketOpener socket;
-       if (socket.InitCheck() != B_OK)
-               return;
-
        const char* name;
        if (message->FindString("interface", &name) != B_OK)
                return;
 
-       ifreq request;
-       if (!_PrepareRequest(request, name))
+       BNetworkInterface networkInterface(name);
+       if (!networkInterface.Exists())
                return;
 
+       BNetworkInterfaceAddress address;
+       networkInterface.GetAddressAt(0, address);
+               // TODO: We should get all addresses,
+               // not just the first one.
        BString text(B_TRANSLATE("%ifaceName information:\n"));
        text.ReplaceFirst("%ifaceName", name);
 
        size_t boldLength = text.Length();
 
-       for (int i = 0; kInformationEntries[i].label; i++) {
-               if (ioctl(socket, kInformationEntries[i].control, &request,
-                               sizeof(request)) < 0) {
-                       continue;
-               }
-
-               char address[32];
-               sockaddr_in* inetAddress = NULL;
-               switch (kInformationEntries[i].control) {
-                       case SIOCGIFNETMASK:
-                               inetAddress = (sockaddr_in*)&request.ifr_mask;
-                               break;
-                       default:
-                               inetAddress = (sockaddr_in*)&request.ifr_addr;
-                               break;
-               }
-
-               if (inet_ntop(AF_INET, &inetAddress->sin_addr, address,
-                               sizeof(address)) == NULL) {
-                       return;
-               }
-
-               text << "\n" << kInformationEntries[i].label << ": " << address;
-       }
+       text << "\n" << B_TRANSLATE("Address") << ": " << 
address.Address().ToString();
+       text << "\n" << B_TRANSLATE("Broadcast") << ": " << 
address.Broadcast().ToString();
+       text << "\n" << B_TRANSLATE("Netmask") << ": " << 
address.Mask().ToString();
 
        BAlert* alert = new BAlert(name, text.String(), B_TRANSLATE("OK"));
        alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
@@ -523,17 +465,6 @@ NetworkStatusView::_AboutRequested()
 }
 
 
-bool
-NetworkStatusView::_PrepareRequest(struct ifreq& request, const char* name)
-{
-       if (strlen(name) > IF_NAMESIZE)
-               return false;
-
-       strcpy(request.ifr_name, name);
-       return true;
-}
-
-
 int32
 NetworkStatusView::_DetermineInterfaceStatus(
        const BNetworkInterface& interface)
diff --git a/src/apps/networkstatus/NetworkStatusView.h 
b/src/apps/networkstatus/NetworkStatusView.h
index 543bdcf..de16533 100644
--- a/src/apps/networkstatus/NetworkStatusView.h
+++ b/src/apps/networkstatus/NetworkStatusView.h
@@ -56,8 +56,6 @@ class NetworkStatusView : public BView {
                void                    _Init();
                void                    _UpdateBitmaps();
                void                    _ShowConfiguration(BMessage* message);
-               bool                    _PrepareRequest(struct ifreq& request,
-                                                       const char* name);
                int32                   _DetermineInterfaceStatus(
                                                        const 
BNetworkInterface& interface);
                void                    _Update(bool force = false);


Other related posts:

  • » [haiku-commits] haiku: hrev46328 - src/apps/networkstatus - stefano . ceccherini