about summary refs log tree commit diff
path: root/sysdeps/generic
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/dl-sysdep.c45
-rw-r--r--sysdeps/generic/dl-sysdepio.c72
-rw-r--r--sysdeps/generic/netinet/icmp6.h203
-rw-r--r--sysdeps/generic/netinet/in.h311
-rw-r--r--sysdeps/generic/netinet/inbits.h84
-rw-r--r--sysdeps/generic/netinet/ip6.h44
-rw-r--r--sysdeps/generic/strcasecmp.c25
-rw-r--r--sysdeps/generic/strcasecmp_l.c20
-rw-r--r--sysdeps/generic/strncase.c29
-rw-r--r--sysdeps/generic/strncase_l.c22
10 files changed, 172 insertions, 683 deletions
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index b7e1410b89..f10fca81fd 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -130,48 +130,3 @@ void
 _dl_sysdep_start_cleanup (void)
 {
 }
-
-#ifndef MAP_ANON
-/* This is only needed if the system doesn't support MAP_ANON.  */
-
-int
-_dl_sysdep_open_zero_fill (void)
-{
-  return __open ("/dev/zero", O_RDONLY);
-}
-#endif
-
-/* Read the whole contents of FILE into new mmap'd space with given
-   protections.  *SIZEP gets the size of the file.  */
-
-void *
-_dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot)
-{
-  void *result;
-  struct stat st;
-  int fd = __open (file, O_RDONLY);
-  if (fd < 0)
-    return NULL;
-  if (__fxstat (_STAT_VER, fd, &st) < 0)
-    result = NULL;
-  else
-    {
-      /* Map a copy of the file contents.  */
-      result = __mmap (0, st.st_size, prot,
-#ifdef MAP_COPY
-		       MAP_COPY
-#else
-		       MAP_PRIVATE
-#endif
-#ifdef MAP_FILE
-		       | MAP_FILE
-#endif
-		       , fd, 0);
-      if (result == (void *) -1)
-	result = NULL;
-      else
-	*sizep = st.st_size;
-    }
-  __close (fd);
-  return result;
-}
diff --git a/sysdeps/generic/dl-sysdepio.c b/sysdeps/generic/dl-sysdepio.c
deleted file mode 100644
index ed6078714d..0000000000
--- a/sysdeps/generic/dl-sysdepio.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Operating I/O support for run-time dynamic linker.  Generic Unix version.
-   Copyright (C) 1995, 1996, 1997 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include <unistd.h>
-#include <stdarg.h>
-#include <string.h>
-
-
-void
-_dl_sysdep_fatal (const char *msg, ...)
-{
-  va_list ap;
-
-  va_start (ap, msg);
-  do
-    {
-      size_t len = strlen (msg);
-      __write (STDERR_FILENO, msg, len);
-      msg = va_arg (ap, const char *);
-    } while (msg);
-  va_end (ap);
-
-  _exit (127);
-}
-
-
-void
-_dl_sysdep_error (const char *msg, ...)
-{
-  va_list ap;
-
-  va_start (ap, msg);
-  do
-    {
-      size_t len = strlen (msg);
-      __write (STDERR_FILENO, msg, len);
-      msg = va_arg (ap, const char *);
-    } while (msg);
-  va_end (ap);
-}
-
-
-void
-_dl_sysdep_message (const char *msg, ...)
-{
-  va_list ap;
-
-  va_start (ap, msg);
-  do
-    {
-      size_t len = strlen (msg);
-      __write (STDOUT_FILENO, msg, len);
-      msg = va_arg (ap, const char *);
-    } while (msg);
-  va_end (ap);
-}
diff --git a/sysdeps/generic/netinet/icmp6.h b/sysdeps/generic/netinet/icmp6.h
deleted file mode 100644
index f41cdfeeeb..0000000000
--- a/sysdeps/generic/netinet/icmp6.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef _NETINET_ICMP6_H
-#define _NETINET_ICMP6_H 1
-
-#include <sys/types.h>
-
-#define ICMPV6_FILTER 1
-
-#define ICMPV6_FILTER_BLOCK		1
-#define ICMPV6_FILTER_PASS		2
-#define ICMPV6_FILTER_BLOCKOTHERS	3
-#define ICMPV6_FILTER_PASSONLY		4
-
-struct icmpv6_filter 
-  {
-    u_int32_t data[8];
-  };
-
-struct icmpv6hdr 
-  {
-    u_int8_t icmpv6_type;   /* type field */
-    u_int8_t icmpv6_code;   /* code field */
-    u_int16_t icmpv6_cksum;  /* checksum field */
-    union 
-      {
-	u_int32_t un_data32[1]; /* type-specific field */
-	u_int16_t un_data16[2]; /* type-specific field */
-	u_int8_t un_data8[4];  /* type-specific field */
-      } icmpv6_dataun;
-  };
-
-#define icmpv6_data32    icmpv6_dataun.un_data32
-#define icmpv6_data16    icmpv6_dataun.un_data16
-#define icmpv6_data8     icmpv6_dataun.un_data8
-#define icmpv6_pptr      icmpv6_data32[0]  /* parameter prob */
-#define icmpv6_mtu       icmpv6_data32[0]  /* packet too big */
-#define icmpv6_id        icmpv6_data16[0]  /* echo request/reply */
-#define icmpv6_seq       icmpv6_data16[1]  /* echo request/reply */
-#define icmpv6_maxdelay  icmpv6_data16[0]  /* mcast group membership */
-
-#define ICMPV6_DEST_UNREACH             1
-#define ICMPV6_PACKET_TOOBIG            2
-#define ICMPV6_TIME_EXCEEDED            3
-#define ICMPV6_PARAMETER_PROBLEM        4
-#define ICMPV6_INFOMSG_MASK             128 /* message is info if bit set */
-#define ICMPV6_ECHOREQUEST              128
-#define ICMPV6_ECHOREPLY                129
-#define ICMPV6_MGM_QUERY                130
-#define ICMPV6_MGM_REPORT               131
-#define ICMPV6_MGM_REDUCTION            132
-
-#define ICMPV6_DEST_UNREACH_NOROUTE	  0
-#define ICMPV6_DEST_UNREACH_ADMIN	  1 /* administratively prohibited */
-#define ICMPV6_DEST_UNREACH_NOTNEIGHBOR   2 /* not a neighbor (and must be) */
-#define ICMPV6_DEST_UNREACH_ADDR          3
-#define ICMPV6_DEST_UNREACH_NOPORT        4
-#define ICMPV6_TIME_EXCEED_HOPS           0 /* Hop Limit == 0 in transit */
-#define ICMPV6_TIME_EXCEED_REASSEMBLY     1 /* Reassembly time out */
-#define ICMPV6_PARAMPROB_HEADER           0 /* erroneous header field */
-#define ICMPV6_PARAMPROB_NEXTHEADER       1 /* unrecognized Next Header */
-#define ICMPV6_PARAMPROB_OPTION           2 /* unrecognized option */
-
-#if defined(__OPTIMIZE__)
-#include <asm/bitops.h>
-
-#define ICMPV6_FILTER_WILLPASS(type, filterp) \
-	(test_bit(type, filterp) == 0)
-
-#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \
-	test_bit(type, filterp)
-
-#define ICMPV6_FILTER_SETPASS(type, filterp) \
-	clear_bit(type & 0x1f, &((filterp)->data[type >> 5]))
-
-#define ICMPV6_FILTER_SETBLOCK(type, filterp) \
-	set_bit(type & 0x1f, &((filterp)->data[type >> 5]))
-#else 
-#define ICMPV6_FILTER_WILLPASS(type, filterp) \
-	((((filterp)->data[(type) >> 5]) & (1 << ((type) & 31))) == 0)
-
-#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \
-	((((filterp)->data[(type) >> 5]) & (1 << ((type) & 31))) != 0)
-
-#define ICMPV6_FILTER_SETPASS(type, filterp) \
-	((((filterp)->data[(type) >> 5]) &= ~(1 << ((type) & 31))))
-
-#define ICMPV6_FILTER_SETBLOCK(type, filterp) \
-	((((filterp)->data[(type) >> 5]) |=  (1 << ((type) & 31))))
-#endif
-
-#define ICMPV6_FILTER_SETPASSALL(filterp) \
-	memset(filterp, 0, sizeof(struct icmpv6_filter));
-
-#define ICMPV6_FILTER_SETBLOCKALL(filterp) \
-	memset(filterp, 0xFF, sizeof(struct icmpv6_filter));
-
-#define ND6_ROUTER_SOLICITATION		133
-#define ND6_ROUTER_ADVERTISEMENT	134
-#define ND6_NEIGHBOR_SOLICITATION	135
-#define ND6_NEIGHBOR_ADVERTISEMENT	136
-#define ND6_REDIRECT			137
-
-enum nd6_option 
-  {
-    ND6_OPT_SOURCE_LINKADDR=1,
-    ND6_OPT_TARGET_LINKADDR=2,
-    ND6_OPT_PREFIX_INFORMATION=3,
-    ND6_OPT_REDIRECTED_HEADER=4,
-    ND6_OPT_MTU=5,
-    ND6_OPT_ENDOFLIST=256
-  };
-
-struct nd6_router_solicit      /* router solicitation */
-  {
-    struct icmpv6hdr		rsol_hdr;
-  };
-
-#define rsol_type		rsol_hdr.icmpv6_type
-#define rsol_code		rsol_hdr.icmpv6_code
-#define rsol_cksum		rsol_hdr.icmpv6_cksum
-#define rsol_reserved		rsol_hdr.icmpv6_data32[0]
-
-struct nd6_router_advert 
-  {
-    struct icmpv6hdr	radv_hdr;
-    u_int32_t		radv_reachable;	 /* reachable time	*/
-    u_int32_t		radv_retransmit; /* reachable retransmit time */
-  };
-
-#define radv_type		radv_hdr.icmpv6_type
-#define radv_code		radv_hdr.icmpv6_code
-#define radv_cksum		radv_hdr.icmpv6_cksum
-#define radv_maxhoplimit	radv_hdr.icmpv6_data8[0]
-#define radv_m_o_res		radv_hdr.icmpv6_data8[1]
-#define ND6_RADV_M_BIT		0x80
-#define ND6_RADV_O_BIT		0x40
-#define radv_router_lifetime	radv_hdr.icmpv6_data16[1]
-
-struct nd6_nsolicitation 	/* neighbor solicitation */
-  {
-    struct icmpv6hdr	nsol6_hdr;
-    struct in6_addr	nsol6_target;
-  };
-
-struct nd6_nadvertisement 	/* neighbor advertisement */
-  {
-    struct icmpv6hdr	nadv6_hdr;
-    struct in6_addr	nadv6_target;
-  };
-
-#define nadv6_flags			nadv6_hdr.icmpv6_data32[0]
-#define ND6_NADVERFLAG_ISROUTER		0x80
-#define ND6_NADVERFLAG_SOLICITED	0x40
-#define ND6_NADVERFLAG_OVERRIDE		0x20
-
-struct nd6_redirect            /* redirect */
-  {
-    struct icmpv6hdr	redirect_hdr;
-    struct in6_addr	redirect_target;
-    struct in6_addr	redirect_destination;
-  };
-
-struct nd6_opt_prefix_info     /* prefix information */
-  {
-    u_int8_t		opt_type;
-    u_int8_t		opt_length;
-    u_int8_t		opt_prefix_length;
-    u_int8_t		opt_l_a_res;
-    u_int32_t		opt_valid_life;
-    u_int32_t		opt_preferred_life;
-    u_int32_t		opt_reserved2;
-    struct in6_addr	opt_prefix;
-  };
-
-#define ND6_OPT_PI_L_BIT	0x80
-#define ND6_OPT_PI_A_BIT	0x40
-
-struct nd6_opt_mtu 		/* MTU option */
-  {
-    u_int8_t		opt_type;
-    u_int8_t		opt_length;
-    u_int16_t		opt_reserved;
-    u_int32_t		opt_mtu;
-  };
-
-#endif /* _NETINET6_ICMPV6_H */
diff --git a/sysdeps/generic/netinet/in.h b/sysdeps/generic/netinet/in.h
deleted file mode 100644
index 1f3e241869..0000000000
--- a/sysdeps/generic/netinet/in.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_NETINET_IN_H
-
-#define	_NETINET_IN_H	1
-#include <features.h>
-
-#include <sys/socket.h>
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-/* Standard well-defined IP protocols.  */
-enum
-  {
-    IPPROTO_IP = 0,	/* Dummy protocol for TCP.  */
-    IPPROTO_ICMP = 1,	/* Internet Control Message Protocol.  */
-    IPPROTO_IGMP = 2,	/* Internet Group Management Protocol. */
-    IPPROTO_TCP = 6,	/* Transmission Control Protocol.  */
-    IPPROTO_EGP = 8,	/* Exterior Gateway Protocol.  */
-    IPPROTO_PUP = 12,	/* PUP protocol.  */
-    IPPROTO_UDP = 17,	/* User Datagram Protocol.  */
-    IPPROTO_IDP = 22,	/* XNS IDP protocol.  */
-
-    IPPROTO_RAW = 255,	/* Raw IP packets.  */
-    IPPROTO_MAX
-  };
-
-/* Standard well-known ports.  */
-enum
-  {
-    IPPORT_ECHO = 7,		/* Echo service.  */
-    IPPORT_DISCARD = 9,		/* Discard transmissions service.  */
-    IPPORT_SYSTAT = 11,		/* System status service.  */
-    IPPORT_DAYTIME = 13,	/* Time of day service.  */
-    IPPORT_NETSTAT = 15,	/* Network status service.  */
-    IPPORT_FTP = 21,		/* File Transfer Protocol.  */
-    IPPORT_TELNET = 23,		/* Telnet protocol.  */
-    IPPORT_SMTP = 25,		/* Simple Mail Transfer Protocol.  */
-    IPPORT_TIMESERVER = 37,	/* Timeserver service.  */
-    IPPORT_NAMESERVER = 42,	/* Domain Name Service.  */
-    IPPORT_WHOIS = 43,		/* Internet Whois service.  */
-    IPPORT_MTP = 57,
-
-    IPPORT_TFTP = 69,		/* Trivial File Transfer Protocol.  */
-    IPPORT_RJE = 77,
-    IPPORT_FINGER = 79,		/* Finger service.  */
-    IPPORT_TTYLINK = 87,
-    IPPORT_SUPDUP = 95,		/* SUPDUP protocol.  */
-
-
-    IPPORT_EXECSERVER = 512,	/* execd service.  */
-    IPPORT_LOGINSERVER = 513,	/* rlogind service.  */
-    IPPORT_CMDSERVER = 514,
-    IPPORT_EFSSERVER = 520,
-
-    /* UDP ports.  */
-    IPPORT_BIFFUDP = 512,
-    IPPORT_WHOSERVER = 513,
-    IPPORT_ROUTESERVER = 520,
-
-    /* Ports less than this value are reserved for privileged processes.  */
-    IPPORT_RESERVED = 1024,
-
-    /* Ports greater this value are reserved for (non-privileged) servers.  */
-    IPPORT_USERRESERVED = 5000
-  };
-
-
-/* Link numbers.  */
-#define	IMPLINK_IP		155
-#define	IMPLINK_LOWEXPER	156
-#define	IMPLINK_HIGHEXPER	158
-
-
-/* Internet address.  */
-struct in_addr
-  {
-    unsigned int s_addr;
-  };
-
-
-/* Definitions of the bits in an Internet address integer.
-
-   On subnets, host and network parts are found according to
-   the subnet mask, not these masks.  */
-
-#define	IN_CLASSA(a)		((((unsigned) (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)		((((unsigned) (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)		((((unsigned) (a)) & 0xc0000000) == 0xc0000000)
-#define	IN_CLASSC_NET		0xffffff00
-#define	IN_CLASSC_NSHIFT	8
-#define	IN_CLASSC_HOST		(0xffffffff & ~IN_CLASSC_NET)
-
-#define	IN_CLASSD(a)		((((unsigned) (a)) & 0xf0000000) == 0xe0000000)
-#define	IN_MULTICAST(a)		IN_CLASSD(a)
-
-#define	IN_EXPERIMENTAL(a)	((((unsigned) (a)) & 0xe0000000) == 0xe0000000)
-#define	IN_BADCLASS(a)		((((unsigned) (a)) & 0xf0000000) == 0xf0000000)
-
-/* Address to accept any incoming messages.  */
-#define	INADDR_ANY		((unsigned) 0x00000000)
-/* Address to send to all hosts.  */
-#define	INADDR_BROADCAST	((unsigned) 0xffffffff)
-/* Address indicating an error return.  */
-#define	INADDR_NONE		((unsigned) 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	((unsigned) 0x7f000001)	/* Inet address 127.0.0.1.  */
-#endif
-
-
-/* IPv6 address */
-struct in6_addr
-  {
-    union
-      {
-	u_int8_t	u6_addr8[16];
-	u_int16_t	u6_addr16[8];
-	u_int32_t	u6_addr32[4];
-#if (~0UL) > 0xffffffff
-	u_int64_t	u6_addr64[2];
-#endif
-      } in6_u;
-#define s6_addr			in6_u.u6_addr8
-#define s6_addr16		in6_u.u6_addr16
-#define s6_addr32		in6_u.u6_addr32
-#define s6_addr64		in6_u.u6_addr64
-  };
-
-extern const struct in6_addr in6addr_any;        /* :: */
-extern const struct in6_addr in6addr_loopback;   /* ::1 */
-#define IN6ADDR_ANY_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
-#define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }
-
-#define INET_ADDRSTRLEN 16
-#define INET6_ADDRSTRLEN 46
-
-
-
-/* Get the definition of the macro to define the common sockaddr members.  */
-#include <sockaddrcom.h>
-
-
-/* Structure describing an Internet socket address.  */
-struct sockaddr_in
-  {
-    __SOCKADDR_COMMON (sin_);
-    unsigned short int 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(unsigned short int) -
-			   sizeof(struct in_addr)];
-  };
-
-/* Ditto, for IPv6.  */
-struct sockaddr_in6
-  {
-    __SOCKADDR_COMMON (sin6_);
-    u_int16_t		sin6_port;      /* Transport layer port # */
-    u_int32_t		sin6_flowinfo;  /* IPv6 flow information */
-    struct in6_addr	sin6_addr;      /* IPv6 address */
-  };
-
-/* IPv6 multicast request.  */
-struct ipv6_mreq
-  {
-    /* IPv6 multicast address of group */
-    struct in6_addr ipv6mr_multiaddr;
-
-    /* local IPv6 address of interface */
-    int		ipv6mr_ifindex;
-  };
-
-/* Options for use with `getsockopt' and `setsockopt' at the IP level.
-   The first word in the comment at the right is the data type used;
-   "bool" means a boolean value stored in an `int'.  */
-#define	IP_OPTIONS	1	/* ip_opts; IP per-packet options.  */
-#define	IP_HDRINCL	2	/* int; Header is included with data.  */
-#define	IP_TOS		3	/* int; IP type of service and precedence.  */
-#define	IP_TTL		4	/* int; IP time to live.  */
-#define	IP_RECVOPTS	5	/* bool; Receive all IP options w/datagram.  */
-#define	IP_RECVRETOPTS	6	/* bool; Receive IP options for response.  */
-#define	IP_RECVDSTADDR	7	/* bool; Receive IP dst addr w/datagram.  */
-#define	IP_RETOPTS	8	/* ip_opts; Set/get IP per-packet options.  */
-#define IP_MULTICAST_IF 9	/* in_addr; set/get IP multicast i/f */
-#define IP_MULTICAST_TTL 10	/* u_char; set/get IP multicast ttl */
-#define IP_MULTICAST_LOOP 11	/* i_char; set/get IP multicast loopback */
-#define IP_ADD_MEMBERSHIP 12	/* ip_mreq; add an IP group membership */
-#define IP_DROP_MEMBERSHIP 13	/* ip_mreq; drop an IP group membership */
-
-/* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
-   The `ip_dst' field is used for the first-hop gateway when using a
-   source route (this gets put into the header proper).  */
-struct ip_opts
-  {
-    struct in_addr ip_dst;	/* First hop; zero without source route.  */
-    char ip_opts[40];		/* Actually variable in size.  */
-  };
-
-/* Structure used for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. */
-struct ip_mreq
-{
-  struct in_addr imr_multiaddr;	/* IP multicast address of group */
-  struct in_addr imr_interface;	/* local IP address of interface */
-};
-
-/* Functions to convert between host and network byte order.
-
-   Please note that these functions normally take `unsigned long int' or
-   `unsigned short int' values as arguments and also return them.  But
-   this was a short-sighted decision since on different systems the types
-   may have different representations but the values are always the same.  */
-
-extern u_int32_t ntohl __P ((u_int32_t __netlong));
-extern u_int16_t ntohs __P ((u_int16_t __netshort));
-extern u_int32_t htonl __P ((u_int32_t __hostlong));
-extern u_int16_t htons __P ((u_int16_t __hostshort));
-
-#include <endian.h>
-
-#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)
-#endif
-
-/* IPV6 socket options.  */
-#define IPV6_ADDRFORM		1
-#define IPV6_RXINFO		2
-#define IPV6_RXHOPOPTS		3
-#define IPV6_RXDSTOPTS		4
-#define IPV6_RXSRCRT		5
-#define IPV6_PKTOPTIONS		6
-#define IPV6_CHECKSUM		7
-#define IPV6_HOPLIMIT		8
-
-#define IPV6_TXINFO		IPV6_RXINFO
-#define SCM_SRCINFO		IPV6_TXINFO
-#define SCM_SRCRT		IPV6_RXSRCRT
-
-#define IPV6_UNICAST_HOPS	16
-#define IPV6_MULTICAST_IF	17
-#define IPV6_MULTICAST_HOPS	18
-#define IPV6_MULTICAST_LOOP	19
-#define IPV6_ADD_MEMBERSHIP	20
-#define IPV6_DROP_MEMBERSHIP	21
-
-#define IN6_IS_ADDR_UNSPECIFIED(a) \
-        ((((u_int32_t *)(a))[0] == 0) && ((u_int32_t *)(a))[1] == 0) && \
-         (((u_int32_t *)(a))[2] == 0) && ((u_int32_t *)(a))[3] == 0))
-
-#define IN6_IS_ADDR_LOOPBACK(a) \
-        ((((u_int32_t *)(a))[0] == 0) && ((u_int32_t *)(a))[1] == 0) && \
-         (((u_int32_t *)(a))[2] == 0) && ((u_int32_t *)(a))[3] == htonl(1)))
-
-#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *)(a))[0] == 0xff)
-
-#define IN6_IS_ADDR_LINKLOCAL(a) \
-        ((((u_int32_t *)(a))[0] & htonl(0xffc00000)) == htonl(0xfe800000))
-
-#define IN6_IS_ADDR_SITELOCAL(a) \
-        ((((u_int32_t *)(a))[0] & htonl(0xffc00000)) == htonl(0xfec00000))
-
-#define IN6_IS_ADDR_V4MAPPED(a) \
-        ((((u_int32_t *)(a))[0] == 0) && (((u_int32_t *)(a))[1] == 0) && \
-         (((u_int32_t *)(a))[2] == htonl(0xffff)))
-
-#define IN6_IS_ADDR_V4COMPAT(a) \
-        ((((u_int32_t *)(a))[0] == 0) && (((u_int32_t *)(a))[1] == 0) && \
-         (((u_int32_t *)(a))[2] == 0) && (ntohl(((u_int32_t *)(a))[3]) > 1))
-
-
-__END_DECLS
-
-#endif	/* netinet/in.h */
diff --git a/sysdeps/generic/netinet/inbits.h b/sysdeps/generic/netinet/inbits.h
new file mode 100644
index 0000000000..ae6afa7d50
--- /dev/null
+++ b/sysdeps/generic/netinet/inbits.h
@@ -0,0 +1,84 @@
+/* Copyright (C) 1997 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 modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Generic version.  */
+
+#ifndef _NETINET_INBITS_H
+#define _NETINET_INBITS_H 1
+
+/* Link numbers.  */
+#define	IMPLINK_IP		155
+#define	IMPLINK_LOWEXPER	156
+#define	IMPLINK_HIGHEXPER	158
+
+
+/* Options for use with `getsockopt' and `setsockopt' at the IP level.
+   The first word in the comment at the right is the data type used;
+   "bool" means a boolean value stored in an `int'.  */
+#define	IP_OPTIONS	1	/* ip_opts; IP per-packet options.  */
+#define	IP_HDRINCL	2	/* int; Header is included with data.  */
+#define	IP_TOS		3	/* int; IP type of service and precedence.  */
+#define	IP_TTL		4	/* int; IP time to live.  */
+#define	IP_RECVOPTS	5	/* bool; Receive all IP options w/datagram.  */
+#define	IP_RECVRETOPTS	6	/* bool; Receive IP options for response.  */
+#define	IP_RECVDSTADDR	7	/* bool; Receive IP dst addr w/datagram.  */
+#define	IP_RETOPTS	8	/* ip_opts; Set/get IP per-packet options.  */
+#define IP_MULTICAST_IF 9	/* in_addr; set/get IP multicast i/f */
+#define IP_MULTICAST_TTL 10	/* u_char; set/get IP multicast ttl */
+#define IP_MULTICAST_LOOP 11	/* i_char; set/get IP multicast loopback */
+#define IP_ADD_MEMBERSHIP 12	/* ip_mreq; add an IP group membership */
+#define IP_DROP_MEMBERSHIP 13	/* ip_mreq; drop an IP group membership */
+
+/* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
+   The `ip_dst' field is used for the first-hop gateway when using a
+   source route (this gets put into the header proper).  */
+struct ip_opts
+  {
+    struct in_addr ip_dst;	/* First hop; zero without source route.  */
+    char ip_opts[40];		/* Actually variable in size.  */
+  };
+
+/* Structure used for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. */
+struct ip_mreq
+{
+  struct in_addr imr_multiaddr;	/* IP multicast address of group */
+  struct in_addr imr_interface;	/* local IP address of interface */
+};
+
+/* IPV6 socket options.  */
+#define IPV6_ADDRFORM		1
+#define IPV6_RXINFO		2
+#define IPV6_RXHOPOPTS		3
+#define IPV6_RXDSTOPTS		4
+#define IPV6_RXSRCRT		5
+#define IPV6_PKTOPTIONS		6
+#define IPV6_CHECKSUM		7
+#define IPV6_HOPLIMIT		8
+
+#define IPV6_TXINFO		IPV6_RXINFO
+#define SCM_SRCINFO		IPV6_TXINFO
+#define SCM_SRCRT		IPV6_RXSRCRT
+
+#define IPV6_UNICAST_HOPS	16
+#define IPV6_MULTICAST_IF	17
+#define IPV6_MULTICAST_HOPS	18
+#define IPV6_MULTICAST_LOOP	19
+#define IPV6_ADD_MEMBERSHIP	20
+#define IPV6_DROP_MEMBERSHIP	21
+
+#endif	/* netinet/inbits.h */
diff --git a/sysdeps/generic/netinet/ip6.h b/sysdeps/generic/netinet/ip6.h
deleted file mode 100644
index 487cafa374..0000000000
--- a/sysdeps/generic/netinet/ip6.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef _NETINET_IP6_H
-#define _NETINET_IP6_H 1
-
-#include <netinet/in.h>
-#include <endian.h>
-
-struct ipv6hdr {
-#if (__BYTE_ORDER == __LITTLE_ENDIAN)
-  u_int8_t ipv6_version:4;
-  u_int8_t ipv6_priority:4; /* going away? */
-  u_int32_t ipv6_flowid:24;
-#elif (__BYTE_ORDER == __BIG_ENDIAN)
-  u_int32_t ipv6_flowid:24;
-  u_int8_t ipv6_priority:4; /* going away? */
-  u_int8_t ipv6_version:4;
-#else
-#error  Unknown endianness
-#endif
-  u_int16_t ipv6_len;
-  u_int8_t ipv6_nextheader;
-  u_int8_t ipv6_hoplimit;
-  struct in6_addr ipv6_src;
-  struct in6_addr ipv6_dst;
-};
-
-#endif /* _NETINET_IP6_H */
diff --git a/sysdeps/generic/strcasecmp.c b/sysdeps/generic/strcasecmp.c
index cca51f3dc9..4640372ebd 100644
--- a/sysdeps/generic/strcasecmp.c
+++ b/sysdeps/generic/strcasecmp.c
@@ -25,15 +25,32 @@
 
 #ifndef weak_alias
 # define __strcasecmp strcasecmp
