Update.
authorUlrich Drepper <drepper@redhat.com>
Sun, 2 Apr 2000 03:09:41 +0000 (03:09 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 2 Apr 2000 03:09:41 +0000 (03:09 +0000)
* inet/arpa/inet.h (inet_addr): Change return type to in_addr_t.
(inet_lnaof): Likewise.
(inet_netof): Likewise.
(inet_network): Likewise.
(inet_aton): Likewise.
(inet_makeaddr): Change parameter types to in_addr_t.
(inet_neta): Likewise.
(inet_ntop): Change type of last parameter to socklen_t.
(inet_aton): Only make available if __USE_MISC.
(inet_neta): Likewise.
(inet_net_ntop): Likewise.
(inet_net_pton): Likewise.
(inet_nsap_ntoa): Likewise.

* inet/in.h: Define in_port_t type.
Define in_addr_t type.
(struct in_addr): Use in_addr_t in definition.
(IN_CLASSA): Use cast to in_addr_t.
(IN_CLASSB): Likewise.
(IN_CLASSC): Likewise.
(IN_CLASSD): Likewise.
(IN_EXPERIMENTAL): Likewise.
(IN_BADCLASS): Likewise.
(INADDR_ANY): Likewise.
(INADDR_BROADCAST): Likewise.
(INADDR_NONE): Likewise.
(INADDR_LOOPBACK): Likewise.
(INADDR_UNSPEC_GROUP): Likewise.
(INADDR_ALLHOSTS_GROUP): Likewise.
(INADDR_ALLRTRS_GROUP): Likewise.
(INADDR_MAX_LOCAL_GROUP): Likewise.
(struct sockaddr_in): Use in_port_t for sin_port element.
(struct sockaddr_in6): Use in_port_t for sin6_port element.
Use uint8_t instead of u_int8_t.

* resolv/inet_addr.c (inet_addr): Change return type to in_addr_t.
Call __inet_aton instead of inet_aton.
(__inet_aton): Renamed from inet_aton.  Add weak alias under old name.

* resolv/netdb.h (gethostbyname2): Define only is __USE_MISC.
(innetgr): Likewise.
(struct addrinfo): Use socklen_t for ai_addrlen element.

* sysdeps/unix/sysv/linux/bits/in.h (IPV6_MTU_DISCOVER, IPV6_MTU,
IPV6_RECVERR): New defines.

ChangeLog
inet/arpa/inet.h
inet/netinet/in.h
resolv/inet_addr.c
resolv/netdb.h
sysdeps/unix/sysv/linux/bits/in.h

index 80b2564..9273002 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,51 @@
 2000-04-01  Ulrich Drepper  <drepper@redhat.com>
 
+       * inet/arpa/inet.h (inet_addr): Change return type to in_addr_t.
+       (inet_lnaof): Likewise.
+       (inet_netof): Likewise.
+       (inet_network): Likewise.
+       (inet_aton): Likewise.
+       (inet_makeaddr): Change parameter types to in_addr_t.
+       (inet_neta): Likewise.
+       (inet_ntop): Change type of last parameter to socklen_t.
+       (inet_aton): Only make available if __USE_MISC.
+       (inet_neta): Likewise.
+       (inet_net_ntop): Likewise.
+       (inet_net_pton): Likewise.
+       (inet_nsap_ntoa): Likewise.
+
+       * inet/in.h: Define in_port_t type.
+       Define in_addr_t type.
+       (struct in_addr): Use in_addr_t in definition.
+       (IN_CLASSA): Use cast to in_addr_t.
+       (IN_CLASSB): Likewise.
+       (IN_CLASSC): Likewise.
+       (IN_CLASSD): Likewise.
+       (IN_EXPERIMENTAL): Likewise.
+       (IN_BADCLASS): Likewise.
+       (INADDR_ANY): Likewise.
+       (INADDR_BROADCAST): Likewise.
+       (INADDR_NONE): Likewise.
+       (INADDR_LOOPBACK): Likewise.
+       (INADDR_UNSPEC_GROUP): Likewise.
+       (INADDR_ALLHOSTS_GROUP): Likewise.
+       (INADDR_ALLRTRS_GROUP): Likewise.
+       (INADDR_MAX_LOCAL_GROUP): Likewise.
+       (struct sockaddr_in): Use in_port_t for sin_port element.
+       (struct sockaddr_in6): Use in_port_t for sin6_port element.
+       Use uint8_t instead of u_int8_t.
+
+       * resolv/inet_addr.c (inet_addr): Change return type to in_addr_t.
+       Call __inet_aton instead of inet_aton.
+       (__inet_aton): Renamed from inet_aton.  Add weak alias under old name.
+
+       * resolv/netdb.h (gethostbyname2): Define only is __USE_MISC.
+       (innetgr): Likewise.
+       (struct addrinfo): Use socklen_t for ai_addrlen element.
+
+       * sysdeps/unix/sysv/linux/bits/in.h (IPV6_MTU_DISCOVER, IPV6_MTU,
+       IPV6_RECVERR): New defines.
+
        * include/netdb.h: Change type of first parameter of __getnetbyaddr_r.
        * inet/getnetbyad.c: Likewise.
        * inet/getnetbyad_r.c: Likewise.
index 7e0a40f..72a90ba 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,7 +20,6 @@
 #define        _ARPA_INET_H    1
 
 #include <features.h>
-
 #include <sys/types.h>
 #include <netinet/in.h>                /* To define `struct in_addr'.  */
 
@@ -28,41 +27,22 @@ __BEGIN_DECLS
 
 /* Convert Internet host address from numbers-and-dots notation in CP
    into binary data in network byte order.  */
-extern u_int32_t inet_addr (__const char *__cp) __THROW;
-
-/* Convert Internet host address from numbers-and-dots notation in CP
-   into binary data and store the result in the structure INP.  */
-extern int inet_aton (__const char *__cp, struct in_addr *__inp) __THROW;
+extern in_addr_t inet_addr (__const char *__cp) __THROW;
 
 /* Return the local host address part of the Internet address in IN.  */
-extern u_int32_t inet_lnaof (struct in_addr __in) __THROW;
+extern in_addr_t inet_lnaof (struct in_addr __in) __THROW;
 
 /* Make Internet host address in network byte order by combining the
    network number NET with the local address HOST.  */
-extern struct in_addr inet_makeaddr (u_int32_t __net, u_int32_t __host) __THROW;
-
-/* Format a network number NET into presentation format and place result
-   in buffer starting at BUF with length of LEN bytes.  */
-extern char *inet_neta (u_int32_t __net, char *__buf, size_t __len) __THROW;
+extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host)
+     __THROW;
 
 /* Return network number part of the Internet address IN.  */
