mirror of
https://github.com/curl/curl.git
synced 2026-08-25 14:53:34 +03:00
socket: support binding to interface *AND* IP
Introduce new notation for CURLOPT_INTERFACE / --interface: ifhost!<interface>!<host> Binding to an interface doesn't set the address, and an interface can have multiple addresses. When binding to an address (without interface), the kernel is free to choose the route, and it can route through any device that can access the target address, not necessarily the one with the chosen address. Moreover, it is possible for different interfaces to have the same IP address, on which case we need to provide a way to be more specific. Factor out the parsing part of interface option, and add unit tests: 1663. Closes #13719
This commit is contained in:
parent
23fe1a52dc
commit
3060557af7
10 changed files with 322 additions and 79 deletions
|
|
@ -54,6 +54,11 @@ struct Curl_sockaddr_ex {
|
|||
};
|
||||
#define sa_addr _sa_ex_u.addr
|
||||
|
||||
/*
|
||||
* Parse interface option, and return the interface name and the host part.
|
||||
*/
|
||||
CURLcode Curl_parse_interface(const char *input, size_t len,
|
||||
char **dev, char **iface, char **host);
|
||||
|
||||
/*
|
||||
* Create a socket based on info from 'conn' and 'ai'.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue