From: Daniel Stenberg Date: Mon, 7 Aug 2023 07:58:47 +0000 (+0200) Subject: cf-socket: log successful interface bind X-Git-Tag: curl-8_3_0~210 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=80ea7f7fc211f6232517f90c52cc48e06dca8a4f;p=thirdparty%2Fcurl.git cf-socket: log successful interface bind When the setsockopt SO_BINDTODEVICE operation succeeds, output that in the verbose output. Ref: #11599 Closes #11608 --- diff --git a/lib/cf-socket.c b/lib/cf-socket.c index e209eea1be..8a23e43f5f 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -444,29 +444,24 @@ static CURLcode bindlocal(struct Curl_easy *data, struct connectdata *conn, /* interface */ if(!is_host) { #ifdef SO_BINDTODEVICE - /* I am not sure any other OSs than Linux that provide this feature, - * and at the least I cannot test. --Ben - * - * This feature allows one to tightly bind the local socket to a - * particular interface. This will force even requests to other - * local interfaces to go out the external interface. - * - * - * Only bind to the interface when specified as interface, not just - * as a hostname or ip address. + /* + * This binds the local socket to a particular interface. This will + * force even requests to other local interfaces to go out the external + * interface. Only bind to the interface when specified as interface, + * not just as a hostname or ip address. * - * interface might be a VRF, eg: vrf-blue, which means it cannot be - * converted to an IP address and would fail Curl_if2ip. Simply try - * to use it straight away. + * The interface might be a VRF, eg: vrf-blue, which means it cannot be + * converted to an IP address and would fail Curl_if2ip. Simply try to + * use it straight away. */ if(setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, dev, (curl_socklen_t)strlen(dev) + 1) == 0) { - /* This is typically "errno 1, error: Operation not permitted" if - * you're not running as root or another suitable privileged - * user. - * If it succeeds it means the parameter was a valid interface and - * not an IP address. Return immediately. + /* This is often "errno 1, error: Operation not permitted" if you're + * not running as root or another suitable privileged user. If it + * succeeds it means the parameter was a valid interface and not an IP + * address. Return immediately. */ + infof(data, "socket successfully bound to interface '%s'", dev); return CURLE_OK; } #endif