commit-inetutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Inetutils branch, master, updated. inetutils-1_9_3-4-gc2fb48d


From: Mats Erik Andersson
Subject: [SCM] GNU Inetutils branch, master, updated. inetutils-1_9_3-4-gc2fb48d
Date: Tue, 19 May 2015 21:34:32 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Inetutils ".

The branch, master has been updated
       via  c2fb48d7c9260e6dd6a90133b5e19f44735db344 (commit)
      from  98b0ccfc1fc13a6f73119223fe930f8e957e61d9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/inetutils.git/commit/?id=c2fb48d7c9260e6dd6a90133b5e19f44735db344


commit c2fb48d7c9260e6dd6a90133b5e19f44735db344
Author: Mats Erik Andersson <address@hidden>
Date:   Tue May 19 23:24:58 2015 +0200

    ifconfig: Fix BSD-specific interface access.
    
    Due to recent changes in FreeBSD, change mechanism for
    accessing netmask and broadcast address in all BSD systems.

diff --git a/ChangeLog b/ChangeLog
index 8101429..3f73476 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2015-05-19  Mats Erik Andersson  <address@hidden>
+
+       ifconfig: Fix BSD-specific interface access.
+       Recently FreeBSD abandoned support for ioctl calls
+       with SIOCGIFNETMASK and SIOCGIFBRDADDR.  Instead the
+       use of `struct ifaddrs' is the only mechanism.  This
+       had already been put to use in other cases, and is
+       portably available in all BSD flavours.
+
+       * ifconfig/system/bsd.c (system_fh_brdaddr_query)
+       (system_fh_brdaddr, system_fh_netmask_query, system_fh_netmask):
+       New functions.
+       * ifconfig/system/bsd.h (SYSTEM_FORMAT_HANDLER): Add the new
+       functions to this list, thus replacing the default handlers.
+       Also add their prototypes.
+
 2015-05-18  Mats Erik Andersson  <address@hidden>
 
        ftp: Accept named, non-numerical ports.
diff --git a/ifconfig/system/bsd.c b/ifconfig/system/bsd.c
index 43a4122..4746124 100644
--- a/ifconfig/system/bsd.c
+++ b/ifconfig/system/bsd.c
@@ -201,6 +201,60 @@ struct ifmediareq ifm;
 struct if_nameindex* (*system_if_nameindex) (void) = if_nameindex;
 
 void
+system_fh_brdaddr_query (format_data_t form, int argc, char *argv[])
+{
+  ESTABLISH_IFADDRS
+  if (!ifp)
+    select_arg (form, argc, argv, 1);
+  else
+    {
+      int missing = 1;
+      struct ifaddrs *fp;
+
+      for (fp = ifp; fp; fp = fp->ifa_next)
+       {
+         if (fp->ifa_addr->sa_family != AF_INET ||
+             strcmp (fp->ifa_name, form->ifr->ifr_name))
+           continue;
+
+         if (fp->ifa_netmask)
+           missing = 0;
+         break;
+       }
+      select_arg (form, argc, argv, missing);
+    }
+}
+
+void
+system_fh_brdaddr (format_data_t form, int argc, char *argv[])
+{
+  ESTABLISH_IFADDRS
+  if (!ifp)
+    put_string (form, "(unknown)");
+  else
+    {
+      int missing = 1;
+      struct ifaddrs *fp;
+
+      for (fp = ifp; fp; fp = fp->ifa_next)
+       {
+         if (fp->ifa_addr->sa_family != AF_INET ||
+             strcmp (fp->ifa_name, form->ifr->ifr_name))
+           continue;
+
+         if (fp->ifa_broadaddr)
+           {
+             missing = 0;
+             put_addr (form, argc, argv, fp->ifa_broadaddr);
+           }
+         break;
+       }
+      if (missing)
+       put_string (form, "(unknown)");
+    }
+}
+
+void
 system_fh_hwaddr_query (format_data_t form, int argc, char *argv[])
 {
   ESTABLISH_IFADDRS
@@ -445,6 +499,60 @@ system_fh_media (format_data_t form, int argc 
_GL_UNUSED_PARAMETER,
 }
 
 void
+system_fh_netmask_query (format_data_t form, int argc, char *argv[])
+{
+  ESTABLISH_IFADDRS
+  if (!ifp)
+    select_arg (form, argc, argv, 1);
+  else
+    {
+      int missing = 1;
+      struct ifaddrs *fp;
+
+      for (fp = ifp; fp; fp = fp->ifa_next)
+       {
+         if (fp->ifa_addr->sa_family != AF_INET ||
+             strcmp (fp->ifa_name, form->ifr->ifr_name))
+           continue;
+
+         if (fp->ifa_netmask)
+           missing = 0;
+         break;
+       }
+      select_arg (form, argc, argv, missing);
+    }
+}
+
+void
+system_fh_netmask (format_data_t form, int argc, char *argv[])
+{
+  ESTABLISH_IFADDRS
+  if (!ifp)
+    put_string (form, "(unknown)");
+  else
+    {
+      int missing = 1;
+      struct ifaddrs *fp;
+
+      for (fp = ifp; fp; fp = fp->ifa_next)
+       {
+         if (fp->ifa_addr->sa_family != AF_INET ||
+             strcmp (fp->ifa_name, form->ifr->ifr_name))
+           continue;
+
+         if (fp->ifa_netmask)
+           {
+             missing = 0;
+             put_addr (form, argc, argv, fp->ifa_netmask);
+           }
+         break;
+       }
+      if (missing)
+       put_string (form, "(netmask unknown)");
+    }
+}
+
+void
 system_fh_status_query (format_data_t form, int argc, char *argv[])
 {
   system_fh_media_query (form, argc, argv);
diff --git a/ifconfig/system/bsd.h b/ifconfig/system/bsd.h
index b44e4e5..0b802a6 100644
--- a/ifconfig/system/bsd.h
+++ b/ifconfig/system/bsd.h
@@ -60,21 +60,29 @@ struct system_ifconfig
 # define SYSTEM_FORMAT_HANDLER \
   {"bsd", fh_nothing},         \
   {IU_BSD_TYPE, fh_nothing},   \
+  {"brdaddr?", system_fh_brdaddr_query}, \
+  {"brdaddr", system_fh_brdaddr}, \
   {"hwaddr?", system_fh_hwaddr_query}, \
   {"hwaddr", system_fh_hwaddr}, \
   {"hwtype?", system_fh_hwtype_query}, \
   {"hwtype", system_fh_hwtype},        \
   {"media?", system_fh_media_query}, \
   {"media", system_fh_media},  \
+  {"netmask?", system_fh_netmask_query}, \
+  {"netmask", system_fh_netmask},      \
   {"status?", system_fh_status_query}, \
   {"status", system_fh_status},
 
+void system_fh_brdaddr_query (format_data_t form, int argc, char *argv[]);
+void system_fh_brdaddr (format_data_t form, int argc, char *argv[]);
 void system_fh_hwaddr_query (format_data_t form, int argc, char *argv[]);
 void system_fh_hwaddr (format_data_t form, int argc, char *argv[]);
 void system_fh_hwtype_query (format_data_t form, int argc, char *argv[]);
 void system_fh_hwtype (format_data_t form, int argc, char *argv[]);
 void system_fh_media_query (format_data_t form, int argc, char *argv[]);
 void system_fh_media (format_data_t form, int argc, char *argv[]);
+void system_fh_netmask_query (format_data_t form, int argc, char *argv[]);
+void system_fh_netmask (format_data_t form, int argc, char *argv[]);
 void system_fh_status_query (format_data_t form, int argc, char *argv[]);
 void system_fh_status (format_data_t form, int argc, char *argv[]);
 

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

Summary of changes:
 ChangeLog             |   16 +++++++
 ifconfig/system/bsd.c |  108 +++++++++++++++++++++++++++++++++++++++++++++++++
 ifconfig/system/bsd.h |    8 ++++
 3 files changed, 132 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
GNU Inetutils 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]