-extern u_int32_t inet_netof (struct in_addr __in) __THROW;
+extern in_addr_t inet_netof (struct in_addr __in) __THROW;
 
 /* Extract the network number in network byte order from the address
    in numbers-and-dots natation starting at CP.  */
-extern u_int32_t inet_network (__const char *__cp) __THROW;
-
-/* Convert network number for interface type AF in buffer starting at
-   CP to presentation format.  The result will specifiy BITS bits of
-   the number.  */
-extern char *inet_net_ntop (int __af, __const void *__cp, int __bits,
-                           char *__buf, size_t __len) __THROW;
-
-/* Convert network number for interface type AF from presentation in
-   buffer starting at CP to network format and store result int
-   buffer starting at BUF of size LEN.  */
-extern int inet_net_pton (int __af, __const char *__cp,
-                         void *__buf, size_t __len) __THROW;
+extern in_addr_t inet_network (__const char *__cp) __THROW;
 
 /* Convert Internet number in IN to ASCII representation.  The return value
    is a pointer to an internal array containing the string.  */
@@ -77,7 +57,30 @@ extern int inet_pton (int __af, __const char *__cp, void *__buf) __THROW;
    type AF in buffer starting at CP to presentation form and place
    result in buffer of length LEN astarting at BUF.  */
 extern __const char *inet_ntop (int __af, __const void *__cp,
-                               char *__buf, size_t __len) __THROW;
+                               char *__buf, socklen_t __len) __THROW;
+
+
+/* The following functions are not part of XNS 5.2.  */
+#ifdef __USE_MISC
+/* Convert Internet host address from numbers-and-dots notation in CP
+   into binary data and store the result in the structure INP.  */
+extern in_addr_t inet_aton (__const char *__cp, struct in_addr *__inp) __THROW;
+
+/* Format a network number NET into presentation format and place result
+   in buffer starting at BUF with length of LEN bytes.  */
+extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) __THROW;
+
+/* Convert network number for interface type AF in buffer starting at
+   CP to presentation format.  The result will specifiy BITS bits of
+   the number.  */
+extern char *inet_net_ntop (int __af, __const void *__cp, int __bits,
+                           char *__buf, size_t __len) __THROW;
+
+/* Convert network number for interface type AF from presentation in
+   buffer starting at CP to network format and store result int
+   buffer starting at BUF of size LEN.  */
+extern int inet_net_pton (int __af, __const char *__cp,
+                         void *__buf, size_t __len) __THROW;
 
 /* Convert ASCII representation in hexadecimal form of the Internet
    address to binary form and place result in buffer of length LEN
@@ -89,6 +92,7 @@ extern unsigned int inet_nsap_addr (__const char *__cp,
    a presentation form and place result in BUF.  */
 extern char *inet_nsap_ntoa (int __len, __const unsigned char *__cp,
                             char *__buf) __THROW;
