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_4-7-ga7be57c


From: Mats Erik Andersson
Subject: [SCM] GNU Inetutils branch, master, updated. inetutils-1_9_4-7-ga7be57c
Date: Sat, 25 Jul 2015 21:41:50 +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  a7be57c41320dab107f0368d7af17fed91b682f8 (commit)
      from  9d4bff64fd11773297ed05a5e6dd7eab6e780535 (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=a7be57c41320dab107f0368d7af17fed91b682f8


commit a7be57c41320dab107f0368d7af17fed91b682f8
Author: Mats Erik Andersson <address@hidden>
Date:   Sat Jul 25 23:39:26 2015 +0200

    ifconfig: Symbolic name as peer address.

diff --git a/ChangeLog b/ChangeLog
index 839ecb0..d1f4c47 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2015-07-25  Mats Erik Andersson  <address@hidden>
 
+       ifconfig: Symbolic name as peer address.
+
+       * ifconfig/changeif.c (set_dstaddr): Adapt code block used
+       by set_address(), thereby first using either getaddrinfo()
+       or gethostbyname() to resolve a possibly symbolic peer
+       destination, then setting the established address.
+
+2015-07-25  Mats Erik Andersson  <address@hidden>
+
        ifconfig: Support changing of hardware address.
        Implement the setting of link level addresses
        for systems running GNU/Linux.
diff --git a/ifconfig/changeif.c b/ifconfig/changeif.c
index dfcae9f..a040587 100644
--- a/ifconfig/changeif.c
+++ b/ifconfig/changeif.c
@@ -163,13 +163,65 @@ set_dstaddr (int sfd, struct ifreq *ifr, char *dstaddr)
   error (0, 0,
          "don't know how to set an interface peer address on this system");
   return -1;
-#else
-  SIOCSIF (DSTADDR, dstaddr)
+#else /* !SIOCSIFDSTADDR */
+# if HAVE_DECL_GETADDRINFO
+  int rc;
+  char addr[INET_ADDRSTRLEN];
+  struct addrinfo hints, *ai, *res;
+
+  memset (&hints, 0, sizeof (hints));
+  hints.ai_family = AF_INET;
+
+  rc = getaddrinfo (dstaddr, NULL, &hints, &res);
+  if (rc)
+    {
+      error (0, 0, "cannot resolve `%s': %s", dstaddr, gai_strerror (rc));
+      return -1;
+    }
+  for (ai = res; ai; ai = ai->ai_next)
+    if (ai->ai_family == AF_INET)
+      break;
+
+  if (ai == NULL)
+    {
+      error (0, 0, "`%s' refers to an unknown address type", dstaddr);
+      freeaddrinfo (res);
+      return -1;
+    }
+
+  rc = getnameinfo (ai->ai_addr, ai->ai_addrlen,
+                   addr, sizeof (addr), NULL, 0,
+                   NI_NUMERICHOST);
+  freeaddrinfo (res);
+  if (rc)
+    {
+      error (0, 0, "cannot resolve `%s': %s", dstaddr, gai_strerror (rc));
+      return -1;
+    }
+# else /* !HAVE_DECL_GETADDRINFO */
+  char *addr;
+  struct hostent *host = gethostbyname (dstaddr);
+
+  if (!host)
+    {
+      error (0, 0, "cannot resolve `%s': %s", dstaddr, hstrerror (h_errno));
+      return -1;
+    }
+  if (host->h_addrtype != AF_INET)
+    {
+      error (0, 0, "`%s' refers to an unknown address type", dstaddr);
+      return -1;
+    }
+
+  addr = inet_ntoa (*((struct in_addr *) host->h_addr));
+# endif /* !HAVE_DECL_GETADDRINFO */
+
+  SIOCSIF (DSTADDR, addr)
   if (verbose)
     printf ("Set interface peer address of `%s' to %s.\n",
            ifr->ifr_name, inet_ntoa (sin->sin_addr));
   return 0;
-#endif
+#endif /* SIOCSIFDSTADDR */
 }
 
 int

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

Summary of changes:
 ChangeLog           |    9 ++++++++
 ifconfig/changeif.c |   58 ++++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 64 insertions(+), 3 deletions(-)


hooks/post-receive
-- 
GNU Inetutils 



reply via email to

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