mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 15:48:49 -05:00
ipv6_scope: support unique local addresses
Fixes #1764 Closes #1773 Reported-by: James Slaughter
This commit is contained in:
parent
10b3df1059
commit
b748d7af7e
@ -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
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* 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;
|
const unsigned char *b = sa6->sin6_addr.s6_addr;
|
||||||
unsigned short w = (unsigned short) ((b[0] << 8) | b[1]);
|
unsigned short w = (unsigned short) ((b[0] << 8) | b[1]);
|
||||||
|
|
||||||
|
if((b[0] & 0xFE) == 0xFC) /* Handle ULAs */
|
||||||
|
return IPV6_SCOPE_UNIQUELOCAL;
|
||||||
switch(w & 0xFFC0) {
|
switch(w & 0xFFC0) {
|
||||||
case 0xFE80:
|
case 0xFE80:
|
||||||
return IPV6_SCOPE_LINKLOCAL;
|
return IPV6_SCOPE_LINKLOCAL;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2014, 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
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -27,7 +27,8 @@
|
|||||||
#define IPV6_SCOPE_GLOBAL 0 /* Global scope. */
|
#define IPV6_SCOPE_GLOBAL 0 /* Global scope. */
|
||||||
#define IPV6_SCOPE_LINKLOCAL 1 /* Link-local scope. */
|
#define IPV6_SCOPE_LINKLOCAL 1 /* Link-local scope. */
|
||||||
#define IPV6_SCOPE_SITELOCAL 2 /* Site-local scope (deprecated). */
|
#define IPV6_SCOPE_SITELOCAL 2 /* Site-local scope (deprecated). */
|
||||||
#define IPV6_SCOPE_NODELOCAL 3 /* Loopback. */
|
#define IPV6_SCOPE_UNIQUELOCAL 3 /* Unique local */
|
||||||
|
#define IPV6_SCOPE_NODELOCAL 4 /* Loopback. */
|
||||||
|
|
||||||
unsigned int Curl_ipv6_scope(const struct sockaddr *sa);
|
unsigned int Curl_ipv6_scope(const struct sockaddr *sa);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user