=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/telnet/commands.c,v retrieving revision 1.4 retrieving revision 1.5 diff -c -r1.4 -r1.5 *** src/usr.bin/telnet/commands.c 1996/04/21 23:44:11 1.4 --- src/usr.bin/telnet/commands.c 1996/07/03 14:01:55 1.5 *************** *** 1,4 **** ! /* $OpenBSD: commands.c,v 1.4 1996/04/21 23:44:11 deraadt Exp $ */ /* $NetBSD: commands.c,v 1.14 1996/03/24 22:03:48 jtk Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: commands.c,v 1.5 1996/07/03 14:01:55 niklas Exp $ */ /* $NetBSD: commands.c,v 1.14 1996/03/24 22:03:48 jtk Exp $ */ /* *************** *** 39,45 **** static char sccsid[] = "@(#)commands.c 8.4 (Berkeley) 5/30/95"; static char rcsid[] = "$NetBSD: commands.c,v 1.14 1996/03/24 22:03:48 jtk Exp $"; #else ! static char rcsid[] = "$OpenBSD: commands.c,v 1.4 1996/04/21 23:44:11 deraadt Exp $"; #endif #endif /* not lint */ --- 39,45 ---- static char sccsid[] = "@(#)commands.c 8.4 (Berkeley) 5/30/95"; static char rcsid[] = "$NetBSD: commands.c,v 1.14 1996/03/24 22:03:48 jtk Exp $"; #else ! static char rcsid[] = "$OpenBSD: commands.c,v 1.5 1996/07/03 14:01:55 niklas Exp $"; #endif #endif /* not lint */ *************** *** 2084,2091 **** int argc; char *argv[]; { ! register struct hostent *host = 0; struct sockaddr_in sin; struct servent *sp = 0; unsigned long temp; extern char *inet_ntoa(); --- 2084,2092 ---- int argc; char *argv[]; { ! register struct hostent *host = 0, *alias = 0; struct sockaddr_in sin; + struct sockaddr_in ladr; struct servent *sp = 0; unsigned long temp; extern char *inet_ntoa(); *************** *** 2093,2099 **** char *srp = 0, *strrchr(); unsigned long sourceroute(), srlen; #endif ! char *cmd, *hostp = 0, *portp = 0, *user = 0; /* clear the socket address prior to use */ memset((char *)&sin, 0, sizeof(sin)); --- 2094,2100 ---- char *srp = 0, *strrchr(); unsigned long sourceroute(), srlen; #endif ! char *cmd, *hostp = 0, *portp = 0, *user = 0, *aliasp = 0; /* clear the socket address prior to use */ memset((char *)&sin, 0, sizeof(sin)); *************** *** 2124,2129 **** --- 2125,2138 ---- --argc; continue; } + if (strcmp(*argv, "-b") == 0) { + --argc; ++argv; + if (argc == 0) + goto usage; + aliasp = *argv++; + --argc; + continue; + } if (strcmp(*argv, "-a") == 0) { --argc; ++argv; autologin = 1; *************** *** 2242,2248 **** perror("telnet: socket"); return 0; } ! #if defined(IP_OPTIONS) && defined(IPPROTO_IP) if (srp && setsockopt(net, IPPROTO_IP, IP_OPTIONS, (char *)srp, srlen) < 0) perror("setsockopt (IP_OPTIONS)"); #endif --- 2251,2288 ---- perror("telnet: socket"); return 0; } ! if (aliasp) { ! memset ((caddr_t)&ladr, 0, sizeof (ladr)); ! temp = inet_addr(aliasp); ! if (temp != INADDR_NONE) { ! ladr.sin_addr.s_addr = temp; ! ladr.sin_family = AF_INET; ! alias = gethostbyaddr((char *)&temp, sizeof(temp), AF_INET); ! } else { ! alias = gethostbyname(aliasp); ! if (alias) { ! ladr.sin_family = alias->h_addrtype; ! #if defined(h_addr) /* In 4.3, this is a #define */ ! memmove((caddr_t)&ladr.sin_addr, ! alias->h_addr_list[0], alias->h_length); ! #else /* defined(h_addr) */ ! memmove((caddr_t)&ladr.sin_addr, alias->h_addr, ! alias->h_length); ! #endif /* defined(h_addr) */ ! } else { ! herror(aliasp); ! return 0; ! } ! } ! ladr.sin_port = htons(0); ! ! if (bind (net, (struct sockaddr *)&ladr, sizeof(ladr)) < 0) { ! perror(aliasp);; ! (void) close(net); /* dump descriptor */ ! return 0; ! } ! } ! #if defined(IP_OPTIONS) && defined(IPPROTO_IP) if (srp && setsockopt(net, IPPROTO_IP, IP_OPTIONS, (char *)srp, srlen) < 0) perror("setsockopt (IP_OPTIONS)"); #endif