Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

CURLOPT_INTERFACE (3)

Name

CURLOPT_INTERFACE - source interface for outgoing traffic

Synopsis

#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);

Description

CURLOPT_INTERFACE(3)       curl_easy_setopt options       CURLOPT_INTERFACE(3)



NAME
       CURLOPT_INTERFACE - source interface for outgoing traffic

SYNOPSIS
       #include <curl/curl.h>

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);

DESCRIPTION
       Pass a char * as parameter. This sets the interface name to use as out-
       going network interface. The name can  be  an  interface  name,  an  IP
       address, or a host name.

       If the parameter starts with "if!" then it is treated as only as inter-
       face name and no attempt will ever be named to do treat  it  as  an  IP
       address  or  to do name resolution on it.  If the parameter starts with
       "host!" it is treated as either an IP address or a hostname.  Hostnames
       are resolved synchronously.  Using the if! format is highly recommended
       when using the multi interfaces to avoid allowing the  code  to  block.
       If  "if!"  is  specified  but  the parameter does not match an existing
       interface, CURLE_INTERFACE_FAILED is returned from the libcurl function
       used to perform the transfer.

       libcurl  does not support using network interface names for this option
       on Windows.

       The application does not have to keep the string around  after  setting
       this option.

DEFAULT
       NULL, use whatever the TCP stack finds suitable

PROTOCOLS
       All

EXAMPLE
       CURL *curl = curl_easy_init();
       if(curl) {
         curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");

         curl_easy_setopt(curl, CURLOPT_INTERFACE, "eth0");

         ret = curl_easy_perform(curl);

         curl_easy_cleanup(curl);
       }

AVAILABILITY
       The "if!" and "host!" syntax was added in 7.24.0.

RETURN VALUE
       Returns  CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insuf-
       ficient heap space.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | web/curl         |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+

SEE ALSO
       CURLOPT_SOCKOPTFUNCTION(3), CURLOPT_TCP_NODELAY(3),



NOTES
       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source      was      downloaded       from        https://curl.se/down-
       load/curl-7.83.1.tar.bz2.

       Further information about this software can be found on the open source
       community website at http://curl.haxx.se/.



libcurl 7.83.1                 November 26, 2021          CURLOPT_INTERFACE(3)