+#endif
 
 __END_DECLS
 
index fb668a2..9f73638 100644 (file)
@@ -61,6 +61,10 @@ enum
     IPPROTO_MAX
   };
 
+
+/* Type to represent a port.  */
+typedef uint16_t in_port_t;
+
 /* Standard well-known ports.  */
 enum
   {
@@ -103,9 +107,10 @@ enum
 
 
 /* Internet address.  */
+typedef uint32_t in_addr_t;
 struct in_addr
   {
-    uint32_t s_addr;
+    in_addr_t s_addr;
   };
 
 
@@ -114,48 +119,48 @@ struct in_addr
    On subnets, host and network parts are found according to
    the subnet mask, not these masks.  */
 
-#define        IN_CLASSA(a)            ((((uint32_t) (a)) & 0x80000000) == 0)
+#define        IN_CLASSA(a)            ((((in_addr_t)(a)) & 0x80000000) == 0)
 #define        IN_CLASSA_NET           0xff000000
 #define        IN_CLASSA_NSHIFT        24
 #define        IN_CLASSA_HOST          (0xffffffff & ~IN_CLASSA_NET)
 #define        IN_CLASSA_MAX           128
 
-#define        IN_CLASSB(a)            ((((uint32_t) (a)) & 0xc0000000) == 0x80000000)
+#define        IN_CLASSB(a)            ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000)
 #define        IN_CLASSB_NET           0xffff0000
 #define        IN_CLASSB_NSHIFT        16
 #define        IN_CLASSB_HOST          (0xffffffff & ~IN_CLASSB_NET)
 #define        IN_CLASSB_MAX           65536
 
-#define        IN_CLASSC(a)            ((((uint32_t) (a)) & 0xe0000000) == 0xc0000000)
+#define        IN_CLASSC(a)            ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000)
 #define        IN_CLASSC_NET           0xffffff00
 #define        IN_CLASSC_NSHIFT        8
 #define        IN_CLASSC_HOST          (0xffffffff & ~IN_CLASSC_NET)
 
-#define        IN_CLASSD(a)            ((((uint32_t) (a)) & 0xf0000000) == 0xe0000000)
+#define        IN_CLASSD(a)            ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
 #define        IN_MULTICAST(a)         IN_CLASSD(a)
 
-#define        IN_EXPERIMENTAL(a)      ((((uint32_t) (a)) & 0xe0000000) == 0xe0000000)
-#define        IN_BADCLASS(a)          ((((uint32_t) (a)) & 0xf0000000) == 0xf0000000)
+#define        IN_EXPERIMENTAL(a)      ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
+#define        IN_BADCLASS(a)          ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)
 
 /* Address to accept any incoming messages.  */
-#define        INADDR_ANY              ((uint32_t) 0x00000000)
+#define        INADDR_ANY              ((in_addr_t) 0x00000000)
 /* Address to send to all hosts.  */
-#define        INADDR_BROADCAST        ((uint32_t) 0xffffffff)
+#define        INADDR_BROADCAST        ((in_addr_t) 0xffffffff)
 /* Address indicating an error return.  */
-#define        INADDR_NONE             ((uint32_t) 0xffffffff)
+#define        INADDR_NONE             ((in_addr_t) 0xffffffff)
 
 /* Network number for local host loopback.  */
 #define        IN_LOOPBACKNET          127
 /* Address to loopback in software to local host.  */
 #ifndef INADDR_LOOPBACK
-# define INADDR_LOOPBACK       ((uint32_t) 0x7f000001) /* Inet 127.0.0.1.  */
+# define INADDR_LOOPBACK       ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1.  */
 #endif
 
 /* Defines for Multicast INADDR.  */
-#define INADDR_UNSPEC_GROUP    ((uint32_t) 0xe0000000)      /* 224.0.0.0 */
-#define INADDR_ALLHOSTS_GROUP  ((uint32_t) 0xe0000001)      /* 224.0.0.1 */
-#define INADDR_ALLRTRS_GROUP    ((uint32_t) 0xe0000002)      /* 224.0.0.2 */
-#define INADDR_MAX_LOCAL_GROUP  ((uint32_t) 0xe00000ff)      /* 224.0.0.255 */
+#define INADDR_UNSPEC_GROUP    ((in_addr_t) 0xe0000000) /* 224.0.0.0 */
+#define INADDR_ALLHOSTS_GROUP  ((in_addr_t) 0xe0000001) /* 224.0.0.1 */
+#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002) /* 224.0.0.2 */
+#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */
 
 
 /* IPv6 address */
@@ -163,11 +168,11 @@ struct in6_addr
   {
     union
       {
-       uint8_t         u6_addr8[16];
-       uint16_t        u6_addr16[8];
-       uint32_t        u6_addr32[4];
+       uint8_t u6_addr8[16];
+       uint16_t u6_addr16[8];
+       uint32_t u6_addr32[4];
 #if ULONG_MAX > 0xffffffff
-       uint64_t        u6_addr64[2];
+       uint64_t u6_addr64[2];
 #endif
       } in6_u;
 #define s6_addr                        in6_u.u6_addr8
@@ -192,13 +197,13 @@ extern const struct in6_addr in6addr_loopback;   /* ::1 */
 struct sockaddr_in
   {
     __SOCKADDR_COMMON (sin_);
-    uint16_t sin_port;                 /* Port number.  */
+    in_port_t sin_port;                        /* Port number.  */
     struct in_addr sin_addr;           /* Internet address.  */
 
     /* Pad to size of `struct sockaddr'.  */
     unsigned char sin_zero[sizeof (struct sockaddr) -
                           __SOCKADDR_COMMON_SIZE -
-                          sizeof (uint16_t) -
+                          sizeof (in_port_t) -
                           sizeof (struct in_addr)];
   };
 
@@ -206,7 +211,7 @@ struct sockaddr_in
 struct sockaddr_in6
   {
     __SOCKADDR_COMMON (sin6_);
-    uint16_t sin6_port;                /* Transport layer port # */
+    in_port_t sin6_port;       /* Transport layer port # */
     uint32_t sin6_flowinfo;    /* IPv6 flow information */
     struct in6_addr sin6_addr; /* IPv6 address */
     uint32_t sin6_scope_id;    /* IPv6 scope-id */
@@ -245,19 +250,24 @@ extern uint16_t htons (uint16_t __hostshort)
 /* Get machine dependent optimized versions of byte swapping functions.  */
 #include <bits/byteswap.h>
 
-#if __BYTE_ORDER == __BIG_ENDIAN && defined __OPTIMIZE__
+#ifdef __OPTIMIZE__
+/* We can optimize calls to the conversion functions.  Either nothing has
+   to be done or we are using directly the byte-swapping functions which
+   often can be inlined.  */
+# if __BYTE_ORDER == __BIG_ENDIAN
 /* The host byte order is the same as network byte order,
    so these functions are all just identity.  */
 # define ntohl(x)      (x)
 # define ntohs(x)      (x)
 # define htonl(x)      (x)
 # define htons(x)      (x)
-#else
-# if __BYTE_ORDER == __LITTLE_ENDIAN && defined __OPTIMIZE__
-#  define ntohl(x)     __bswap_32 (x)
-#  define ntohs(x)     __bswap_16 (x)
-#  define htonl(x)     __bswap_32 (x)
-#  define htons(x)     __bswap_16 (x)
+# else
+#  if __BYTE_ORDER == __LITTLE_ENDIAN
+#   define ntohl(x)    __bswap_32 (x)
+#   define ntohs(x)    __bswap_16 (x)
+#   define htonl(x)    __bswap_32 (x)
+#   define htons(x)    __bswap_16 (x)
+#  endif
 # endif
 #endif
 
@@ -269,7 +279,7 @@ extern uint16_t htons (uint16_t __hostshort)
        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
         ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == htonl (1))
 
-#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)
+#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)
 
 #define IN6_IS_ADDR_LINKLOCAL(a) \
        ((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))
@@ -300,19 +310,19 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
 
 
 #define IN6_IS_ADDR_MC_NODELOCAL(a) \
-       (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x1))
+       (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1))
 
 #define IN6_IS_ADDR_MC_LINKLOCAL(a) \
