diff options
Diffstat (limited to 'networking')
-rw-r--r-- | networking/nc_bloaty.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/networking/nc_bloaty.c b/networking/nc_bloaty.c index cbc0a6471..0b9428b71 100644 --- a/networking/nc_bloaty.c +++ b/networking/nc_bloaty.c @@ -1,7 +1,7 @@ /* Based on netcat 1.10 RELEASE 960320 written by hobbit@avian.org. * Released into public domain by the author. * - * Copyright (C) 2007 Denis Vlasenko. + * Copyright (C) 2007 Denys Vlasenko. * * Licensed under GPLv2, see file LICENSE in this tarball for details. */ @@ -243,7 +243,7 @@ static int connect_w_timeout(int fd) /* wrap connect inside a timer, and hit it */ arm(o_wait); if (setjmp(jbuf) == 0) { - rr = connect(fd, &themaddr->sa, themaddr->len); + rr = connect(fd, &themaddr->u.sa, themaddr->len); unarm(); } else { /* setjmp: connect failed... */ rr = -1; @@ -275,10 +275,10 @@ static void dolisten(void) random unknown port is probably not very useful without "netstat". */ if (o_verbose) { char *addr; - rr = getsockname(netfd, &ouraddr->sa, &ouraddr->len); + rr = getsockname(netfd, &ouraddr->u.sa, &ouraddr->len); if (rr < 0) bb_perror_msg_and_die("getsockname after bind"); - addr = xmalloc_sockaddr2dotted(&ouraddr->sa); + addr = xmalloc_sockaddr2dotted(&ouraddr->u.sa); fprintf(stderr, "listening on %s ...\n", addr); free(addr); } @@ -306,7 +306,7 @@ static void dolisten(void) remend.len = LSA_SIZEOF_SA; if (themaddr) { remend = *themaddr; - xconnect(netfd, &themaddr->sa, themaddr->len); + xconnect(netfd, &themaddr->u.sa, themaddr->len); } /* peek first packet and remember peer addr */ arm(o_wait); /* might as well timeout this, too */ @@ -314,7 +314,7 @@ static void dolisten(void) /* (*ouraddr) is prefilled with "default" address */ /* and here we block... */ rr = recv_from_to(netfd, NULL, 0, MSG_PEEK, /*was bigbuf_net, BIGSIZ*/ - &remend.sa, &ouraddr->sa, ouraddr->len); + &remend.u.sa, &ouraddr->u.sa, ouraddr->len); if (rr < 0) bb_perror_msg_and_die("recvfrom"); unarm(); @@ -323,25 +323,25 @@ static void dolisten(void) /* Now we learned *to which IP* peer has connected, and we want to anchor our socket on it, so that our outbound packets will have correct local IP. Unfortunately, bind() on already bound socket will fail now (EINVAL): - xbind(netfd, &ouraddr->sa, ouraddr->len); + xbind(netfd, &ouraddr->u.sa, ouraddr->len); Need to read the packet, save data, close this socket and create new one, and bind() it. TODO */ if (!themaddr) - xconnect(netfd, &remend.sa, ouraddr->len); + xconnect(netfd, &remend.u.sa, ouraddr->len); } else { /* TCP */ arm(o_wait); /* wrap this in a timer, too; 0 = forever */ if (setjmp(jbuf) == 0) { again: remend.len = LSA_SIZEOF_SA; - rr = accept(netfd, &remend.sa, &remend.len); + rr = accept(netfd, &remend.u.sa, &remend.len); if (rr < 0) bb_perror_msg_and_die("accept"); - if (themaddr && memcmp(&remend.sa, &themaddr->sa, remend.len) != 0) { + if (themaddr && memcmp(&remend.u.sa, &themaddr->u.sa, remend.len) != 0) { /* nc 1.10 bails out instead, and its error message * is not suppressed by o_verbose */ if (o_verbose) { - char *remaddr = xmalloc_sockaddr2dotted(&remend.sa); + char *remaddr = xmalloc_sockaddr2dotted(&remend.u.sa); bb_error_msg("connect from wrong ip/port %s ignored", remaddr); free(remaddr); } @@ -356,7 +356,7 @@ create new one, and bind() it. TODO */ doing a listen-on-any on a multihomed machine. This allows one to offer different services via different alias addresses, such as the "virtual web site" hack. */ - rr = getsockname(netfd, &ouraddr->sa, &ouraddr->len); + rr = getsockname(netfd, &ouraddr->u.sa, &ouraddr->len); if (rr < 0) bb_perror_msg_and_die("getsockname after accept"); } @@ -393,9 +393,9 @@ create new one, and bind() it. TODO */ accept the connection and then reject undesireable ones by closing. In other words, we need a TCP MSG_PEEK. */ /* bbox: removed most of it */ - lcladdr = xmalloc_sockaddr2dotted(&ouraddr->sa); - remaddr = xmalloc_sockaddr2dotted(&remend.sa); - remhostname = o_nflag ? remaddr : xmalloc_sockaddr2host(&remend.sa); + lcladdr = xmalloc_sockaddr2dotted(&ouraddr->u.sa); + remaddr = xmalloc_sockaddr2dotted(&remend.u.sa); + remhostname = o_nflag ? remaddr : xmalloc_sockaddr2host(&remend.u.sa); fprintf(stderr, "connect to %s from %s (%s)\n", lcladdr, remhostname, remaddr); free(lcladdr); @@ -433,7 +433,7 @@ static int udptest(void) /* Set a temporary connect timeout, so packet filtration doesnt cause us to hang forever, and hit it */ o_wait = 5; /* enough that we'll notice?? */ - rr = xsocket(ouraddr->sa.sa_family, SOCK_STREAM, 0); + rr = xsocket(ouraddr->u.sa.sa_family, SOCK_STREAM, 0); set_nport(themaddr, htons(SLEAZE_PORT)); connect_w_timeout(rr); /* don't need to restore themaddr's port, it's not used anymore */ @@ -746,12 +746,12 @@ int nc_main(int argc, char **argv) if (option_mask32 & OPT_s) { /* local address */ /* if o_lport is still 0, then we will use random port */ ouraddr = xhost2sockaddr(str_s, o_lport); - x = xsocket(ouraddr->sa.sa_family, x, 0); + x = xsocket(ouraddr->u.sa.sa_family, x, 0); } else { /* We try IPv6, then IPv4, unless addr family is * implicitly set by way of remote addr/port spec */ x = xsocket_type(&ouraddr, - USE_FEATURE_IPV6((themaddr ? themaddr->sa.sa_family : AF_UNSPEC),) + USE_FEATURE_IPV6((themaddr ? themaddr->u.sa.sa_family : AF_UNSPEC),) x); if (o_lport) set_nport(ouraddr, htons(o_lport)); @@ -760,7 +760,7 @@ int nc_main(int argc, char **argv) setsockopt_reuseaddr(netfd); if (o_udpmode) socket_want_pktinfo(netfd); - xbind(netfd, &ouraddr->sa, ouraddr->len); + xbind(netfd, &ouraddr->u.sa, ouraddr->len); #if 0 setsockopt(netfd, SOL_SOCKET, SO_RCVBUF, &o_rcvbuf, sizeof o_rcvbuf); setsockopt(netfd, SOL_SOCKET, SO_SNDBUF, &o_sndbuf, sizeof o_sndbuf); @@ -796,7 +796,7 @@ int nc_main(int argc, char **argv) remend = *themaddr; if (o_verbose) - themdotted = xmalloc_sockaddr2dotted(&themaddr->sa); + themdotted = xmalloc_sockaddr2dotted(&themaddr->u.sa); x = connect_w_timeout(netfd); if (o_zero && x == 0 && o_udpmode) /* if UDP scanning... */ |