diff options
author | Daniel Stenberg <daniel@haxx.se> | 2017-08-13 17:51:52 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2017-08-13 17:52:15 +0200 |
commit | b748d7af7ea4bb9baf5517cc53756f8d4d7be1ca (patch) | |
tree | aaed19bec8e85542f9056415b51fc599fc70e551 /lib/if2ip.c | |
parent | 10b3df10596adb68f9014331a6bf5f3c660f383d (diff) | |
download | curl-b748d7af7ea4bb9baf5517cc53756f8d4d7be1ca.tar.gz |
ipv6_scope: support unique local addresses
Fixes #1764
Closes #1773
Reported-by: James Slaughter
Diffstat (limited to 'lib/if2ip.c')
-rw-r--r-- | lib/if2ip.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/if2ip.c b/lib/if2ip.c index 3e74cc687..a91b6d2ab 100644 --- a/lib/if2ip.c +++ b/lib/if2ip.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -71,6 +71,8 @@ unsigned int Curl_ipv6_scope(const struct sockaddr *sa) const unsigned char *b = sa6->sin6_addr.s6_addr; unsigned short w = (unsigned short) ((b[0] << 8) | b[1]); + if((b[0] & 0xFE) == 0xFC) /* Handle ULAs */ + return IPV6_SCOPE_UNIQUELOCAL; switch(w & 0xFFC0) { case 0xFE80: return IPV6_SCOPE_LINKLOCAL; |