-       (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x2))
+       (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2))
 
 #define IN6_IS_ADDR_MC_SITELOCAL(a) \
-       (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x5))
+       (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5))
 
 #define IN6_IS_ADDR_MC_ORGLOCAL(a) \
-       (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x8))
+       (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8))
 
 #define IN6_IS_ADDR_MC_GLOBAL(a) \
-       (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0xe))
+       (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
 
 /* IPv6 packet information.  */
 struct in6_pktinfo
index 60f0cbe..48373b2 100644 (file)
@@ -74,13 +74,13 @@ static char rcsid[] = "$Id$";
  * Ascii internet address interpretation routine.
  * The value returned is in network order.
  */
-u_int32_t
+in_addr_t
 inet_addr(cp)
        register const char *cp;
 {
        struct in_addr val;
 
-       if (inet_aton(cp, &val))
+       if (__inet_aton(cp, &val))
                return (val.s_addr);
        return (INADDR_NONE);
 }
@@ -92,13 +92,13 @@ inet_addr(cp)
  * This replaces inet_addr, the return value from which
  * cannot distinguish between failure and a local broadcast address.
  */
-int
-inet_aton(cp, addr)
+in_addr_t
+__inet_aton(cp, addr)
        const char *cp;
        struct in_addr *addr;
 {
-       static const u_int32_t max[4] = { 0xffffffff, 0xffffff, 0xffff, 0xff };
-       register u_int32_t val; /* changed from u_long --david */
+       static const in_addr_t max[4] = { 0xffffffff, 0xffffff, 0xffff, 0xff };
+       register in_addr_t val;
 #ifndef _LIBC
        register int base;
 #endif
@@ -207,3 +207,4 @@ ret_0:
 #endif
        return (0);
 }
+weak_alias (__inet_aton, inet_aton)
index 50420c3..1f96351 100644 (file)
@@ -131,10 +131,12 @@ extern struct hostent *gethostbyaddr (__const char *__addr, size_t __len,
 /* Return entry from host data base for host with NAME.  */
 extern struct hostent *gethostbyname (__const char *__name) __THROW;
 
+#ifdef __USE_MISC
 /* Return entry from host data base for host with NAME.  AF must be
    set to the address type which is `AF_INET' for IPv4 or `AF_INET6'
    for IPv6.  */
 extern struct hostent *gethostbyname2 (__const char *__name, int __af) __THROW;
+#endif
 
 #ifdef __USE_UNIX98
 /* Return entry from host data base which address match ADDR with
@@ -343,11 +345,11 @@ extern int getnetgrent (char **__restrict __hostp,
                        char **__restrict __userp,
                        char **__restrict __domainp) __THROW;
 
+#ifdef __USE_MISC
 /* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN).  */
 extern int innetgr (__const char *__netgroup, __const char *__host,
                    __const char *__user, __const char *domain) __THROW;
 
-#ifdef __USE_MISC
 /* Reentrant version of `getnetgrent' where result is placed in BUFFER.  */
 extern int getnetgrent_r (char **__restrict __hostp,
                          char **__restrict __userp,
@@ -428,7 +430,7 @@ struct addrinfo
   int ai_family;               /* Protocol family for socket.  */
   int ai_socktype;             /* Socket type.  */
   int ai_protocol;             /* Protocol for socket.  */
-  int ai_addrlen;              /* Length of socket address.  */
+  socklen_t ai_addrlen;                /* Length of socket address.  */
   struct sockaddr *ai_addr;    /* Socket address for socket.  */
   char *ai_canonname;          /* Canonical name for service location.  */
   struct addrinfo *ai_next;    /* Pointer to next in list.  */
index 1493541..8efe242 100644 (file)
@@ -112,6 +112,9 @@ struct in_pktinfo
 #define IPV6_ADD_MEMBERSHIP    20
 #define IPV6_DROP_MEMBERSHIP   21
 #define IPV6_ROUTER_ALERT      22
+#define IPV6_MTU_DISCOVER      23
+#define IPV6_MTU               24
+#define IPV6_RECVERR           25
 
 #define SCM_SRCRT              IPV6_RXSRCRT