]> granicus.if.org Git - curl/commit
IPV6: address scope != scope id
authorPatrick Monnerat <pm@datasphere.ch>
Tue, 16 Dec 2014 12:29:01 +0000 (13:29 +0100)
committerPatrick Monnerat <pm@datasphere.ch>
Tue, 16 Dec 2014 12:52:06 +0000 (13:52 +0100)
commit9081014c2c467077723d5ae1d0081003b3eb3504
treed7bd9122e6c111344321164b1e0048c1df3e7266
parent759d049ae819adc1e913950da4772b5a6163eb79
IPV6: address scope != scope id
There was a confusion between these: this commit tries to disambiguate them.
- Scope can be computed from the address itself.
- Scope id is scope dependent: it is currently defined as 1-based local
  interface index for link-local scoped addresses, and as a site index(?) for
  (obsolete) site-local addresses. Linux only supports it for link-local
  addresses.
The URL parser properly parses a scope id as an interface index, but stores it
in a field named "scope": confusion. The field has been renamed into "scope_id".
Curl_if2ip() used the scope id as it was a scope. This caused failures
to bind to an interface.
Scope is now computed from the addresses and Curl_if2ip() matches them.
If redundantly specified in the URL, scope id is check for mismatch with
the interface index.

This commit should fix SF bug #1451.
lib/connect.c
lib/ftp.c
lib/if2ip.c
lib/if2ip.h
lib/imap.c
lib/pop3.c
lib/smtp.c
lib/url.c
lib/urldata.h