small ipv6 doc changes; nslookup a tiny bit smaller
authorDenis Vlasenko <vda.linux@googlemail.com>
Tue, 7 Nov 2006 19:05:43 +0000 (19:05 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Tue, 7 Nov 2006 19:05:43 +0000 (19:05 -0000)
docs/ipv4_ipv6.txt
networking/nc.c
networking/nslookup.c

index 5a63aa7764beaa1ee1aad455b1d55bb287844c46..76d8279c1d5da34c68926e7f6e16814c53d71b71 100644 (file)
@@ -212,7 +212,8 @@ structure the code differently.
 Here's the corresponding server C code for a dual-stack platform:
 
     int ServSock, csock;
-    struct sockaddr addr, from;
+    /* struct sockaddr is too small! */
+    struct sockaddr_storage addr, from;
     ...
     ServSock = socket(AF_INET6, SOCK_STREAM, PF_INET6);
     bind(ServSock, &addr, sizeof(addr));
index a940d8a5d3cd352e8523d4b2815b0e7108cdee57..2f8a36beef8673f35e5afe8a634c2a5b36379e9b 100644 (file)
@@ -25,7 +25,6 @@ int nc_main(int argc, char **argv)
        SKIP_NC_EXTRA (const int execparam = 0;)
        USE_NC_EXTRA  (char **execparam = NULL;)
        struct sockaddr_in address;
-       struct hostent *hostinfo;
        fd_set readfds, testfds;
        int opt; /* must be signed (getopt returns -1) */
 
@@ -116,6 +115,7 @@ int nc_main(int argc, char **argv)
 
                        if (!execparam) close(sfd);
                } else {
+                       struct hostent *hostinfo;
                        hostinfo = xgethostbyname(argv[0]);
 
                        address.sin_addr = *(struct in_addr *) *hostinfo->h_addr_list;
index dd49e2669832495bb63e190258aac998e0788f19..89a2d6481e45d7c5f78fe55f97b4e55b65b0d5d2 100644 (file)
@@ -82,9 +82,10 @@ static int print_host(const char *hostname, const char *header)
                while (cur) {
                        sockaddr_to_dotted(cur->ai_addr, str, sizeof(str));
                        printf("%s  %s\nAddress: %s", header, hostname, str);
-                       if (getnameinfo(cur->ai_addr, cur->ai_addrlen, str, sizeof(str), NULL, 0, NI_NAMEREQD))
+                       s[0] = ' ';
+                       if (getnameinfo(cur->ai_addr, cur->ai_addrlen, str+1, sizeof(str)-1, NULL, 0, NI_NAMEREQD))
                                str[0] = '\0';
-                       printf(" %s\n", str);
+                       puts(str);
                        cur = cur->ai_next;
                }
        } else {