dwww Home | Manual pages | Find package

CURLOPT_INTERFACE(3)        Library Functions Manual       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 pointer as parameter. This sets the interface name to use as
       outgoing network interface. The name can be an interface name, an IP ad-
       dress,  or  a hostname. If you prefer one of these, you can use the fol-
       lowing special prefixes:

       * if!<name> - Interface name * host!<name> - IP address  or  hostname  *
       ifhost!<interface>!<host> - Interface name and IP address or hostname

       If  if!  or ifhost! is specified but the parameter does not match an ex-
       isting 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.

       We strongly advise against specifying the interface with a hostname,  as
       it  causes libcurl to do a blocking name resolve call to retrieve the IP
       address.  That name resolve operation does not use  DNS-over-HTTPS  even
       if CURLOPT_DOH_URL(3) is set.

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

       Using this option multiple times makes the last set string override  the
       previous ones. Set it to NULL to disable its use again.

DEFAULT
       NULL, use whatever the TCP stack finds suitable

PROTOCOLS
       This functionality affects all supported protocols

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

           curl_easy_setopt(curl, CURLOPT_INTERFACE, "eth0");

           res = curl_easy_perform(curl);

           curl_easy_cleanup(curl);
         }
       }

HISTORY
       The if! and host! syntax was added in 7.24.0.

       The ifhost! syntax was added in 8.9.0.

AVAILABILITY
       Added in curl 7.3

RETURN VALUE
       curl_easy_setopt(3) returns a CURLcode indicating success or error.

       CURLE_OK  (0) means everything was OK, non-zero means an error occurred,
       see libcurl-errors(3).

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

libcurl                            2026-07-12              CURLOPT_INTERFACE(3)

Generated by dwww version 1.16 on Sat Oct 3 05:05:58 CEST 2026.