+# define TOLOWER(Ch) tolower (Ch)
+#else
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+#  define __strcasecmp __strcasecmp_l
+#  define TOLOWER(Ch) __tolower_l ((Ch), loc)
+# else
+#  define TOLOWER(Ch) tolower (Ch)
+# endif
+#endif
+
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define LOCALE_PARAM , loc
+# define LOCALE_PARAM_DECL __locale_t loc;
+#else
+# define LOCALE_PARAM
+# define LOCALE_PARAM_DECL
 #endif
 
 /* Compare S1 and S2, ignoring case, returning less than, equal to or
    greater than zero if S1 is lexicographically less than,
    equal to or greater than S2.  */
 int
-__strcasecmp (s1, s2)
+__strcasecmp (s1, s2 LOCALE_PARAM)
      const char *s1;
      const char *s2;
+     LOCALE_PARAM_DECL
 {
   const unsigned char *p1 = (const unsigned char *) s1;
   const unsigned char *p2 = (const unsigned char *) s2;
@@ -44,8 +61,8 @@ __strcasecmp (s1, s2)
 
   do
     {
-      c1 = tolower (*p1++);
-      c2 = tolower (*p2++);
+      c1 = TOLOWER (*p1++);
+      c2 = TOLOWER (*p2++);
       if (c1 == '\0')
 	break;
     }
@@ -53,6 +70,6 @@ __strcasecmp (s1, s2)
 
   return c1 - c2;
 }
