X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-dns-stream.c;h=3690679ec64133c5569f3defbd5ea1c473cc4ddf;hb=d1bddcec98551ea748f39a742a4cbcf9ea9254ef;hp=9a0d59d2247d9500c7b6147aeea30f7744618962;hpb=9a015429b3bbfe1c2802570c1621e73d6cb57ac3;p=elogind.git diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c index 9a0d59d22..3690679ec 100644 --- a/src/resolve/resolved-dns-stream.c +++ b/src/resolve/resolved-dns-stream.c @@ -64,7 +64,7 @@ static int dns_stream_complete(DnsStream *s, int error) { static int dns_stream_identify(DnsStream *s) { union { struct cmsghdr header; /* For alignment */ - uint8_t buffer[CMSG_SPACE(MAX(sizeof(struct in_pktinfo), sizeof(struct in6_pktinfo))) + uint8_t buffer[CMSG_SPACE(MAXSIZE(struct in_pktinfo, struct in6_pktinfo)) + EXTRA_CMSG_SPACE /* kernel appears to require extra space */]; } control; struct msghdr mh = {}; @@ -157,7 +157,7 @@ static int dns_stream_identify(DnsStream *s) { * device if the connection came from the local host since it * avoids the routing table in such a case. Let's unset the * interface index in such a case. */ - if (s->ifindex > 0 && manager_ifindex_is_loopback(s->manager, s->ifindex) != 0) + if (s->ifindex == LOOPBACK_IFINDEX) s->ifindex = 0; /* If we don't know the interface index still, we look for the @@ -172,11 +172,11 @@ static int dns_stream_identify(DnsStream *s) { if (s->local.sa.sa_family == AF_INET) { r = setsockopt(s->fd, IPPROTO_IP, IP_UNICAST_IF, &ifindex, sizeof(ifindex)); if (r < 0) - return -errno; + log_debug("Failed to invoke IP_UNICAST_IF: %m"); } else if (s->local.sa.sa_family == AF_INET6) { r = setsockopt(s->fd, IPPROTO_IPV6, IPV6_UNICAST_IF, &ifindex, sizeof(ifindex)); if (r < 0) - return -errno; + log_debug("Failed to invoke IPV6_UNICAST_IF: %m"); } }