Latest patch from vodz:
authorEric Andersen <andersen@codepoet.org>
Sat, 10 Nov 2001 11:22:46 +0000 (11:22 -0000)
committerEric Andersen <andersen@codepoet.org>
Sat, 10 Nov 2001 11:22:46 +0000 (11:22 -0000)
    -- reverse resolve network name and cache in route and ifconfig
applets, fix print nslookup server name if compile without
uClibc, fix route crashe 'route add', fix warnings compile
networking and pwd_grp applets

Changelog
INSTALL
libbb/Makefile
libbb/interface.c
networking/ifconfig.c
networking/netstat.c
networking/nslookup.c
networking/route.c
networking/telnet.c
networking/traceroute.c

index 2a778d65debf25f88a05ac1b2105fabe7761aa0a..568852a46442a3c45c06efe57f6c0e7207cd052c 100644 (file)
--- a/Changelog
+++ b/Changelog
        * Magick
            -- made init run inittab command's in the order they show up
                in the inittab file (FIFO instead of LIFO).
-
+       * Vladimir Oleynik
+           -- reverse resolve network name and cache in route and ifconfig
+               applets, fix print nslookup server name if compile without
+               uClibc, fix route crashe 'route add', fix warnings compile
+               networking and pwd_grp applets
 
         -Erik Andersen, --not yet released--
 
diff --git a/INSTALL b/INSTALL
index e17bd80d38a9842bb7bfb34f0d00b9cbf39aaf5a..796ef23cc711419c5bffc59118180b878d09b780 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,13 @@
-1) Check Config.h and adjust if you need a different functionality than
-   defined by default.
+1) Run 'make config' or 'make menuconfig' and select the 
+   functionality that you wish to enable.
 
-2) Check the Makefile
+2) make dep
 
-3) make
+3) Check the Makefile for any Makefile setting you wish 
+    to adjust for your system (things like like setting 
+    your cross compiler, adjusting optimizations, etc)
 
-4) make install
+4) make
+
+5) Run 'make install' or 'make PREFIX=/target install' to
+    install busybox and all the needed links.
index f4f2d857f0e1831a4a0fa47128950046f1e030a3..ef8fef4b7350d8f4929de869000f73b7cff8e239 100644 (file)
@@ -45,7 +45,7 @@ obj-y += ask_confirmation.o chomp.o concat_path_file.o copy_file.o \
        xgetcwd.o xreadlink.o xregcomp.o interface.o remove_file.o last_char_is.o \
        copyfd.o vherror_msg.o herror_msg.o herror_msg_and_die.o xgethostbyname.o \
        dirname.o make_directory.o create_icmp_socket.o u_signal_names.o arith.o \
-       simplify_path.o $(LIBBB_MOBJS) $(LIBBB_AROBJS)
+       simplify_path.o inet_common.o $(LIBBB_MOBJS) $(LIBBB_AROBJS)
 
 
 # Hand off to toplevel Rules.mak
@@ -65,5 +65,3 @@ loop.h: mk_loop_h.sh
 
 clean:
        rm -f $(L_TARGET) *.o core
-
-
index 680216a57da44eee7833af3e525baaccfeb2248d..9ecb81b9f9af60ec167ce70e8a29f3a5ce93d87d 100644 (file)
@@ -15,7 +15,7 @@
  *              that either displays or sets the characteristics of
  *              one or more of the system's networking interfaces.
  *
- * Version:     $Id: interface.c,v 1.6 2001/10/27 03:28:19 andersen Exp $
+ * Version:     $Id: interface.c,v 1.7 2001/11/10 11:22:46 andersen Exp $
  *
  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  *              and others.  Copyright 1993 MicroWalt Corporation
 #undef HAVE_HWSLIP
 
 
-#include <features.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <netinet/in.h>
-#include <net/if.h>
-#include <net/if_arp.h>
+#include "inet_common.h"
 #include <stdio.h>
 #include <errno.h>
-#include <fcntl.h>
-#include <ctype.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#if 0
-#include <arpa/nameser.h>
-#endif
+#include <fcntl.h>
+#include <ctype.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <net/if_arp.h>
 #include "libbb.h"
 
 #define _(x) x
