[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SCM] GNU Inetutils branch, master, updated. inetutils-1_9_4-7-ga7be57c,
Mats Erik Andersson <=