-#ifdef weak_alias
+#ifndef __strcasecmp
 weak_alias (__strcasecmp, strcasecmp)
 #endif
diff --git a/sysdeps/generic/strcasecmp_l.c b/sysdeps/generic/strcasecmp_l.c
new file mode 100644
index 0000000000..61e89872fe
--- /dev/null
+++ b/sysdeps/generic/strcasecmp_l.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 1997 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
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#define USE_IN_EXTENDED_LOCALE_MODEL	1
+#include <sysdeps/generic/strcasecmp.c>
diff --git a/sysdeps/generic/strncase.c b/sysdeps/generic/strncase.c
index b0b1044777..cd2914955b 100644
--- a/sysdeps/generic/strncase.c
+++ b/sysdeps/generic/strncase.c
@@ -18,11 +18,31 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <string.h>
 #include <ctype.h>
 
 #ifndef weak_alias
 # define __strncasecmp strncasecmp
+# define TOLOWER(Ch) tolower (Ch)
+#else
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+#  define __strncasecmp __strncasecmp_l
+#  define TOLOWER(Ch) __tolower_l ((Ch), loc)
+# else
+#  define TOLOWER(Ch) tolower (Ch)
+# endif
+#endif
+
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define LOCALE_PARAM , loc
+# define LOCALE_PARAM_DECL __locale_t loc;
+#else
+# define LOCALE_PARAM
+# define LOCALE_PARAM_DECL
 #endif
 
 /* Compare no more than N characters of S1 and S2,
@@ -30,10 +50,11 @@
    greater than zero if S1 is lexicographically less
    than, equal to or greater than S2.  */
 int