@@ -91,7 +82,6 @@
 
 static int procnetdev_vsn = 1;
 
-
 /* Ugh.  But libc5 doesn't provide POSIX types.  */
 #include <asm/types.h>
 
@@ -124,15 +114,6 @@ struct in6_ifreq {
 #include "ipx.h"
 #endif
 #endif
-#if 0
-#include "net-support.h"
-#include "pathnames.h"
-#include "version.h"
-#include "../intl.h"
-#include "interface.h"
-#include "sockets.h"
-#include "util.h"
-#endif
 
 /* Defines for glibc2.0 users. */
 #ifndef SIOCSIFTXQLEN
@@ -313,170 +294,6 @@ static struct aftype unix_aftype =
 
 #if HAVE_AFINET
 
-#if 0
-extern int h_errno;             /* some netdb.h versions don't export this */
-#endif
-
-/* cache */
-struct addr {
-    struct sockaddr_in addr;
-    char *name;
-    int host;
-    struct addr *next;
-};
-
-static struct addr *INET_nn = NULL;    /* addr-to-name cache           */
-
-#ifdef KEEP_UNUSED
-static int INET_resolve(char *name, struct sockaddr_in *sin, int hostfirst)
-{
-    struct hostent *hp;
-    struct netent *np;
-
-    /* Grmpf. -FvK */
-    sin->sin_family = AF_INET;
-    sin->sin_port = 0;
-
-    /* Default is special, meaning 0.0.0.0. */
-    if (!strcmp(name, "default")) {
-       sin->sin_addr.s_addr = INADDR_ANY;
-       return (1);
-    }
-    /* Look to see if it's a dotted quad. */
-    if (inet_aton(name, &sin->sin_addr)) {
-       return 0;
-    }
-    /* If we expect this to be a hostname, try hostname database first */
-#ifdef DEBUG
-    if (hostfirst) fprintf (stderr, "gethostbyname (%s)\n", name);
-#endif
-    if (hostfirst && 
-       (hp = gethostbyname(name)) != (struct hostent *) NULL) {
-       memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0], 
-               sizeof(struct in_addr));
-       return 0;
-    }
-    /* Try the NETWORKS database to see if this is a known network. */
-#ifdef DEBUG
-    fprintf (stderr, "getnetbyname (%s)\n", name);
-#endif
-    if ((np = getnetbyname(name)) != (struct netent *) NULL) {
-       sin->sin_addr.s_addr = htonl(np->n_net);
-       return 1;
-    }
-    if (hostfirst) {
-       /* Don't try again */
-       errno = h_errno;
-       return -1;
-    }
-#ifdef DEBUG
-    res_init();
-    _res.options |= RES_DEBUG;
-#endif
-
-#ifdef DEBUG
-    fprintf (stderr, "gethostbyname (%s)\n", name);
-#endif
-    if ((hp = gethostbyname(name)) == (struct hostent *) NULL) {
-       errno = h_errno;
-       return -1;
-    }
-    memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0], 
-          sizeof(struct in_addr));
-
-    return 0;
-}
-#endif /* KEEP_UNUSED */
-
-/* numeric: & 0x8000: default instead of *, 
- *         & 0x4000: host instead of net, 
- *         & 0x0fff: don't resolve
- */
-static int INET_rresolve(char *name, size_t len, struct sockaddr_in *s_in, 
-                        int numeric, unsigned int netmask)
-{
-    struct hostent *ent;
-    struct netent *np;
-    struct addr *pn;
-    unsigned long ad, host_ad;
-    int host = 0;
-
-    /* Grmpf. -FvK */
-    if (s_in->sin_family != AF_INET) {
-#ifdef DEBUG
-       fprintf(stderr, _("rresolve: unsupport address family %d !\n"), s_in->sin_family);
-#endif
-       errno = EAFNOSUPPORT;
-       return (-1);
-    }
-    ad = (unsigned long) s_in->sin_addr.s_addr;
-#ifdef DEBUG
-    fprintf (stderr, "rresolve: %08lx, mask %08x, num %08x \n", ad, netmask, numeric);
-#endif
-    if (ad == INADDR_ANY) {
-       if ((numeric & 0x0FFF) == 0) {
-           if (numeric & 0x8000)
-               safe_strncpy(name, "default", len);
-           else
-               safe_strncpy(name, "*", len);
-           return (0);
-       }
-    }
-    if (numeric & 0x0FFF) {
-        safe_strncpy(name, inet_ntoa(s_in->sin_addr), len);
-       return (0);
-    }
-
-    if ((ad & (~netmask)) != 0 || (numeric & 0x4000))
-       host = 1;
-#if 0
-    INET_nn = NULL;
-#endif
-    pn = INET_nn;
-    while (pn != NULL) {
-       if (pn->addr.sin_addr.s_addr == ad && pn->host == host) {
-           safe_strncpy(name, pn->name, len);
-#ifdef DEBUG
-           fprintf (stderr, "rresolve: found %s %08lx in cache\n", (host? "host": "net"), ad);
-#endif
-           return (0);
-       }
-       pn = pn->next;
-    }
-
-    host_ad = ntohl(ad);
-    np = NULL;
-    ent = NULL;
-    if (host) {
-#ifdef DEBUG
-       fprintf (stderr, "gethostbyaddr (%08lx)\n", ad);
-#endif
-       ent = gethostbyaddr((char *) &ad, 4, AF_INET);
-       if (ent != NULL)
-           safe_strncpy(name, ent->h_name, len);
-    } else {
-#ifdef DEBUG
-       fprintf (stderr, "getnetbyaddr (%08lx)\n", host_ad);
-#endif
-#if 0
-       np = getnetbyaddr(host_ad, AF_INET);
-       if (np != NULL)
-           safe_strncpy(name, np->n_name, len);
-#endif
-    }
-    if ((ent == NULL) && (np == NULL))
-       safe_strncpy(name, inet_ntoa(s_in->sin_addr), len);
-    pn = (struct addr *) xmalloc(sizeof(struct addr));
-    pn->addr = *s_in;
-    pn->next = INET_nn;
-    pn->host = host;
-    pn->name = (char *) xmalloc(strlen(name) + 1);
-    strcpy(pn->name, name);
-    INET_nn = pn;
-
-    return (0);
-}
-
 #ifdef KEEP_UNUSED
 static void INET_reserror(char *text)
 {
index fe154cf1336b96a3bbe9fecf1149c930a23e0138..0b834e7c78645bc953e745742baa68970404a6b4 100644 (file)
@@ -15,7 +15,7 @@
  * Foundation;  either  version 2 of the License, or  (at
  * your option) any later version.
  *
- * $Id: ifconfig.c,v 1.15 2001/10/28 09:36:48 andersen Exp $
+ * $Id: ifconfig.c,v 1.16 2001/11/10 11:22:43 andersen Exp $
  *
  */
 
 #include <string.h>   // strcmp and friends
 #include <ctype.h>    // isdigit and friends
 #include <stddef.h>                            /* offsetof */
-#include <sys/types.h>
-#include <sys/socket.h>
 #include <sys/ioctl.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <net/if.h>
 #include <net/if_arp.h>
+#include <netinet/in.h>
 #include <linux/if_ether.h>
+#include <net/if.h>
+#include "inet_common.h"
 #include "busybox.h"
 
 #ifdef CONFIG_FEATURE_IFCONFIG_SLIP
@@ -339,7 +337,7 @@ int ifconfig_main(int argc, char **argv)
                                                safe_strncpy(host, *argv, (sizeof host));
                                                sai.sin_family = AF_INET;
                                                sai.sin_port = 0;
-                                               if (!strcmp(host, "default")) {
+                                               if (!strcmp(host, bb_INET_default)) {
                                                        /* Default is special, meaning 0.0.0.0. */
                                                        sai.sin_addr.s_addr = INADDR_ANY;
                                                } else if (inet_aton(host, &sai.sin_addr) == 0) {
index e33a89a645aa7694004f440d5d4cd36ae4bc1def..28ae9bc3233787ae8150cfba090c5e2f5d64f69b 100644 (file)
 #include <dirent.h>
 #include <unistd.h>
 #include <pwd.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
+#include "inet_common.h"
 #include "busybox.h"
 
 #define NETSTAT_CONNECTED      0x01
@@ -95,7 +92,7 @@ typedef enum {
 #define SO_WAITDATA     (1<<17)        /* wait data to read            */
 #define SO_NOSPACE      (1<<18)        /* no space to write            */
 
-char *itoa(unsigned int i)
+static char *itoa(unsigned int i)
 {
        /* 21 digits plus null terminator, good for 64-bit or smaller ints */
        static char local[22];
@@ -108,24 +105,7 @@ char *itoa(unsigned int i)
        return p + 1;
 }
 
-char *inet_sprint(struct sockaddr* addr, int num)
-{
-       char *str;
-       str=inet_ntoa(((struct sockaddr_in*)addr)->sin_addr);
-       if (!strcmp(str,"0.0.0.0")) {
-               str="*";
-       }
-       if (num)
-       {
-       } else {
-               struct hostent *he=gethostbyaddr(&((struct sockaddr_in*)addr)->sin_addr,4,AF_INET);
-               if (he)
-                       str=he->h_name;
-       }
-       return str;
-}
-
-char *get_sname(int port, const char *proto, int num)
+static char *get_sname(int port, const char *proto, int num)
 {
        char *str=itoa(ntohs(port));
        if (num) {
@@ -140,10 +120,13 @@ char *get_sname(int port, const char *proto, int num)
        return str;
 }
 
-void snprint_ip_port(char *ip_port, int size, struct sockaddr *addr, int port, char *proto, int numeric)
+static void snprint_ip_port(char *ip_port, int size, struct sockaddr *addr, int port, char *proto, int numeric)
 {
        char *port_name;
-       safe_strncpy(ip_port, inet_sprint(addr, numeric), size);
+
+       INET_rresolve(ip_port, size, (struct sockaddr_in *)addr,
+               0x4000 | ((numeric&NETSTAT_NUMERIC) ? 0x0fff : 0),
+               0xffffffff);
        port_name=get_sname(htons(port), proto, numeric);
        if ((strlen(ip_port) + strlen(port_name)) > 22)
                ip_port[22 - strlen(port_name)] = '\0';
index a1a12d992d709810d9964015f3208d2eb2a7a890..81b57cccfd100606f2854e7327b8599bd70359bf 100644 (file)
@@ -90,10 +90,10 @@ static int addr_list_fprint(char **h_addr_list)
 }
 
 /* print the results as nslookup would */
-static struct hostent *hostent_fprint(struct hostent *host)
+static struct hostent *hostent_fprint(struct hostent *host, const char *server_host)
 {
        if (host) {
-               printf("Name:       %s\n", host->h_name);
+               printf("%s     %s\n", server_host, host->h_name);
                addr_list_fprint(host->h_addr_list);
        } else {
                printf("*** Unknown host\n");
@@ -142,7 +142,7 @@ static inline void server_print(void)
        struct sockaddr_in def = _res.nsaddr_list[0];
        char *ip = inet_ntoa(def.sin_addr);
 
-       hostent_fprint(gethostbyaddr_wrapper(ip));
+       hostent_fprint(gethostbyaddr_wrapper(ip), "Server:");
        printf("\n");
 }
 #endif 
@@ -176,8 +176,8 @@ int nslookup_main(int argc, char **argv)
        } else {
                host = xgethostbyname(argv[1]);
        }
-       hostent_fprint(host);
+       hostent_fprint(host, "Name:  ");
        return EXIT_SUCCESS;
 }
 
-/* $Id: nslookup.c,v 1.26 2001/10/24 04:59:56 andersen Exp $ */
+/* $Id: nslookup.c,v 1.27 2001/11/10 11:22:43 andersen Exp $ */
index ee35331007132a829a80e2c143b9ddfef756db2d..43180296d3588e65ed65503303472d065f2f8044 100644 (file)
@@ -15,7 +15,7 @@
  * Foundation;  either  version 2 of the License, or  (at
  * your option) any later version.
  *
- * $Id: route.c,v 1.13 2001/09/05 19:32:00 andersen Exp $
+ * $Id: route.c,v 1.14 2001/11/10 11:22:43 andersen Exp $
  *
  * displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru>
  * adjustments by Larry Doolittle  <LRDoolittle@lbl.gov>
 
 #include <sys/types.h>
 #include <sys/ioctl.h>
-#include <sys/socket.h>
+#include "inet_common.h"
 #include <net/route.h>
 #include <linux/param.h>  // HZ
-#include <netinet/in.h>
-#include <arpa/inet.h>
 #include <stdio.h>
 #include <errno.h>
 #include <fcntl.h>
 #define E_INTERN        2
 #define E_NOSUPP        1
 
-/* resolve XXX.YYY.ZZZ.QQQ -> binary */
-
-static int
-INET_resolve(char *name, struct sockaddr *sa)
-{
-       struct sockaddr_in *s_in = (struct sockaddr_in *)sa;
-
-       s_in->sin_family = AF_INET;
-       s_in->sin_port = 0;
-
-       /* Default is special, meaning 0.0.0.0. */
-       if (strcmp(name, "default")==0) {
-               s_in->sin_addr.s_addr = INADDR_ANY;
-               return 1;
-       }
-       /* Look to see if it's a dotted quad. */
-       if (inet_aton(name, &s_in->sin_addr)) {
-               return 0;
-       }
-       /* guess not.. */
-       return -1;
-}
-
 #if defined (SIOCADDRTOLD) || defined (RTF_IRTT)        /* route */
 #define HAVE_NEW_ADDRT 1
 #endif
@@ -96,13 +71,16 @@ INET_resolve(char *name, struct sockaddr *sa)
 #define full_mask(x) (((struct sockaddr_in *)&(x))->sin_addr.s_addr)
 #endif
 
+
+
 /* add or delete a route depending on action */
 
 static int
 INET_setroute(int action, int options, char **args)
 {
        struct rtentry rt;
-       char target[128], gateway[128] = "NONE", netmask[128] = "default";
+       char target[128], gateway[128] = "NONE";
+       const char *netmask = bb_INET_default;
        int xflag, isnet;
        int skfd;
 
@@ -117,13 +95,15 @@ INET_setroute(int action, int options, char **args)
                xflag = 2;
                args++;
        }
+       if (*args == NULL)
+           show_usage();
        safe_strncpy(target, *args++, (sizeof target));
 
        /* Clean out the RTREQ structure. */
        memset((char *) &rt, 0, sizeof(struct rtentry));
 
 
-       if ((isnet = INET_resolve(target, &rt.rt_dst)) < 0) {
+       if ((isnet = INET_resolve(target, (struct sockaddr_in *)&rt.rt_dst, xflag!=1)) < 0) {
                error_msg(_("can't resolve %s"), target);
                return EXIT_FAILURE;   /* XXX change to E_something */
        }
@@ -169,8 +149,8 @@ INET_setroute(int action, int options, char **args)
                        args++;
                        if (!*args || mask_in_addr(rt))
                                show_usage();
-                       safe_strncpy(netmask, *args, (sizeof netmask));
-                       if ((isnet = INET_resolve(netmask, &mask)) < 0) {
+                       netmask = *args;
+                       if ((isnet = INET_resolve(netmask, (struct sockaddr_in *)&mask, 0)) < 0) {
                                error_msg(_("can't resolve netmask %s"), netmask);
                                return E_LOOKUP;
                        }
@@ -186,7 +166,7 @@ INET_setroute(int action, int options, char **args)
                        if (rt.rt_flags & RTF_GATEWAY)
                                show_usage();
                        safe_strncpy(gateway, *args, (sizeof gateway));
-                       if ((isnet = INET_resolve(gateway, &rt.rt_gateway)) < 0) {
+                       if ((isnet = INET_resolve(gateway, (struct sockaddr_in *)&rt.rt_gateway, 1)) < 0) {
                                error_msg(_("can't resolve gw %s"), gateway);
                                return E_LOOKUP;
                        }
@@ -362,7 +342,7 @@ INET_setroute(int action, int options, char **args)
 #define RTF_REJECT      0x0200          /* Reject route                 */
 #endif
 
-static void displayroutes(void)
+static void displayroutes(int noresolve)
 {
        char buff[256];
        int  nl = 0 ;
@@ -375,12 +355,17 @@ static void displayroutes(void)
 
        char sdest[16], sgw[16];
 
-
        FILE *fp = xfopen("/proc/net/route", "r");
 
+       if(noresolve)
+               noresolve = 0x0fff;
+
        while( fgets(buff, sizeof(buff), fp) != NULL ) {
                if(nl) {
                        int ifl = 0;
+                       int numeric;
+                       struct sockaddr_in s_addr;
+
                        while(buff[ifl]!=' ' && buff[ifl]!='\t' && buff[ifl]!='\0')
                                ifl++;
                        buff[ifl]=0;    /* interface */
@@ -412,10 +397,14 @@ static void displayroutes(void)
                                dest.s_addr = d;
                                gw.s_addr   = g;
                                mask.s_addr = m;
-                               strcpy(sdest,  (dest.s_addr==0 ? "default" :
-                                       inet_ntoa(dest)));
-                               strcpy(sgw,    (gw.s_addr==0   ? "*"       :
-                                       inet_ntoa(gw)));
+                               memset(&s_addr, 0, sizeof(struct sockaddr_in));
+                               s_addr.sin_family = AF_INET;
+                               s_addr.sin_addr = dest;
+                               numeric = noresolve | 0x8000; /* default instead of * */
+                               INET_rresolve(sdest, sizeof(sdest), &s_addr, numeric, m);
+                               numeric = noresolve | 0x4000; /* host instead of net */
+                               s_addr.sin_addr = gw;
+                               INET_rresolve(sgw, sizeof(sgw), &s_addr, numeric, m);
                                printf("%-16s%-16s%-16s%-6s%-6d %-2d %7d %s\n",
                                        sdest, sgw,
                                        inet_ntoa(mask),
@@ -433,8 +422,8 @@ int route_main(int argc, char **argv)
        argc--;
        argv++;
 
-       if (*argv == NULL) {
-               displayroutes();
+       if (*argv == NULL || (*(argv+1)==NULL && strcmp(*argv, "-n")==0)) {
+               displayroutes(*argv != NULL);
                return EXIT_SUCCESS;
        } else {
                /* check verb */
index 57494089d78194e30837c03e839ec8c62c96ff8f..71479fce42c0660c505abe9797dba133b51b997b 100644 (file)
@@ -112,7 +112,7 @@ struct Globalvars * Gptr;
 static struct Globalvars G;
 #endif
 
-static inline void iacflush()
+static inline void iacflush(void)
 {
        write(G.netfd, G.iacbuf, G.iaclen);
        G.iaclen = 0;
@@ -121,13 +121,12 @@ static inline void iacflush()
 /* Function prototypes */
 static int getport(char * p);
 static struct in_addr getserver(char * p);
-static int create_socket();
 static void setup_sockaddr_in(struct sockaddr_in * addr, int port);
 static int remote_connect(struct in_addr addr, int port);
-static void rawmode();
-static void cookmode();
-static void do_linemode();
-static void will_charmode();
+static void rawmode(void);
+static void cookmode(void);
+static void do_linemode(void);
+static void will_charmode(void);
 static void telopt(byte c);
 static int subneg(byte c);
 #if 0
@@ -147,7 +146,7 @@ static void doexit(int ev)
        exit(ev);
 }      
 
-static void conescape()
+static void conescape(void)
 {
        char b;
 
@@ -353,7 +352,7 @@ static void putiac_subopt(byte c, char *str)
 
 static char const escapecharis[] = "\r\nEscape character is ";
 
-static void setConMode()
+static void setConMode(void)
 {
        if (G.telflags & UF_ECHO)
        {
@@ -375,7 +374,7 @@ static void setConMode()
 
 /* ******************************* */
 
-static void will_charmode()
+static void will_charmode(void)
 {
        G.charmode = CHM_TRY;
        G.telflags |= (UF_ECHO | UF_SGA);
@@ -386,7 +385,7 @@ static void will_charmode()
        iacflush();
 }
 
-static void do_linemode()
+static void do_linemode(void)
 {
        G.charmode = CHM_TRY;
        G.telflags &= ~(UF_ECHO | UF_SGA);
@@ -405,7 +404,7 @@ static inline void to_notsup(char c)
        else if (G.telwish == DO)       putiac2(WONT, c);
 }
 
-static inline void to_echo()
+static inline void to_echo(void)
 {
        /* if server requests ECHO, don't agree */
        if      (G.telwish == DO) {     putiac2(WONT, TELOPT_ECHO);     return; }
@@ -432,7 +431,7 @@ static inline void to_echo()
        WriteCS(1, "\r\n");  /* sudden modec */
 }
 
-static inline void to_sga()
+static inline void to_sga(void)
 {
        /* daemon always sends will/wont, client do/dont */
 
@@ -454,7 +453,7 @@ static inline void to_sga()
 }
 
 #ifdef CONFIG_FEATURE_TELNET_TTYPE
-static inline void to_ttype()
+static inline void to_ttype(void)
 {
        /* Tell server we will (or won't) do TTYPE */
 
@@ -471,10 +470,10 @@ static void telopt(byte c)
 {
        switch (c)
        {
-       case TELOPT_ECHO:               to_echo(c);             break;
-       case TELOPT_SGA:                to_sga(c);              break;
+       case TELOPT_ECHO:               to_echo();             break;
+       case TELOPT_SGA:                to_sga();              break;
 #ifdef CONFIG_FEATURE_TELNET_TTYPE
-       case TELOPT_TTYPE:              to_ttype(c);    break;
+       case TELOPT_TTYPE:              to_ttype();    break;
 #endif
        default:                                to_notsup(c);   break;
        }
@@ -515,12 +514,12 @@ static void fgotsig(int sig)
 }
 
 
-static void rawmode()
+static void rawmode(void)
 {
        tcsetattr(0, TCSADRAIN, &G.termios_raw);
 }      
 
-static void cookmode()
+static void cookmode(void)
 {
        tcsetattr(0, TCSADRAIN, &G.termios_def);
 }
@@ -650,7 +649,7 @@ static struct in_addr getserver(char * host)
        return addr;
 }
 
-static int create_socket()
+static int create_socket(void)
 {
        return socket(AF_INET, SOCK_STREAM, 0);
 }
@@ -708,4 +707,3 @@ c-basic-offset: 4
 tab-width: 4
 End:
 */
-
index e7d9725af6a90421659bdf1cf32f96f5a788b3cb..5bd3ddb0edfea119b4678ef9c66e5aadf606b5b6 100644 (file)
 #include <string.h>
 #include <unistd.h>
 #include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+#include "inet_common.h"
 #include <netdb.h>
 #include <endian.h>
-#include <arpa/inet.h>
 #include <netinet/udp.h>
 #include <netinet/ip.h>
 #include <netinet/ip_icmp.h>
@@ -228,8 +226,8 @@ static inline void
 inetname(struct sockaddr_in *from)
 {
        char *cp;
-       struct hostent *hp;
        static char domain[MAXHOSTNAMELEN + 1];
+       char name[MAXHOSTNAMELEN + 1];
        static int first = 1;
        const char *ina;
 
@@ -243,12 +241,11 @@ inetname(struct sockaddr_in *from)
        }
        cp = 0;
        if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
-               hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
-               if (hp) {
-                       if ((cp = strchr(hp->h_name, '.')) &&
+               if(INET_rresolve(name, sizeof(name), from, 0, 0xffffffff) >= 0) {
+                       if ((cp = strchr(name, '.')) &&
                            !strcmp(cp + 1, domain))
                                *cp = 0;
-                       cp = (char *)hp->h_name;
+                       cp = (char *)name;
                }
        }
        ina = inet_ntoa(from->sin_addr);
@@ -645,7 +642,7 @@ traceroute_main(argc, argv)
                }
                putchar('\n');
                if (got_there || unreachable >= nprobes-1)
-                       exit(0);
+                       return 0;
        }
 
        return 0;