From: Dmitrii Turlupov Date: Thu, 4 Feb 2021 13:27:31 +0000 (+0300) Subject: ssh: optional bind interface if bind address specified. X-Git-Tag: V_8_5_P1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a878a71a3528c2626aa1d331934fd964782d41c;p=thirdparty%2Fopenssh-portable.git ssh: optional bind interface if bind address specified. Allows the -b and -B options to be used together. For example, when the interface is in the VRF. --- diff --git a/sshconnect.c b/sshconnect.c index 74f9e7670..8666bd6ed 100644 --- a/sshconnect.c +++ b/sshconnect.c @@ -390,6 +390,12 @@ ssh_create_socket(struct addrinfo *ai) } memcpy(&bindaddr, res->ai_addr, res->ai_addrlen); bindaddrlen = res->ai_addrlen; + + /*'-B' option*/ + if (options.bind_interface != NULL) { + if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, options.bind_interface, strlen(options.bind_interface) + 1)) + debug("error: setsockopt SO_BINDTODEVICE"); + } } else if (options.bind_interface != NULL) { #ifdef HAVE_IFADDRS_H if ((r = getifaddrs(&ifaddrs)) != 0) {