From ef763fa4bd47892d9949dbaf292b032e2fc16475 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 20 Mar 2016 15:16:21 +0100 Subject: slirp: Support link-local DNS addresses They look like fe80::%eth0 Signed-off-by: Samuel Thibault Reviewed-by: Thomas Huth --- Changes since last submission: - fix windows build --- slirp/socket.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'slirp/socket.c') diff --git a/slirp/socket.c b/slirp/socket.c index 8e8de88044..02e89ce1f2 100644 --- a/slirp/socket.c +++ b/slirp/socket.c @@ -816,7 +816,10 @@ void sotranslate_out(struct socket *so, struct sockaddr_storage *addr) if (in6_equal_net(&so->so_faddr6, &slirp->vprefix_addr6, slirp->vprefix_len)) { if (in6_equal(&so->so_faddr6, &slirp->vnameserver_addr6)) { - if (get_dns6_addr(&sin6->sin6_addr) < 0) { + uint32_t scope_id; + if (get_dns6_addr(&sin6->sin6_addr, &scope_id) >= 0) { + sin6->sin6_scope_id = scope_id; + } else { sin6->sin6_addr = in6addr_loopback; } } else { -- cgit v1.2.3