From 5a878a71a3528c2626aa1d331934fd964782d41c Mon Sep 17 00:00:00 2001 From: Dmitrii Turlupov Date: Thu, 4 Feb 2021 16:27:31 +0300 Subject: 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. --- sshconnect.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sshconnect.c b/sshconnect.c index 74f9e767..8666bd6e 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) { -- cgit v1.2.3