1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2*de1e4e89SAndroid Build Coastguard Worker /* 3*de1e4e89SAndroid Build Coastguard Worker * INET An implementation of the TCP/IP protocol suite for the LINUX 4*de1e4e89SAndroid Build Coastguard Worker * operating system. INET is implemented using the BSD Socket 5*de1e4e89SAndroid Build Coastguard Worker * interface as the means of communication with the user level. 6*de1e4e89SAndroid Build Coastguard Worker * 7*de1e4e89SAndroid Build Coastguard Worker * Definitions of the Internet Protocol. 8*de1e4e89SAndroid Build Coastguard Worker * 9*de1e4e89SAndroid Build Coastguard Worker * Version: @(#)in.h 1.0.1 04/21/93 10*de1e4e89SAndroid Build Coastguard Worker * 11*de1e4e89SAndroid Build Coastguard Worker * Authors: Original taken from the GNU Project <netinet/in.h> file. 12*de1e4e89SAndroid Build Coastguard Worker * Fred N. van Kempen, <[email protected]> 13*de1e4e89SAndroid Build Coastguard Worker * 14*de1e4e89SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or 15*de1e4e89SAndroid Build Coastguard Worker * modify it under the terms of the GNU General Public License 16*de1e4e89SAndroid Build Coastguard Worker * as published by the Free Software Foundation; either version 17*de1e4e89SAndroid Build Coastguard Worker * 2 of the License, or (at your option) any later version. 18*de1e4e89SAndroid Build Coastguard Worker */ 19*de1e4e89SAndroid Build Coastguard Worker #ifndef _LINUX_IN_H 20*de1e4e89SAndroid Build Coastguard Worker #define _LINUX_IN_H 21*de1e4e89SAndroid Build Coastguard Worker 22*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h> 23*de1e4e89SAndroid Build Coastguard Worker #include <linux/libc-compat.h> 24*de1e4e89SAndroid Build Coastguard Worker #include <linux/socket.h> 25*de1e4e89SAndroid Build Coastguard Worker 26*de1e4e89SAndroid Build Coastguard Worker #if __UAPI_DEF_IN_IPPROTO 27*de1e4e89SAndroid Build Coastguard Worker /* Standard well-defined IP protocols. */ 28*de1e4e89SAndroid Build Coastguard Worker enum { 29*de1e4e89SAndroid Build Coastguard Worker IPPROTO_IP = 0, /* Dummy protocol for TCP */ 30*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_IP IPPROTO_IP 31*de1e4e89SAndroid Build Coastguard Worker IPPROTO_ICMP = 1, /* Internet Control Message Protocol */ 32*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_ICMP IPPROTO_ICMP 33*de1e4e89SAndroid Build Coastguard Worker IPPROTO_IGMP = 2, /* Internet Group Management Protocol */ 34*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_IGMP IPPROTO_IGMP 35*de1e4e89SAndroid Build Coastguard Worker IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94) */ 36*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_IPIP IPPROTO_IPIP 37*de1e4e89SAndroid Build Coastguard Worker IPPROTO_TCP = 6, /* Transmission Control Protocol */ 38*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_TCP IPPROTO_TCP 39*de1e4e89SAndroid Build Coastguard Worker IPPROTO_EGP = 8, /* Exterior Gateway Protocol */ 40*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_EGP IPPROTO_EGP 41*de1e4e89SAndroid Build Coastguard Worker IPPROTO_PUP = 12, /* PUP protocol */ 42*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_PUP IPPROTO_PUP 43*de1e4e89SAndroid Build Coastguard Worker IPPROTO_UDP = 17, /* User Datagram Protocol */ 44*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_UDP IPPROTO_UDP 45*de1e4e89SAndroid Build Coastguard Worker IPPROTO_IDP = 22, /* XNS IDP protocol */ 46*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_IDP IPPROTO_IDP 47*de1e4e89SAndroid Build Coastguard Worker IPPROTO_TP = 29, /* SO Transport Protocol Class 4 */ 48*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_TP IPPROTO_TP 49*de1e4e89SAndroid Build Coastguard Worker IPPROTO_DCCP = 33, /* Datagram Congestion Control Protocol */ 50*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_DCCP IPPROTO_DCCP 51*de1e4e89SAndroid Build Coastguard Worker IPPROTO_IPV6 = 41, /* IPv6-in-IPv4 tunnelling */ 52*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_IPV6 IPPROTO_IPV6 53*de1e4e89SAndroid Build Coastguard Worker IPPROTO_RSVP = 46, /* RSVP Protocol */ 54*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_RSVP IPPROTO_RSVP 55*de1e4e89SAndroid Build Coastguard Worker IPPROTO_GRE = 47, /* Cisco GRE tunnels (rfc 1701,1702) */ 56*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_GRE IPPROTO_GRE 57*de1e4e89SAndroid Build Coastguard Worker IPPROTO_ESP = 50, /* Encapsulation Security Payload protocol */ 58*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_ESP IPPROTO_ESP 59*de1e4e89SAndroid Build Coastguard Worker IPPROTO_AH = 51, /* Authentication Header protocol */ 60*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_AH IPPROTO_AH 61*de1e4e89SAndroid Build Coastguard Worker IPPROTO_MTP = 92, /* Multicast Transport Protocol */ 62*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_MTP IPPROTO_MTP 63*de1e4e89SAndroid Build Coastguard Worker IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET */ 64*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_BEETPH IPPROTO_BEETPH 65*de1e4e89SAndroid Build Coastguard Worker IPPROTO_ENCAP = 98, /* Encapsulation Header */ 66*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_ENCAP IPPROTO_ENCAP 67*de1e4e89SAndroid Build Coastguard Worker IPPROTO_PIM = 103, /* Protocol Independent Multicast */ 68*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_PIM IPPROTO_PIM 69*de1e4e89SAndroid Build Coastguard Worker IPPROTO_COMP = 108, /* Compression Header Protocol */ 70*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_COMP IPPROTO_COMP 71*de1e4e89SAndroid Build Coastguard Worker IPPROTO_SCTP = 132, /* Stream Control Transport Protocol */ 72*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_SCTP IPPROTO_SCTP 73*de1e4e89SAndroid Build Coastguard Worker IPPROTO_UDPLITE = 136, /* UDP-Lite (RFC 3828) */ 74*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_UDPLITE IPPROTO_UDPLITE 75*de1e4e89SAndroid Build Coastguard Worker IPPROTO_MPLS = 137, /* MPLS in IP (RFC 4023) */ 76*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_MPLS IPPROTO_MPLS 77*de1e4e89SAndroid Build Coastguard Worker IPPROTO_RAW = 255, /* Raw IP packets */ 78*de1e4e89SAndroid Build Coastguard Worker #define IPPROTO_RAW IPPROTO_RAW 79*de1e4e89SAndroid Build Coastguard Worker IPPROTO_MAX 80*de1e4e89SAndroid Build Coastguard Worker }; 81*de1e4e89SAndroid Build Coastguard Worker #endif 82*de1e4e89SAndroid Build Coastguard Worker 83*de1e4e89SAndroid Build Coastguard Worker #if __UAPI_DEF_IN_ADDR 84*de1e4e89SAndroid Build Coastguard Worker /* Internet address. */ 85*de1e4e89SAndroid Build Coastguard Worker struct in_addr { 86*de1e4e89SAndroid Build Coastguard Worker __be32 s_addr; 87*de1e4e89SAndroid Build Coastguard Worker }; 88*de1e4e89SAndroid Build Coastguard Worker #endif 89*de1e4e89SAndroid Build Coastguard Worker 90*de1e4e89SAndroid Build Coastguard Worker #define IP_TOS 1 91*de1e4e89SAndroid Build Coastguard Worker #define IP_TTL 2 92*de1e4e89SAndroid Build Coastguard Worker #define IP_HDRINCL 3 93*de1e4e89SAndroid Build Coastguard Worker #define IP_OPTIONS 4 94*de1e4e89SAndroid Build Coastguard Worker #define IP_ROUTER_ALERT 5 95*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVOPTS 6 96*de1e4e89SAndroid Build Coastguard Worker #define IP_RETOPTS 7 97*de1e4e89SAndroid Build Coastguard Worker #define IP_PKTINFO 8 98*de1e4e89SAndroid Build Coastguard Worker #define IP_PKTOPTIONS 9 99*de1e4e89SAndroid Build Coastguard Worker #define IP_MTU_DISCOVER 10 100*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVERR 11 101*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVTTL 12 102*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVTOS 13 103*de1e4e89SAndroid Build Coastguard Worker #define IP_MTU 14 104*de1e4e89SAndroid Build Coastguard Worker #define IP_FREEBIND 15 105*de1e4e89SAndroid Build Coastguard Worker #define IP_IPSEC_POLICY 16 106*de1e4e89SAndroid Build Coastguard Worker #define IP_XFRM_POLICY 17 107*de1e4e89SAndroid Build Coastguard Worker #define IP_PASSSEC 18 108*de1e4e89SAndroid Build Coastguard Worker #define IP_TRANSPARENT 19 109*de1e4e89SAndroid Build Coastguard Worker 110*de1e4e89SAndroid Build Coastguard Worker /* BSD compatibility */ 111*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVRETOPTS IP_RETOPTS 112*de1e4e89SAndroid Build Coastguard Worker 113*de1e4e89SAndroid Build Coastguard Worker /* TProxy original addresses */ 114*de1e4e89SAndroid Build Coastguard Worker #define IP_ORIGDSTADDR 20 115*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVORIGDSTADDR IP_ORIGDSTADDR 116*de1e4e89SAndroid Build Coastguard Worker 117*de1e4e89SAndroid Build Coastguard Worker #define IP_MINTTL 21 118*de1e4e89SAndroid Build Coastguard Worker #define IP_NODEFRAG 22 119*de1e4e89SAndroid Build Coastguard Worker #define IP_CHECKSUM 23 120*de1e4e89SAndroid Build Coastguard Worker #define IP_BIND_ADDRESS_NO_PORT 24 121*de1e4e89SAndroid Build Coastguard Worker #define IP_RECVFRAGSIZE 25 122*de1e4e89SAndroid Build Coastguard Worker 123*de1e4e89SAndroid Build Coastguard Worker /* IP_MTU_DISCOVER values */ 124*de1e4e89SAndroid Build Coastguard Worker #define IP_PMTUDISC_DONT 0 /* Never send DF frames */ 125*de1e4e89SAndroid Build Coastguard Worker #define IP_PMTUDISC_WANT 1 /* Use per route hints */ 126*de1e4e89SAndroid Build Coastguard Worker #define IP_PMTUDISC_DO 2 /* Always DF */ 127*de1e4e89SAndroid Build Coastguard Worker #define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu */ 128*de1e4e89SAndroid Build Coastguard Worker /* Always use interface mtu (ignores dst pmtu) but don't set DF flag. 129*de1e4e89SAndroid Build Coastguard Worker * Also incoming ICMP frag_needed notifications will be ignored on 130*de1e4e89SAndroid Build Coastguard Worker * this socket to prevent accepting spoofed ones. 131*de1e4e89SAndroid Build Coastguard Worker */ 132*de1e4e89SAndroid Build Coastguard Worker #define IP_PMTUDISC_INTERFACE 4 133*de1e4e89SAndroid Build Coastguard Worker /* weaker version of IP_PMTUDISC_INTERFACE, which allos packets to get 134*de1e4e89SAndroid Build Coastguard Worker * fragmented if they exeed the interface mtu 135*de1e4e89SAndroid Build Coastguard Worker */ 136*de1e4e89SAndroid Build Coastguard Worker #define IP_PMTUDISC_OMIT 5 137*de1e4e89SAndroid Build Coastguard Worker 138*de1e4e89SAndroid Build Coastguard Worker #define IP_MULTICAST_IF 32 139*de1e4e89SAndroid Build Coastguard Worker #define IP_MULTICAST_TTL 33 140*de1e4e89SAndroid Build Coastguard Worker #define IP_MULTICAST_LOOP 34 141*de1e4e89SAndroid Build Coastguard Worker #define IP_ADD_MEMBERSHIP 35 142*de1e4e89SAndroid Build Coastguard Worker #define IP_DROP_MEMBERSHIP 36 143*de1e4e89SAndroid Build Coastguard Worker #define IP_UNBLOCK_SOURCE 37 144*de1e4e89SAndroid Build Coastguard Worker #define IP_BLOCK_SOURCE 38 145*de1e4e89SAndroid Build Coastguard Worker #define IP_ADD_SOURCE_MEMBERSHIP 39 146*de1e4e89SAndroid Build Coastguard Worker #define IP_DROP_SOURCE_MEMBERSHIP 40 147*de1e4e89SAndroid Build Coastguard Worker #define IP_MSFILTER 41 148*de1e4e89SAndroid Build Coastguard Worker #define MCAST_JOIN_GROUP 42 149*de1e4e89SAndroid Build Coastguard Worker #define MCAST_BLOCK_SOURCE 43 150*de1e4e89SAndroid Build Coastguard Worker #define MCAST_UNBLOCK_SOURCE 44 151*de1e4e89SAndroid Build Coastguard Worker #define MCAST_LEAVE_GROUP 45 152*de1e4e89SAndroid Build Coastguard Worker #define MCAST_JOIN_SOURCE_GROUP 46 153*de1e4e89SAndroid Build Coastguard Worker #define MCAST_LEAVE_SOURCE_GROUP 47 154*de1e4e89SAndroid Build Coastguard Worker #define MCAST_MSFILTER 48 155*de1e4e89SAndroid Build Coastguard Worker #define IP_MULTICAST_ALL 49 156*de1e4e89SAndroid Build Coastguard Worker #define IP_UNICAST_IF 50 157*de1e4e89SAndroid Build Coastguard Worker 158*de1e4e89SAndroid Build Coastguard Worker #define MCAST_EXCLUDE 0 159*de1e4e89SAndroid Build Coastguard Worker #define MCAST_INCLUDE 1 160*de1e4e89SAndroid Build Coastguard Worker 161*de1e4e89SAndroid Build Coastguard Worker /* These need to appear somewhere around here */ 162*de1e4e89SAndroid Build Coastguard Worker #define IP_DEFAULT_MULTICAST_TTL 1 163*de1e4e89SAndroid Build Coastguard Worker #define IP_DEFAULT_MULTICAST_LOOP 1 164*de1e4e89SAndroid Build Coastguard Worker 165*de1e4e89SAndroid Build Coastguard Worker /* Request struct for multicast socket ops */ 166*de1e4e89SAndroid Build Coastguard Worker 167*de1e4e89SAndroid Build Coastguard Worker #if __UAPI_DEF_IP_MREQ 168*de1e4e89SAndroid Build Coastguard Worker struct ip_mreq { 169*de1e4e89SAndroid Build Coastguard Worker struct in_addr imr_multiaddr; /* IP multicast address of group */ 170*de1e4e89SAndroid Build Coastguard Worker struct in_addr imr_interface; /* local IP address of interface */ 171*de1e4e89SAndroid Build Coastguard Worker }; 172*de1e4e89SAndroid Build Coastguard Worker 173*de1e4e89SAndroid Build Coastguard Worker struct ip_mreqn { 174*de1e4e89SAndroid Build Coastguard Worker struct in_addr imr_multiaddr; /* IP multicast address of group */ 175*de1e4e89SAndroid Build Coastguard Worker struct in_addr imr_address; /* local IP address of interface */ 176*de1e4e89SAndroid Build Coastguard Worker int imr_ifindex; /* Interface index */ 177*de1e4e89SAndroid Build Coastguard Worker }; 178*de1e4e89SAndroid Build Coastguard Worker 179*de1e4e89SAndroid Build Coastguard Worker struct ip_mreq_source { 180*de1e4e89SAndroid Build Coastguard Worker __be32 imr_multiaddr; 181*de1e4e89SAndroid Build Coastguard Worker __be32 imr_interface; 182*de1e4e89SAndroid Build Coastguard Worker __be32 imr_sourceaddr; 183*de1e4e89SAndroid Build Coastguard Worker }; 184*de1e4e89SAndroid Build Coastguard Worker 185*de1e4e89SAndroid Build Coastguard Worker struct ip_msfilter { 186*de1e4e89SAndroid Build Coastguard Worker __be32 imsf_multiaddr; 187*de1e4e89SAndroid Build Coastguard Worker __be32 imsf_interface; 188*de1e4e89SAndroid Build Coastguard Worker __u32 imsf_fmode; 189*de1e4e89SAndroid Build Coastguard Worker __u32 imsf_numsrc; 190*de1e4e89SAndroid Build Coastguard Worker __be32 imsf_slist[1]; 191*de1e4e89SAndroid Build Coastguard Worker }; 192*de1e4e89SAndroid Build Coastguard Worker 193*de1e4e89SAndroid Build Coastguard Worker #define IP_MSFILTER_SIZE(numsrc) \ 194*de1e4e89SAndroid Build Coastguard Worker (sizeof(struct ip_msfilter) - sizeof(__u32) \ 195*de1e4e89SAndroid Build Coastguard Worker + (numsrc) * sizeof(__u32)) 196*de1e4e89SAndroid Build Coastguard Worker 197*de1e4e89SAndroid Build Coastguard Worker struct group_req { 198*de1e4e89SAndroid Build Coastguard Worker __u32 gr_interface; /* interface index */ 199*de1e4e89SAndroid Build Coastguard Worker struct __kernel_sockaddr_storage gr_group; /* group address */ 200*de1e4e89SAndroid Build Coastguard Worker }; 201*de1e4e89SAndroid Build Coastguard Worker 202*de1e4e89SAndroid Build Coastguard Worker struct group_source_req { 203*de1e4e89SAndroid Build Coastguard Worker __u32 gsr_interface; /* interface index */ 204*de1e4e89SAndroid Build Coastguard Worker struct __kernel_sockaddr_storage gsr_group; /* group address */ 205*de1e4e89SAndroid Build Coastguard Worker struct __kernel_sockaddr_storage gsr_source; /* source address */ 206*de1e4e89SAndroid Build Coastguard Worker }; 207*de1e4e89SAndroid Build Coastguard Worker 208*de1e4e89SAndroid Build Coastguard Worker struct group_filter { 209*de1e4e89SAndroid Build Coastguard Worker __u32 gf_interface; /* interface index */ 210*de1e4e89SAndroid Build Coastguard Worker struct __kernel_sockaddr_storage gf_group; /* multicast address */ 211*de1e4e89SAndroid Build Coastguard Worker __u32 gf_fmode; /* filter mode */ 212*de1e4e89SAndroid Build Coastguard Worker __u32 gf_numsrc; /* number of sources */ 213*de1e4e89SAndroid Build Coastguard Worker struct __kernel_sockaddr_storage gf_slist[1]; /* interface index */ 214*de1e4e89SAndroid Build Coastguard Worker }; 215*de1e4e89SAndroid Build Coastguard Worker 216*de1e4e89SAndroid Build Coastguard Worker #define GROUP_FILTER_SIZE(numsrc) \ 217*de1e4e89SAndroid Build Coastguard Worker (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) \ 218*de1e4e89SAndroid Build Coastguard Worker + (numsrc) * sizeof(struct __kernel_sockaddr_storage)) 219*de1e4e89SAndroid Build Coastguard Worker #endif 220*de1e4e89SAndroid Build Coastguard Worker 221*de1e4e89SAndroid Build Coastguard Worker #if __UAPI_DEF_IN_PKTINFO 222*de1e4e89SAndroid Build Coastguard Worker struct in_pktinfo { 223*de1e4e89SAndroid Build Coastguard Worker int ipi_ifindex; 224*de1e4e89SAndroid Build Coastguard Worker struct in_addr ipi_spec_dst; 225*de1e4e89SAndroid Build Coastguard Worker struct in_addr ipi_addr; 226*de1e4e89SAndroid Build Coastguard Worker }; 227*de1e4e89SAndroid Build Coastguard Worker #endif 228*de1e4e89SAndroid Build Coastguard Worker 229*de1e4e89SAndroid Build Coastguard Worker /* Structure describing an Internet (IP) socket address. */ 230*de1e4e89SAndroid Build Coastguard Worker #if __UAPI_DEF_SOCKADDR_IN 231*de1e4e89SAndroid Build Coastguard Worker #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ 232*de1e4e89SAndroid Build Coastguard Worker struct sockaddr_in { 233*de1e4e89SAndroid Build Coastguard Worker __kernel_sa_family_t sin_family; /* Address family */ 234*de1e4e89SAndroid Build Coastguard Worker __be16 sin_port; /* Port number */ 235*de1e4e89SAndroid Build Coastguard Worker struct in_addr sin_addr; /* Internet address */ 236*de1e4e89SAndroid Build Coastguard Worker 237*de1e4e89SAndroid Build Coastguard Worker /* Pad to size of `struct sockaddr'. */ 238*de1e4e89SAndroid Build Coastguard Worker unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) - 239*de1e4e89SAndroid Build Coastguard Worker sizeof(unsigned short int) - sizeof(struct in_addr)]; 240*de1e4e89SAndroid Build Coastguard Worker }; 241*de1e4e89SAndroid Build Coastguard Worker #define sin_zero __pad /* for BSD UNIX comp. -FvK */ 242*de1e4e89SAndroid Build Coastguard Worker #endif 243*de1e4e89SAndroid Build Coastguard Worker 244*de1e4e89SAndroid Build Coastguard Worker #if __UAPI_DEF_IN_CLASS 245*de1e4e89SAndroid Build Coastguard Worker /* 246*de1e4e89SAndroid Build Coastguard Worker * Definitions of the bits in an Internet address integer. 247*de1e4e89SAndroid Build Coastguard Worker * On subnets, host and network parts are found according 248*de1e4e89SAndroid Build Coastguard Worker * to the subnet mask, not these masks. 249*de1e4e89SAndroid Build Coastguard Worker */ 250*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0) 251*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSA_NET 0xff000000 252*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSA_NSHIFT 24 253*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) 254*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSA_MAX 128 255*de1e4e89SAndroid Build Coastguard Worker 256*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000) 257*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSB_NET 0xffff0000 258*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSB_NSHIFT 16 259*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) 260*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSB_MAX 65536 261*de1e4e89SAndroid Build Coastguard Worker 262*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000) 263*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSC_NET 0xffffff00 264*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSC_NSHIFT 8 265*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) 266*de1e4e89SAndroid Build Coastguard Worker 267*de1e4e89SAndroid Build Coastguard Worker #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000) 268*de1e4e89SAndroid Build Coastguard Worker #define IN_MULTICAST(a) IN_CLASSD(a) 269*de1e4e89SAndroid Build Coastguard Worker #define IN_MULTICAST_NET 0xF0000000 270*de1e4e89SAndroid Build Coastguard Worker 271*de1e4e89SAndroid Build Coastguard Worker #define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000) 272*de1e4e89SAndroid Build Coastguard Worker #define IN_BADCLASS(a) IN_EXPERIMENTAL((a)) 273*de1e4e89SAndroid Build Coastguard Worker 274*de1e4e89SAndroid Build Coastguard Worker /* Address to accept any incoming messages. */ 275*de1e4e89SAndroid Build Coastguard Worker #define INADDR_ANY ((unsigned long int) 0x00000000) 276*de1e4e89SAndroid Build Coastguard Worker 277*de1e4e89SAndroid Build Coastguard Worker /* Address to send to all hosts. */ 278*de1e4e89SAndroid Build Coastguard Worker #define INADDR_BROADCAST ((unsigned long int) 0xffffffff) 279*de1e4e89SAndroid Build Coastguard Worker 280*de1e4e89SAndroid Build Coastguard Worker /* Address indicating an error return. */ 281*de1e4e89SAndroid Build Coastguard Worker #define INADDR_NONE ((unsigned long int) 0xffffffff) 282*de1e4e89SAndroid Build Coastguard Worker 283*de1e4e89SAndroid Build Coastguard Worker /* Network number for local host loopback. */ 284*de1e4e89SAndroid Build Coastguard Worker #define IN_LOOPBACKNET 127 285*de1e4e89SAndroid Build Coastguard Worker 286*de1e4e89SAndroid Build Coastguard Worker /* Address to loopback in software to local host. */ 287*de1e4e89SAndroid Build Coastguard Worker #define INADDR_LOOPBACK 0x7f000001 /* 127.0.0.1 */ 288*de1e4e89SAndroid Build Coastguard Worker #define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000) 289*de1e4e89SAndroid Build Coastguard Worker 290*de1e4e89SAndroid Build Coastguard Worker /* Defines for Multicast INADDR */ 291*de1e4e89SAndroid Build Coastguard Worker #define INADDR_UNSPEC_GROUP 0xe0000000U /* 224.0.0.0 */ 292*de1e4e89SAndroid Build Coastguard Worker #define INADDR_ALLHOSTS_GROUP 0xe0000001U /* 224.0.0.1 */ 293*de1e4e89SAndroid Build Coastguard Worker #define INADDR_ALLRTRS_GROUP 0xe0000002U /* 224.0.0.2 */ 294*de1e4e89SAndroid Build Coastguard Worker #define INADDR_MAX_LOCAL_GROUP 0xe00000ffU /* 224.0.0.255 */ 295*de1e4e89SAndroid Build Coastguard Worker #endif 296*de1e4e89SAndroid Build Coastguard Worker 297*de1e4e89SAndroid Build Coastguard Worker /* <asm/byteorder.h> contains the htonl type stuff.. */ 298*de1e4e89SAndroid Build Coastguard Worker #include <asm/byteorder.h> 299*de1e4e89SAndroid Build Coastguard Worker 300*de1e4e89SAndroid Build Coastguard Worker 301*de1e4e89SAndroid Build Coastguard Worker #endif /* _LINUX_IN_H */ 302