-__strncasecmp (s1, s2, n)
+__strncasecmp (s1, s2, n LOCALE_PARAM)
      const char *s1;
      const char *s2;
      size_t n;
+     LOCALE_PARAM_DECL
 {
   const unsigned char *p1 = (const unsigned char *) s1;
   const unsigned char *p2 = (const unsigned char *) s2;
@@ -44,14 +65,14 @@ __strncasecmp (s1, s2, n)
 
   do
     {
-      c1 = tolower (*p1++);
-      c2 = tolower (*p2++);
+      c1 = TOLOWER (*p1++);
+      c2 = TOLOWER (*p2++);
       if (c1 == '\0' || c1 != c2)
 	return c1 - c2;
     } while (--n > 0);
 
   return c1 - c2;
 }
-#ifdef weak_alias
+#ifndef __strncasecmp
 weak_alias (__strncasecmp, strncasecmp)
 #endif
diff --git a/sysdeps/generic/strncase_l.c b/sysdeps/generic/strncase_l.c
new file mode 100644
index 0000000000..757a3a6c74
--- /dev/null
+++ b/sysdeps/generic/strncase_l.c
@@ -0,0 +1,22 @@
+/* Compare at most N characters of two strings without taking care for
+   the case using given locale.
+   Copyright (C) 1997 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
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#define USE_IN_EXTENDED_LOCALE_MODEL	1
+#include <sysdeps/generic/strncase.c>