[29817] in CVS-changelog-for-Kerberos-V5
krb5 commit [krb5-1.15]: Use pktinfo for explicit UDP wildcard
daemon@ATHENA.MIT.EDU (Tom Yu)
Mon Jan 9 15:30:51 2017
Date: Mon, 9 Jan 2017 15:30:43 -0500
From: Tom Yu <tlyu@mit.edu>
Message-Id: <201701092030.v09KUhnp027086@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu
https://github.com/krb5/krb5/commit/e23d062471bf9071072aaf2df39054508fe74cc1
commit e23d062471bf9071072aaf2df39054508fe74cc1
Author: Greg Hudson <ghudson@mit.edu>
Date: Mon Dec 26 15:18:05 2016 -0500
Use pktinfo for explicit UDP wildcard listeners
In net-server.c, use pktinfo on UDP server sockets if they are bound
to wildcard addresses, whether that is explicit or implicit in the
address specification.
(cherry picked from commit d005beaa72c70bc28b2b0b49b9d83eff160ca8f1)
ticket: 8530
version_fixed: 1.15.1
src/lib/apputils/net-server.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/src/lib/apputils/net-server.c b/src/lib/apputils/net-server.c
index d64ffdd..29ec84a 100644
--- a/src/lib/apputils/net-server.c
+++ b/src/lib/apputils/net-server.c
@@ -105,6 +105,17 @@ paddr(struct sockaddr *sa)
return buf;
}
+/* Return true if sa is an IPv4 or IPv6 wildcard address. */
+static int
+is_wildcard(struct sockaddr *sa)
+{
+ if (sa->sa_family == AF_INET6)
+ return IN6_IS_ADDR_UNSPECIFIED(&sa2sin6(sa)->sin6_addr);
+ else if (sa->sa_family == AF_INET)
+ return sa2sin(sa)->sin_addr.s_addr == INADDR_ANY;
+ return 0;
+}
+
/* KDC data. */
enum conn_type {
@@ -753,7 +764,7 @@ setup_socket(struct socksetup *data, struct bind_address *ba,
}
/* Try to turn on pktinfo for UDP wildcard sockets. */
- if (ba->type == UDP && ba->address == NULL) {
+ if (ba->type == UDP && is_wildcard(sock_address)) {
krb5_klog_syslog(LOG_DEBUG, _("Setting pktinfo on socket %s"),
paddr(sock_address));
ret = set_pktinfo(sock, sock_address->sa_family);
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5