Skip to content

Commit a6a4717

Browse files
Print Source address and port details in verbose logging
- Helpful for debugging when isolating ssh related issues and where high amount of ssh traffic is observed - Before this source port can only be seen either via strace or simultaneous netstat
1 parent 826483d commit a6a4717

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

sshconnect.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop,
453453
int oerrno, sock = -1, attempt;
454454
char ntop[NI_MAXHOST], strport[NI_MAXSERV];
455455
struct addrinfo *ai;
456+
struct sockaddr_storage local_addr;
457+
socklen_t addr_len = sizeof(local_addr);
456458

457459
debug3_f("entering");
458460
memset(ntop, 0, sizeof(ntop));
@@ -529,6 +531,30 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop,
529531

530532
debug("Connection established.");
531533

534+
/*print Local Address and port once connection is established*/
535+
if (getsockname(sock, (struct sockaddr *)&local_addr, &addr_len) == 0) {
536+
char addr_str[INET6_ADDRSTRLEN];
537+
int source_port = 0;
538+
switch(local_addr.ss_family) {
539+
case AF_INET:
540+
struct sockaddr_in *local_addr_in = (struct sockaddr_in *)&local_addr;
541+
inet_ntop(AF_INET, &(local_addr_in->sin_addr), addr_str, sizeof(addr_str));
542+
source_port = ntohs(local_addr_in->sin_port);
543+
break;
544+
case AF_INET6:
545+
struct sockaddr_in6 *local_addr_in6 = (struct sockaddr_in6 *)&local_addr;
546+
inet_ntop(AF_INET6, &(local_addr_in6->sin6_addr), addr_str, sizeof(addr_str));
547+
source_port = ntohs(local_addr_in6->sin6_port);
548+
break;
549+
default:
550+
strncpy(addr_str, "unknown", sizeof(addr_str));
551+
}
552+
553+
debug3("Connection from [%s] port %d", addr_str, source_port);
554+
} else {
555+
debug("Unable to retrieve source address and port: %s", strerror(errno));
556+
}
557+
532558
/* Set SO_KEEPALIVE if requested. */
533559
if (want_keepalive &&
534560
setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&on,

0 commit comments

Comments
 (0)