summary refs log tree commit diff
path: root/inet
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-04-02 03:09:41 +0000
committerUlrich Drepper <drepper@redhat.com>2000-04-02 03:09:41 +0000
commitad483238a1ef7bce6d8534a84ba548c455d1631e (patch)
treecb89ea9fdeba2be20d846869bcf726d9dca43f25 /inet
parent9b48fa9b416094acd0f25a605c768f6cf3798f71 (diff)
downloadglibc-ad483238a1ef7bce6d8534a84ba548c455d1631e.tar.gz
glibc-ad483238a1ef7bce6d8534a84ba548c455d1631e.tar.xz
glibc-ad483238a1ef7bce6d8534a84ba548c455d1631e.zip
Update.
	* 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.
Diffstat (limited to 'inet')
-rw-r--r--inet/arpa/inet.h60
-rw-r--r--inet/netinet/in.h80
2 files changed, 77 insertions, 63 deletions
diff --git a/inet/arpa/inet.h b/inet/arpa/inet.h
index 7e0a40f73f..72a90ba3da 100644
--- a/inet/arpa/inet.h
+++ b/inet/arpa/inet.h
@@ -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
 
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index fb668a204d..9f73638e05 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -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