diff options
Diffstat (limited to 'inet/netinet')
-rw-r--r-- | inet/netinet/ether.h | 55 | ||||
-rw-r--r-- | inet/netinet/icmp6.h | 345 | ||||
-rw-r--r-- | inet/netinet/igmp.h | 125 | ||||
-rw-r--r-- | inet/netinet/in.h | 632 | ||||
-rw-r--r-- | inet/netinet/ip6.h | 188 |
5 files changed, 0 insertions, 1345 deletions
diff --git a/inet/netinet/ether.h b/inet/netinet/ether.h deleted file mode 100644 index 966ec8aec1..0000000000 --- a/inet/netinet/ether.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Functions for storing Ethernet addresses in ASCII and mapping to hostnames. - Copyright (C) 1996-2017 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _NETINET_ETHER_H -#define _NETINET_ETHER_H 1 - -#include <features.h> - -/* Get definition of `struct ether_addr'. */ -#include <netinet/if_ether.h> - -#ifdef __USE_MISC -__BEGIN_DECLS - -/* Convert 48 bit Ethernet ADDRess to ASCII. */ -extern char *ether_ntoa (const struct ether_addr *__addr) __THROW; -extern char *ether_ntoa_r (const struct ether_addr *__addr, char *__buf) - __THROW; - -/* Convert ASCII string S to 48 bit Ethernet address. */ -extern struct ether_addr *ether_aton (const char *__asc) __THROW; -extern struct ether_addr *ether_aton_r (const char *__asc, - struct ether_addr *__addr) __THROW; - -/* Map 48 bit Ethernet number ADDR to HOSTNAME. */ -extern int ether_ntohost (char *__hostname, const struct ether_addr *__addr) - __THROW; - -/* Map HOSTNAME to 48 bit Ethernet address. */ -extern int ether_hostton (const char *__hostname, struct ether_addr *__addr) - __THROW; - -/* Scan LINE and set ADDR and HOSTNAME. */ -extern int ether_line (const char *__line, struct ether_addr *__addr, - char *__hostname) __THROW; - -__END_DECLS -#endif /* Use misc. */ - -#endif /* netinet/ether.h */ diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h deleted file mode 100644 index fc5d09ecac..0000000000 --- a/inet/netinet/icmp6.h +++ /dev/null @@ -1,345 +0,0 @@ -/* Copyright (C) 1991-2017 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _NETINET_ICMP6_H -#define _NETINET_ICMP6_H 1 - -#include <inttypes.h> -#include <string.h> -#include <sys/types.h> -#include <netinet/in.h> - -#define ICMP6_FILTER 1 - -#define ICMP6_FILTER_BLOCK 1 -#define ICMP6_FILTER_PASS 2 -#define ICMP6_FILTER_BLOCKOTHERS 3 -#define ICMP6_FILTER_PASSONLY 4 - -struct icmp6_filter - { - uint32_t icmp6_filt[8]; - }; - -struct icmp6_hdr - { - uint8_t icmp6_type; /* type field */ - uint8_t icmp6_code; /* code field */ - uint16_t icmp6_cksum; /* checksum field */ - union - { - uint32_t icmp6_un_data32[1]; /* type-specific field */ - uint16_t icmp6_un_data16[2]; /* type-specific field */ - uint8_t icmp6_un_data8[4]; /* type-specific field */ - } icmp6_dataun; - }; - -#define icmp6_data32 icmp6_dataun.icmp6_un_data32 -#define icmp6_data16 icmp6_dataun.icmp6_un_data16 -#define icmp6_data8 icmp6_dataun.icmp6_un_data8 -#define icmp6_pptr icmp6_data32[0] /* parameter prob */ -#define icmp6_mtu icmp6_data32[0] /* packet too big */ -#define icmp6_id icmp6_data16[0] /* echo request/reply */ -#define icmp6_seq icmp6_data16[1] /* echo request/reply */ -#define icmp6_maxdelay icmp6_data16[0] /* mcast group membership */ - -#define ICMP6_DST_UNREACH 1 -#define ICMP6_PACKET_TOO_BIG 2 -#define ICMP6_TIME_EXCEEDED 3 -#define ICMP6_PARAM_PROB 4 - -#define ICMP6_INFOMSG_MASK 0x80 /* all informational messages */ - -#define ICMP6_ECHO_REQUEST 128 -#define ICMP6_ECHO_REPLY 129 -#define MLD_LISTENER_QUERY 130 -#define MLD_LISTENER_REPORT 131 -#define MLD_LISTENER_REDUCTION 132 - -#define ICMP6_DST_UNREACH_NOROUTE 0 /* no route to destination */ -#define ICMP6_DST_UNREACH_ADMIN 1 /* communication with destination */ - /* administratively prohibited */ -#define ICMP6_DST_UNREACH_BEYONDSCOPE 2 /* beyond scope of source address */ -#define ICMP6_DST_UNREACH_ADDR 3 /* address unreachable */ -#define ICMP6_DST_UNREACH_NOPORT 4 /* bad port */ - -#define ICMP6_TIME_EXCEED_TRANSIT 0 /* Hop Limit == 0 in transit */ -#define ICMP6_TIME_EXCEED_REASSEMBLY 1 /* Reassembly time out */ - -#define ICMP6_PARAMPROB_HEADER 0 /* erroneous header field */ -#define ICMP6_PARAMPROB_NEXTHEADER 1 /* unrecognized Next Header */ -#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized IPv6 option */ - -#define ICMP6_FILTER_WILLPASS(type, filterp) \ - ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0) - -#define ICMP6_FILTER_WILLBLOCK(type, filterp) \ - ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0) - -#define ICMP6_FILTER_SETPASS(type, filterp) \ - ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))) - -#define ICMP6_FILTER_SETBLOCK(type, filterp) \ - ((((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31)))) - -#define ICMP6_FILTER_SETPASSALL(filterp) \ - memset (filterp, 0, sizeof (struct icmp6_filter)); - -#define ICMP6_FILTER_SETBLOCKALL(filterp) \ - memset (filterp, 0xFF, sizeof (struct icmp6_filter)); - -#define ND_ROUTER_SOLICIT 133 -#define ND_ROUTER_ADVERT 134 -#define ND_NEIGHBOR_SOLICIT 135 -#define ND_NEIGHBOR_ADVERT 136 -#define ND_REDIRECT 137 - -struct nd_router_solicit /* router solicitation */ - { - struct icmp6_hdr nd_rs_hdr; - /* could be followed by options */ - }; - -#define nd_rs_type nd_rs_hdr.icmp6_type -#define nd_rs_code nd_rs_hdr.icmp6_code -#define nd_rs_cksum nd_rs_hdr.icmp6_cksum -#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0] - -struct nd_router_advert /* router advertisement */ - { - struct icmp6_hdr nd_ra_hdr; - uint32_t nd_ra_reachable; /* reachable time */ - uint32_t nd_ra_retransmit; /* retransmit timer */ - /* could be followed by options */ - }; - -#define nd_ra_type nd_ra_hdr.icmp6_type -#define nd_ra_code nd_ra_hdr.icmp6_code -#define nd_ra_cksum nd_ra_hdr.icmp6_cksum -#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0] -#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1] -#define ND_RA_FLAG_MANAGED 0x80 -#define ND_RA_FLAG_OTHER 0x40 -#define ND_RA_FLAG_HOME_AGENT 0x20 -#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1] - -struct nd_neighbor_solicit /* neighbor solicitation */ - { - struct icmp6_hdr nd_ns_hdr; - struct in6_addr nd_ns_target; /* target address */ - /* could be followed by options */ - }; - -#define nd_ns_type nd_ns_hdr.icmp6_type -#define nd_ns_code nd_ns_hdr.icmp6_code -#define nd_ns_cksum nd_ns_hdr.icmp6_cksum -#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0] - -struct nd_neighbor_advert /* neighbor advertisement */ - { - struct icmp6_hdr nd_na_hdr; - struct in6_addr nd_na_target; /* target address */ - /* could be followed by options */ - }; - -#define nd_na_type nd_na_hdr.icmp6_type -#define nd_na_code nd_na_hdr.icmp6_code -#define nd_na_cksum nd_na_hdr.icmp6_cksum -#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0] -#if __BYTE_ORDER == __BIG_ENDIAN -#define ND_NA_FLAG_ROUTER 0x80000000 -#define ND_NA_FLAG_SOLICITED 0x40000000 -#define ND_NA_FLAG_OVERRIDE 0x20000000 -#else /* __BYTE_ORDER == __LITTLE_ENDIAN */ -#define ND_NA_FLAG_ROUTER 0x00000080 -#define ND_NA_FLAG_SOLICITED 0x00000040 -#define ND_NA_FLAG_OVERRIDE 0x00000020 -#endif - -struct nd_redirect /* redirect */ - { - struct icmp6_hdr nd_rd_hdr; - struct in6_addr nd_rd_target; /* target address */ - struct in6_addr nd_rd_dst; /* destination address */ - /* could be followed by options */ - }; - -#define nd_rd_type nd_rd_hdr.icmp6_type -#define nd_rd_code nd_rd_hdr.icmp6_code -#define nd_rd_cksum nd_rd_hdr.icmp6_cksum -#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0] - -struct nd_opt_hdr /* Neighbor discovery option header */ - { - uint8_t nd_opt_type; - uint8_t nd_opt_len; /* in units of 8 octets */ - /* followed by option specific data */ - }; - -#define ND_OPT_SOURCE_LINKADDR 1 -#define ND_OPT_TARGET_LINKADDR 2 -#define ND_OPT_PREFIX_INFORMATION 3 -#define ND_OPT_REDIRECTED_HEADER 4 -#define ND_OPT_MTU 5 -#define ND_OPT_RTR_ADV_INTERVAL 7 -#define ND_OPT_HOME_AGENT_INFO 8 - -struct nd_opt_prefix_info /* prefix information */ - { - uint8_t nd_opt_pi_type; - uint8_t nd_opt_pi_len; - uint8_t nd_opt_pi_prefix_len; - uint8_t nd_opt_pi_flags_reserved; - uint32_t nd_opt_pi_valid_time; - uint32_t nd_opt_pi_preferred_time; - uint32_t nd_opt_pi_reserved2; - struct in6_addr nd_opt_pi_prefix; - }; - -#define ND_OPT_PI_FLAG_ONLINK 0x80 -#define ND_OPT_PI_FLAG_AUTO 0x40 -#define ND_OPT_PI_FLAG_RADDR 0x20 - -struct nd_opt_rd_hdr /* redirected header */ - { - uint8_t nd_opt_rh_type; - uint8_t nd_opt_rh_len; - uint16_t nd_opt_rh_reserved1; - uint32_t nd_opt_rh_reserved2; - /* followed by IP header and data */ - }; - -struct nd_opt_mtu /* MTU option */ - { - uint8_t nd_opt_mtu_type; - uint8_t nd_opt_mtu_len; - uint16_t nd_opt_mtu_reserved; - uint32_t nd_opt_mtu_mtu; - }; - -struct mld_hdr - { - struct icmp6_hdr mld_icmp6_hdr; - struct in6_addr mld_addr; /* multicast address */ - }; - -#define mld_type mld_icmp6_hdr.icmp6_type -#define mld_code mld_icmp6_hdr.icmp6_code -#define mld_cksum mld_icmp6_hdr.icmp6_cksum -#define mld_maxdelay mld_icmp6_hdr.icmp6_data16[0] -#define mld_reserved mld_icmp6_hdr.icmp6_data16[1] - -#define ICMP6_ROUTER_RENUMBERING 138 - -struct icmp6_router_renum /* router renumbering header */ - { - struct icmp6_hdr rr_hdr; - uint8_t rr_segnum; - uint8_t rr_flags; - uint16_t rr_maxdelay; - uint32_t rr_reserved; - }; - -#define rr_type rr_hdr.icmp6_type -#define rr_code rr_hdr.icmp6_code -#define rr_cksum rr_hdr.icmp6_cksum -#define rr_seqnum rr_hdr.icmp6_data32[0] - -/* Router renumbering flags */ -#define ICMP6_RR_FLAGS_TEST 0x80 -#define ICMP6_RR_FLAGS_REQRESULT 0x40 -#define ICMP6_RR_FLAGS_FORCEAPPLY 0x20 -#define ICMP6_RR_FLAGS_SPECSITE 0x10 -#define ICMP6_RR_FLAGS_PREVDONE 0x08 - -struct rr_pco_match /* match prefix part */ - { - uint8_t rpm_code; - uint8_t rpm_len; - uint8_t rpm_ordinal; - uint8_t rpm_matchlen; - uint8_t rpm_minlen; - uint8_t rpm_maxlen; - uint16_t rpm_reserved; - struct in6_addr rpm_prefix; - }; - -/* PCO code values */ -#define RPM_PCO_ADD 1 -#define RPM_PCO_CHANGE 2 -#define RPM_PCO_SETGLOBAL 3 - -struct rr_pco_use /* use prefix part */ - { - uint8_t rpu_uselen; - uint8_t rpu_keeplen; - uint8_t rpu_ramask; - uint8_t rpu_raflags; - uint32_t rpu_vltime; - uint32_t rpu_pltime; - uint32_t rpu_flags; - struct in6_addr rpu_prefix; - }; - -#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK 0x20 -#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO 0x10 - -#if __BYTE_ORDER == __BIG_ENDIAN -# define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000 -# define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000 -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80 -# define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40 -#endif - -struct rr_result /* router renumbering result message */ - { - uint16_t rrr_flags; - uint8_t rrr_ordinal; - uint8_t rrr_matchedlen; - uint32_t rrr_ifid; - struct in6_addr rrr_prefix; - }; - -#if __BYTE_ORDER == __BIG_ENDIAN -# define ICMP6_RR_RESULT_FLAGS_OOB 0x0002 -# define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001 -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define ICMP6_RR_RESULT_FLAGS_OOB 0x0200 -# define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100 -#endif - -/* Mobile IPv6 extension: Advertisement Interval. */ -struct nd_opt_adv_interval - { - uint8_t nd_opt_adv_interval_type; - uint8_t nd_opt_adv_interval_len; - uint16_t nd_opt_adv_interval_reserved; - uint32_t nd_opt_adv_interval_ival; - }; - -/* Mobile IPv6 extension: Home Agent Info. */ -struct nd_opt_home_agent_info - { - uint8_t nd_opt_home_agent_info_type; - uint8_t nd_opt_home_agent_info_len; - uint16_t nd_opt_home_agent_info_reserved; - uint16_t nd_opt_home_agent_info_preference; - uint16_t nd_opt_home_agent_info_lifetime; - }; - -#endif /* netinet/icmpv6.h */ diff --git a/inet/netinet/igmp.h b/inet/netinet/igmp.h deleted file mode 100644 index 292ced4a95..0000000000 --- a/inet/netinet/igmp.h +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright (C) 1997-2017 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _NETINET_IGMP_H -#define _NETINET_IGMP_H 1 - -#include <sys/cdefs.h> -#include <sys/types.h> - -#ifdef __USE_MISC - -#include <netinet/in.h> - -__BEGIN_DECLS - -/* - * Copyright (c) 1988 Stephen Deering. - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Stephen Deering of Stanford University. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)igmp.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD$ - */ - -struct igmp { - uint8_t igmp_type; /* IGMP type */ - uint8_t igmp_code; /* routing code */ - uint16_t igmp_cksum; /* checksum */ - struct in_addr igmp_group; /* group address */ -}; - -#define IGMP_MINLEN 8 - -/* - * Message types, including version number. - */ -#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */ -#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */ -#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */ -#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */ - -#define IGMP_DVMRP 0x13 /* DVMRP routing message */ -#define IGMP_PIM 0x14 /* PIM routing message */ -#define IGMP_TRACE 0x15 - -#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/ -#define IGMP_MTRACE 0x1f /* mcast traceroute messages */ - -#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */ - /* query (in seconds) according */ - /* to RFC1112 */ -#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */ - /* specifies time in 10th of seconds*/ - -/* - * States for the IGMP v2 state table. - */ -#define IGMP_DELAYING_MEMBER 1 -#define IGMP_IDLE_MEMBER 2 -#define IGMP_LAZY_MEMBER 3 -#define IGMP_SLEEPING_MEMBER 4 -#define IGMP_AWAKENING_MEMBER 5 - -/* - * States for IGMP router version cache. - */ -#define IGMP_v1_ROUTER 1 -#define IGMP_v2_ROUTER 2 - -/* - * The following four defininitions are for backwards compatibility. - * They should be removed as soon as all applications are updated to - * use the new constant names. - */ -#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY -#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT -#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT -#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP - -__END_DECLS - -#endif - -#endif /* netinet/igmp.h */ diff --git a/inet/netinet/in.h b/inet/netinet/in.h deleted file mode 100644 index f94b4b4e1c..0000000000 --- a/inet/netinet/in.h +++ /dev/null @@ -1,632 +0,0 @@ -/* Copyright (C) 1991-2017 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _NETINET_IN_H -#define _NETINET_IN_H 1 - -#include <features.h> -#include <bits/stdint-uintn.h> -#include <sys/socket.h> -#include <bits/types.h> - - -__BEGIN_DECLS - -/* Internet address. */ -typedef uint32_t in_addr_t; -struct in_addr - { - in_addr_t s_addr; - }; - -/* Get system-specific definitions. */ -#include <bits/in.h> - -/* Standard well-defined IP protocols. */ -enum - { - IPPROTO_IP = 0, /* Dummy protocol for TCP. */ -#define IPPROTO_IP IPPROTO_IP - IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */ -#define IPPROTO_ICMP IPPROTO_ICMP - IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */ -#define IPPROTO_IGMP IPPROTO_IGMP - IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */ -#define IPPROTO_IPIP IPPROTO_IPIP - IPPROTO_TCP = 6, /* Transmission Control Protocol. */ -#define IPPROTO_TCP IPPROTO_TCP - IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */ -#define IPPROTO_EGP IPPROTO_EGP - IPPROTO_PUP = 12, /* PUP protocol. */ -#define IPPROTO_PUP IPPROTO_PUP - IPPROTO_UDP = 17, /* User Datagram Protocol. */ -#define IPPROTO_UDP IPPROTO_UDP - IPPROTO_IDP = 22, /* XNS IDP protocol. */ -#define IPPROTO_IDP IPPROTO_IDP - IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */ -#define IPPROTO_TP IPPROTO_TP - IPPROTO_DCCP = 33, /* Datagram Congestion Control Protocol. */ -#define IPPROTO_DCCP IPPROTO_DCCP - IPPROTO_IPV6 = 41, /* IPv6 header. */ -#define IPPROTO_IPV6 IPPROTO_IPV6 - IPPROTO_RSVP = 46, /* Reservation Protocol. */ -#define IPPROTO_RSVP IPPROTO_RSVP - IPPROTO_GRE = 47, /* General Routing Encapsulation. */ -#define IPPROTO_GRE IPPROTO_GRE - IPPROTO_ESP = 50, /* encapsulating security payload. */ -#define IPPROTO_ESP IPPROTO_ESP - IPPROTO_AH = 51, /* authentication header. */ -#define IPPROTO_AH IPPROTO_AH - IPPROTO_MTP = 92, /* Multicast Transport Protocol. */ -#define IPPROTO_MTP IPPROTO_MTP - IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET. */ -#define IPPROTO_BEETPH IPPROTO_BEETPH - IPPROTO_ENCAP = 98, /* Encapsulation Header. */ -#define IPPROTO_ENCAP IPPROTO_ENCAP - IPPROTO_PIM = 103, /* Protocol Independent Multicast. */ -#define IPPROTO_PIM IPPROTO_PIM - IPPROTO_COMP = 108, /* Compression Header Protocol. */ -#define IPPROTO_COMP IPPROTO_COMP - IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */ -#define IPPROTO_SCTP IPPROTO_SCTP - IPPROTO_UDPLITE = 136, /* UDP-Lite protocol. */ -#define IPPROTO_UDPLITE IPPROTO_UDPLITE - IPPROTO_MPLS = 137, /* MPLS in IP. */ -#define IPPROTO_MPLS IPPROTO_MPLS - IPPROTO_RAW = 255, /* Raw IP packets. */ -#define IPPROTO_RAW IPPROTO_RAW - IPPROTO_MAX - }; - -/* If __USE_KERNEL_IPV6_DEFS is 1 then the user has included the kernel - network headers first and we should use those ABI-identical definitions - instead of our own, otherwise 0. */ -#if !__USE_KERNEL_IPV6_DEFS -enum - { - IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ -#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS - IPPROTO_ROUTING = 43, /* IPv6 routing header. */ -#define IPPROTO_ROUTING IPPROTO_ROUTING - IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ -#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT - IPPROTO_ICMPV6 = 58, /* ICMPv6. */ -#define IPPROTO_ICMPV6 IPPROTO_ICMPV6 - IPPROTO_NONE = 59, /* IPv6 no next header. */ -#define IPPROTO_NONE IPPROTO_NONE - IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ -#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS - IPPROTO_MH = 135 /* IPv6 mobility header. */ -#define IPPROTO_MH IPPROTO_MH - }; -#endif /* !__USE_KERNEL_IPV6_DEFS */ - -/* Type to represent a port. */ -typedef uint16_t in_port_t; - -/* 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 - }; - -/* 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) ((((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) ((((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) ((((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) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000) -#define IN_MULTICAST(a) IN_CLASSD(a) - -#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 ((in_addr_t) 0x00000000) -/* Address to send to all hosts. */ -#define INADDR_BROADCAST ((in_addr_t) 0xffffffff) -/* Address indicating an error return. */ -#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 ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1. */ -#endif - -/* Defines for Multicast INADDR. */ -#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 */ - -#if !__USE_KERNEL_IPV6_DEFS -/* IPv6 address */ -struct in6_addr - { - union - { - uint8_t __u6_addr8[16]; - uint16_t __u6_addr16[8]; - uint32_t __u6_addr32[4]; - } __in6_u; -#define s6_addr __in6_u.__u6_addr8 -#ifdef __USE_MISC -# define s6_addr16 __in6_u.__u6_addr16 -# define s6_addr32 __in6_u.__u6_addr32 -#endif - }; -#endif /* !__USE_KERNEL_IPV6_DEFS */ - -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 - - -/* Structure describing an Internet socket address. */ -struct sockaddr_in - { - __SOCKADDR_COMMON (sin_); - 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 (in_port_t) - - sizeof (struct in_addr)]; - }; - -#if !__USE_KERNEL_IPV6_DEFS -/* Ditto, for IPv6. */ -struct sockaddr_in6 - { - __SOCKADDR_COMMON (sin6_); - 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 */ - }; -#endif /* !__USE_KERNEL_IPV6_DEFS */ - -#ifdef __USE_MISC -/* IPv4 multicast request. */ -struct ip_mreq - { - /* IP multicast address of group. */ - struct in_addr imr_multiaddr; - - /* Local IP address of interface. */ - struct in_addr imr_interface; - }; - -struct ip_mreq_source - { - /* IP multicast address of group. */ - struct in_addr imr_multiaddr; - - /* IP address of interface. */ - struct in_addr imr_interface; - - /* IP address of source. */ - struct in_addr imr_sourceaddr; - }; -#endif - -#if !__USE_KERNEL_IPV6_DEFS -/* Likewise, for IPv6. */ -struct ipv6_mreq - { - /* IPv6 multicast address of group */ - struct in6_addr ipv6mr_multiaddr; - - /* local interface */ - unsigned int ipv6mr_interface; - }; -#endif /* !__USE_KERNEL_IPV6_DEFS */ - -#ifdef __USE_MISC -/* Multicast group request. */ -struct group_req - { - /* Interface index. */ - uint32_t gr_interface; - - /* Group address. */ - struct sockaddr_storage gr_group; - }; - -struct group_source_req - { - /* Interface index. */ - uint32_t gsr_interface; - - /* Group address. */ - struct sockaddr_storage gsr_group; - - /* Source address. */ - struct sockaddr_storage gsr_source; - }; - - -/* Full-state filter operations. */ -struct ip_msfilter - { - /* IP multicast address of group. */ - struct in_addr imsf_multiaddr; - - /* Local IP address of interface. */ - struct in_addr imsf_interface; - - /* Filter mode. */ - uint32_t imsf_fmode; - - /* Number of source addresses. */ - uint32_t imsf_numsrc; - /* Source addresses. */ - struct in_addr imsf_slist[1]; - }; - -#define IP_MSFILTER_SIZE(numsrc) (sizeof (struct ip_msfilter) \ - - sizeof (struct in_addr) \ - + (numsrc) * sizeof (struct in_addr)) - -struct group_filter - { - /* Interface index. */ - uint32_t gf_interface; - - /* Group address. */ - struct sockaddr_storage gf_group; - - /* Filter mode. */ - uint32_t gf_fmode; - - /* Number of source addresses. */ - uint32_t gf_numsrc; - /* Source addresses. */ - struct sockaddr_storage gf_slist[1]; -}; - -#define GROUP_FILTER_SIZE(numsrc) (sizeof (struct group_filter) \ - - sizeof (struct sockaddr_storage) \ - + ((numsrc) \ - * sizeof (struct sockaddr_storage))) -#endif - -/* 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 uint32_t ntohl (uint32_t __netlong) __THROW __attribute__ ((__const__)); -extern uint16_t ntohs (uint16_t __netshort) - __THROW __attribute__ ((__const__)); -extern uint32_t htonl (uint32_t __hostlong) - __THROW __attribute__ ((__const__)); -extern uint16_t htons (uint16_t __hostshort) - __THROW __attribute__ ((__const__)); - -#include <endian.h> - -/* Get machine dependent optimized versions of byte swapping functions. */ -#include <bits/byteswap.h> -#include <bits/uintn-identity.h> - -#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) __uint32_identity (x) -# define ntohs(x) __uint16_identity (x) -# define htonl(x) __uint32_identity (x) -# define htons(x) __uint16_identity (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 - -#ifdef __GNUC__ -# define IN6_IS_ADDR_UNSPECIFIED(a) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - __a->__in6_u.__u6_addr32[0] == 0 \ - && __a->__in6_u.__u6_addr32[1] == 0 \ - && __a->__in6_u.__u6_addr32[2] == 0 \ - && __a->__in6_u.__u6_addr32[3] == 0; })) - -# define IN6_IS_ADDR_LOOPBACK(a) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - __a->__in6_u.__u6_addr32[0] == 0 \ - && __a->__in6_u.__u6_addr32[1] == 0 \ - && __a->__in6_u.__u6_addr32[2] == 0 \ - && __a->__in6_u.__u6_addr32[3] == htonl (1); })) - -# define IN6_IS_ADDR_LINKLOCAL(a) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - (__a->__in6_u.__u6_addr32[0] & htonl (0xffc00000)) == htonl (0xfe800000); })) - -# define IN6_IS_ADDR_SITELOCAL(a) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - (__a->__in6_u.__u6_addr32[0] & htonl (0xffc00000)) == htonl (0xfec00000); })) - -# define IN6_IS_ADDR_V4MAPPED(a) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - __a->__in6_u.__u6_addr32[0] == 0 \ - && __a->__in6_u.__u6_addr32[1] == 0 \ - && __a->__in6_u.__u6_addr32[2] == htonl (0xffff); })) - -# define IN6_IS_ADDR_V4COMPAT(a) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - __a->__in6_u.__u6_addr32[0] == 0 \ - && __a->__in6_u.__u6_addr32[1] == 0 \ - && __a->__in6_u.__u6_addr32[2] == 0 \ - && ntohl (__a->__in6_u.__u6_addr32[3]) > 1; })) - -# define IN6_ARE_ADDR_EQUAL(a,b) \ - (__extension__ \ - ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ - const struct in6_addr *__b = (const struct in6_addr *) (b); \ - __a->__in6_u.__u6_addr32[0] == __b->__in6_u.__u6_addr32[0] \ - && __a->__in6_u.__u6_addr32[1] == __b->__in6_u.__u6_addr32[1] \ - && __a->__in6_u.__u6_addr32[2] == __b->__in6_u.__u6_addr32[2] \ - && __a->__in6_u.__u6_addr32[3] == __b->__in6_u.__u6_addr32[3]; })) -#else -# define IN6_IS_ADDR_UNSPECIFIED(a) \ - (((const uint32_t *) (a))[0] == 0 \ - && ((const uint32_t *) (a))[1] == 0 \ - && ((const uint32_t *) (a))[2] == 0 \ - && ((const uint32_t *) (a))[3] == 0) - -# define IN6_IS_ADDR_LOOPBACK(a) \ - (((const uint32_t *) (a))[0] == 0 \ - && ((const uint32_t *) (a))[1] == 0 \ - && ((const uint32_t *) (a))[2] == 0 \ - && ((const uint32_t *) (a))[3] == htonl (1)) - -# define IN6_IS_ADDR_LINKLOCAL(a) \ - ((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \ - == htonl (0xfe800000)) - -# define IN6_IS_ADDR_SITELOCAL(a) \ - ((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \ - == htonl (0xfec00000)) - -# define IN6_IS_ADDR_V4MAPPED(a) \ - ((((const uint32_t *) (a))[0] == 0) \ - && (((const uint32_t *) (a))[1] == 0) \ - && (((const uint32_t *) (a))[2] == htonl (0xffff))) - -# define IN6_IS_ADDR_V4COMPAT(a) \ - ((((const uint32_t *) (a))[0] == 0) \ - && (((const uint32_t *) (a))[1] == 0) \ - && (((const uint32_t *) (a))[2] == 0) \ - && (ntohl (((const uint32_t *) (a))[3]) > 1)) - -# define IN6_ARE_ADDR_EQUAL(a,b) \ - ((((const uint32_t *) (a))[0] == ((const uint32_t *) (b))[0]) \ - && (((const uint32_t *) (a))[1] == ((const uint32_t *) (b))[1]) \ - && (((const uint32_t *) (a))[2] == ((const uint32_t *) (b))[2]) \ - && (((const uint32_t *) (a))[3] == ((const uint32_t *) (b))[3])) -#endif - -#define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff) - -#ifdef __USE_MISC -/* Bind socket to a privileged IP port. */ -extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW; - -/* The IPv6 version of this function. */ -extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) - __THROW; -#endif - - -#define IN6_IS_ADDR_MC_NODELOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) \ - && ((((const uint8_t *) (a))[1] & 0xf) == 0x1)) - -#define IN6_IS_ADDR_MC_LINKLOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) \ - && ((((const uint8_t *) (a))[1] & 0xf) == 0x2)) - -#define IN6_IS_ADDR_MC_SITELOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) \ - && ((((const uint8_t *) (a))[1] & 0xf) == 0x5)) - -#define IN6_IS_ADDR_MC_ORGLOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) \ - && ((((const uint8_t *) (a))[1] & 0xf) == 0x8)) - -#define IN6_IS_ADDR_MC_GLOBAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) \ - && ((((const uint8_t *) (a))[1] & 0xf) == 0xe)) - - -#ifdef __USE_GNU -struct cmsghdr; /* Forward declaration. */ - -#if !__USE_KERNEL_IPV6_DEFS -/* IPv6 packet information. */ -struct in6_pktinfo - { - struct in6_addr ipi6_addr; /* src/dst IPv6 address */ - unsigned int ipi6_ifindex; /* send/recv interface index */ - }; - -/* IPv6 MTU information. */ -struct ip6_mtuinfo - { - struct sockaddr_in6 ip6m_addr; /* dst address including zone ID */ - uint32_t ip6m_mtu; /* path MTU in host byte order */ - }; -#endif /* !__USE_KERNEL_IPV6_DEFS */ - -/* Obsolete hop-by-hop and Destination Options Processing (RFC 2292). */ -extern int inet6_option_space (int __nbytes) - __THROW __attribute_deprecated__; -extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, - int __type) __THROW __attribute_deprecated__; -extern int inet6_option_append (struct cmsghdr *__cmsg, - const uint8_t *__typep, int __multx, - int __plusy) __THROW __attribute_deprecated__; -extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, - int __multx, int __plusy) - __THROW __attribute_deprecated__; -extern int inet6_option_next (const struct cmsghdr *__cmsg, - uint8_t **__tptrp) - __THROW __attribute_deprecated__; -extern int inet6_option_find (const struct cmsghdr *__cmsg, - uint8_t **__tptrp, int __type) - __THROW __attribute_deprecated__; - - -/* Hop-by-Hop and Destination Options Processing (RFC 3542). */ -extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __THROW; -extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset, - uint8_t __type, socklen_t __len, uint8_t __align, - void **__databufp) __THROW; -extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset) - __THROW; -extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val, - socklen_t __vallen) __THROW; -extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset, - uint8_t *__typep, socklen_t *__lenp, - void **__databufp) __THROW; -extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset, - uint8_t __type, socklen_t *__lenp, - void **__databufp) __THROW; -extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val, - socklen_t __vallen) __THROW; - - -/* Routing Header Option (RFC 3542). */ -extern socklen_t inet6_rth_space (int __type, int __segments) __THROW; -extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type, - int __segments) __THROW; -extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __THROW; -extern int inet6_rth_reverse (const void *__in, void *__out) __THROW; -extern int inet6_rth_segments (const void *__bp) __THROW; -extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index) - __THROW; - - -/* Multicast source filter support. */ - -/* Get IPv4 source filter. */ -extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr, - struct in_addr __group, uint32_t *__fmode, - uint32_t *__numsrc, struct in_addr *__slist) - __THROW; - -/* Set IPv4 source filter. */ -extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr, - struct in_addr __group, uint32_t __fmode, - uint32_t __numsrc, - const struct in_addr *__slist) - __THROW; - - -/* Get source filter. */ -extern int getsourcefilter (int __s, uint32_t __interface_addr, - const struct sockaddr *__group, - socklen_t __grouplen, uint32_t *__fmode, - uint32_t *__numsrc, - struct sockaddr_storage *__slist) __THROW; - -/* Set source filter. */ -extern int setsourcefilter (int __s, uint32_t __interface_addr, - const struct sockaddr *__group, - socklen_t __grouplen, uint32_t __fmode, - uint32_t __numsrc, - const struct sockaddr_storage *__slist) __THROW; -#endif /* use GNU */ - -__END_DECLS - -#endif /* netinet/in.h */ diff --git a/inet/netinet/ip6.h b/inet/netinet/ip6.h deleted file mode 100644 index dbced70502..0000000000 --- a/inet/netinet/ip6.h +++ /dev/null @@ -1,188 +0,0 @@ -/* Copyright (C) 1991-2017 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _NETINET_IP6_H -#define _NETINET_IP6_H 1 - -#include <inttypes.h> -#include <netinet/in.h> - -struct ip6_hdr - { - union - { - struct ip6_hdrctl - { - uint32_t ip6_un1_flow; /* 4 bits version, 8 bits TC, - 20 bits flow-ID */ - uint16_t ip6_un1_plen; /* payload length */ - uint8_t ip6_un1_nxt; /* next header */ - uint8_t ip6_un1_hlim; /* hop limit */ - } ip6_un1; - uint8_t ip6_un2_vfc; /* 4 bits version, top 4 bits tclass */ - } ip6_ctlun; - struct in6_addr ip6_src; /* source address */ - struct in6_addr ip6_dst; /* destination address */ - }; - -#define ip6_vfc ip6_ctlun.ip6_un2_vfc -#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow -#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen -#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt -#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim -#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim - -/* Generic extension header. */ -struct ip6_ext - { - uint8_t ip6e_nxt; /* next header. */ - uint8_t ip6e_len; /* length in units of 8 octets. */ - }; - -/* Hop-by-Hop options header. */ -struct ip6_hbh - { - uint8_t ip6h_nxt; /* next header. */ - uint8_t ip6h_len; /* length in units of 8 octets. */ - /* followed by options */ - }; - -/* Destination options header */ -struct ip6_dest - { - uint8_t ip6d_nxt; /* next header */ - uint8_t ip6d_len; /* length in units of 8 octets */ - /* followed by options */ - }; - -/* Routing header */ -struct ip6_rthdr - { - uint8_t ip6r_nxt; /* next header */ - uint8_t ip6r_len; /* length in units of 8 octets */ - uint8_t ip6r_type; /* routing type */ - uint8_t ip6r_segleft; /* segments left */ - /* followed by routing type specific data */ - }; - -/* Type 0 Routing header */ -struct ip6_rthdr0 - { - uint8_t ip6r0_nxt; /* next header */ - uint8_t ip6r0_len; /* length in units of 8 octets */ - uint8_t ip6r0_type; /* always zero */ - uint8_t ip6r0_segleft; /* segments left */ - uint8_t ip6r0_reserved; /* reserved field */ - uint8_t ip6r0_slmap[3]; /* strict/loose bit map */ - /* followed by up to 127 struct in6_addr */ - struct in6_addr ip6r0_addr[0]; - }; - -/* Fragment header */ -struct ip6_frag - { - uint8_t ip6f_nxt; /* next header */ - uint8_t ip6f_reserved; /* reserved field */ - uint16_t ip6f_offlg; /* offset, reserved, and flag */ - uint32_t ip6f_ident; /* identification */ - }; - -#if __BYTE_ORDER == __BIG_ENDIAN -# define IP6F_OFF_MASK 0xfff8 /* mask out offset from _offlg */ -# define IP6F_RESERVED_MASK 0x0006 /* reserved bits in ip6f_offlg */ -# define IP6F_MORE_FRAG 0x0001 /* more-fragments flag */ -#else /* __BYTE_ORDER == __LITTLE_ENDIAN */ -# define IP6F_OFF_MASK 0xf8ff /* mask out offset from _offlg */ -# define IP6F_RESERVED_MASK 0x0600 /* reserved bits in ip6f_offlg */ -# define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */ -#endif - -/* IPv6 options */ -struct ip6_opt - { - uint8_t ip6o_type; - uint8_t ip6o_len; - }; - -/* The high-order 3 bits of the option type define the behavior - * when processing an unknown option and whether or not the option - * content changes in flight. - */ -#define IP6OPT_TYPE(o) ((o) & 0xc0) -#define IP6OPT_TYPE_SKIP 0x00 -#define IP6OPT_TYPE_DISCARD 0x40 -#define IP6OPT_TYPE_FORCEICMP 0x80 -#define IP6OPT_TYPE_ICMP 0xc0 -#define IP6OPT_TYPE_MUTABLE 0x20 - -/* Special option types for padding. */ -#define IP6OPT_PAD1 0 -#define IP6OPT_PADN 1 - -#define IP6OPT_JUMBO 0xc2 -#define IP6OPT_NSAP_ADDR 0xc3 -#define IP6OPT_TUNNEL_LIMIT 0x04 -#define IP6OPT_ROUTER_ALERT 0x05 - -/* Jumbo Payload Option */ -struct ip6_opt_jumbo - { - uint8_t ip6oj_type; - uint8_t ip6oj_len; - uint8_t ip6oj_jumbo_len[4]; - }; -#define IP6OPT_JUMBO_LEN 6 - -/* NSAP Address Option */ -struct ip6_opt_nsap - { - uint8_t ip6on_type; - uint8_t ip6on_len; - uint8_t ip6on_src_nsap_len; - uint8_t ip6on_dst_nsap_len; - /* followed by source NSAP */ - /* followed by destination NSAP */ - }; - -/* Tunnel Limit Option */ -struct ip6_opt_tunnel - { - uint8_t ip6ot_type; - uint8_t ip6ot_len; - uint8_t ip6ot_encap_limit; - }; - -/* Router Alert Option */ -struct ip6_opt_router - { - uint8_t ip6or_type; - uint8_t ip6or_len; - uint8_t ip6or_value[2]; - }; - -/* Router alert values (in network byte order) */ -#if __BYTE_ORDER == __BIG_ENDIAN -# define IP6_ALERT_MLD 0x0000 -# define IP6_ALERT_RSVP 0x0001 -# define IP6_ALERT_AN 0x0002 -#else /* __BYTE_ORDER == __LITTLE_ENDIAN */ -# define IP6_ALERT_MLD 0x0000 -# define IP6_ALERT_RSVP 0x0100 -# define IP6_ALERT_AN 0x0200 -#endif - -#endif /* netinet/ip6.h */ |