1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2607ca46eSDavid Howells /* 3607ca46eSDavid Howells * INET An implementation of the TCP/IP protocol suite for the LINUX 4607ca46eSDavid Howells * operating system. INET is implemented using the BSD Socket 5607ca46eSDavid Howells * interface as the means of communication with the user level. 6607ca46eSDavid Howells * 7607ca46eSDavid Howells * Definitions of the Internet Protocol. 8607ca46eSDavid Howells * 9607ca46eSDavid Howells * Version: @(#)in.h 1.0.1 04/21/93 10607ca46eSDavid Howells * 11607ca46eSDavid Howells * Authors: Original taken from the GNU Project <netinet/in.h> file. 12607ca46eSDavid Howells * Fred N. van Kempen, <[email protected]> 13607ca46eSDavid Howells * 14607ca46eSDavid Howells * This program is free software; you can redistribute it and/or 15607ca46eSDavid Howells * modify it under the terms of the GNU General Public License 16607ca46eSDavid Howells * as published by the Free Software Foundation; either version 17607ca46eSDavid Howells * 2 of the License, or (at your option) any later version. 18607ca46eSDavid Howells */ 19607ca46eSDavid Howells #ifndef _UAPI_LINUX_IN_H 20607ca46eSDavid Howells #define _UAPI_LINUX_IN_H 21607ca46eSDavid Howells 22607ca46eSDavid Howells #include <linux/types.h> 23aec1dc97SAndrii Nakryiko #include <linux/stddef.h> 24279c6c7fSStephen Hemminger #include <linux/libc-compat.h> 25607ca46eSDavid Howells #include <linux/socket.h> 26607ca46eSDavid Howells 27279c6c7fSStephen Hemminger #if __UAPI_DEF_IN_IPPROTO 28607ca46eSDavid Howells /* Standard well-defined IP protocols. */ 29607ca46eSDavid Howells enum { 30607ca46eSDavid Howells IPPROTO_IP = 0, /* Dummy protocol for TCP */ 31cfd280c9SCarlos O'Donell #define IPPROTO_IP IPPROTO_IP 32607ca46eSDavid Howells IPPROTO_ICMP = 1, /* Internet Control Message Protocol */ 33cfd280c9SCarlos O'Donell #define IPPROTO_ICMP IPPROTO_ICMP 34607ca46eSDavid Howells IPPROTO_IGMP = 2, /* Internet Group Management Protocol */ 35cfd280c9SCarlos O'Donell #define IPPROTO_IGMP IPPROTO_IGMP 36607ca46eSDavid Howells IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94) */ 37cfd280c9SCarlos O'Donell #define IPPROTO_IPIP IPPROTO_IPIP 38607ca46eSDavid Howells IPPROTO_TCP = 6, /* Transmission Control Protocol */ 39cfd280c9SCarlos O'Donell #define IPPROTO_TCP IPPROTO_TCP 40607ca46eSDavid Howells IPPROTO_EGP = 8, /* Exterior Gateway Protocol */ 41cfd280c9SCarlos O'Donell #define IPPROTO_EGP IPPROTO_EGP 42607ca46eSDavid Howells IPPROTO_PUP = 12, /* PUP protocol */ 43cfd280c9SCarlos O'Donell #define IPPROTO_PUP IPPROTO_PUP 44607ca46eSDavid Howells IPPROTO_UDP = 17, /* User Datagram Protocol */ 45cfd280c9SCarlos O'Donell #define IPPROTO_UDP IPPROTO_UDP 46607ca46eSDavid Howells IPPROTO_IDP = 22, /* XNS IDP protocol */ 47cfd280c9SCarlos O'Donell #define IPPROTO_IDP IPPROTO_IDP 48cfd280c9SCarlos O'Donell IPPROTO_TP = 29, /* SO Transport Protocol Class 4 */ 49cfd280c9SCarlos O'Donell #define IPPROTO_TP IPPROTO_TP 50607ca46eSDavid Howells IPPROTO_DCCP = 33, /* Datagram Congestion Control Protocol */ 51cfd280c9SCarlos O'Donell #define IPPROTO_DCCP IPPROTO_DCCP 52607ca46eSDavid Howells IPPROTO_IPV6 = 41, /* IPv6-in-IPv4 tunnelling */ 53cfd280c9SCarlos O'Donell #define IPPROTO_IPV6 IPPROTO_IPV6 54cfd280c9SCarlos O'Donell IPPROTO_RSVP = 46, /* RSVP Protocol */ 55cfd280c9SCarlos O'Donell #define IPPROTO_RSVP IPPROTO_RSVP 56cfd280c9SCarlos O'Donell IPPROTO_GRE = 47, /* Cisco GRE tunnels (rfc 1701,1702) */ 57cfd280c9SCarlos O'Donell #define IPPROTO_GRE IPPROTO_GRE 58607ca46eSDavid Howells IPPROTO_ESP = 50, /* Encapsulation Security Payload protocol */ 59cfd280c9SCarlos O'Donell #define IPPROTO_ESP IPPROTO_ESP 60607ca46eSDavid Howells IPPROTO_AH = 51, /* Authentication Header protocol */ 61cfd280c9SCarlos O'Donell #define IPPROTO_AH IPPROTO_AH 62cfd280c9SCarlos O'Donell IPPROTO_MTP = 92, /* Multicast Transport Protocol */ 63cfd280c9SCarlos O'Donell #define IPPROTO_MTP IPPROTO_MTP 64607ca46eSDavid Howells IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET */ 65cfd280c9SCarlos O'Donell #define IPPROTO_BEETPH IPPROTO_BEETPH 66cfd280c9SCarlos O'Donell IPPROTO_ENCAP = 98, /* Encapsulation Header */ 67cfd280c9SCarlos O'Donell #define IPPROTO_ENCAP IPPROTO_ENCAP 68607ca46eSDavid Howells IPPROTO_PIM = 103, /* Protocol Independent Multicast */ 69cfd280c9SCarlos O'Donell #define IPPROTO_PIM IPPROTO_PIM 70cfd280c9SCarlos O'Donell IPPROTO_COMP = 108, /* Compression Header Protocol */ 71cfd280c9SCarlos O'Donell #define IPPROTO_COMP IPPROTO_COMP 7265b32f80SWojciech Drewek IPPROTO_L2TP = 115, /* Layer 2 Tunnelling Protocol */ 7365b32f80SWojciech Drewek #define IPPROTO_L2TP IPPROTO_L2TP 74607ca46eSDavid Howells IPPROTO_SCTP = 132, /* Stream Control Transport Protocol */ 75cfd280c9SCarlos O'Donell #define IPPROTO_SCTP IPPROTO_SCTP 76607ca46eSDavid Howells IPPROTO_UDPLITE = 136, /* UDP-Lite (RFC 3828) */ 77cfd280c9SCarlos O'Donell #define IPPROTO_UDPLITE IPPROTO_UDPLITE 78730fc437STom Herbert IPPROTO_MPLS = 137, /* MPLS in IP (RFC 4023) */ 79730fc437STom Herbert #define IPPROTO_MPLS IPPROTO_MPLS 8026776253SPaolo Lungaroni IPPROTO_ETHERNET = 143, /* Ethernet-within-IPv6 Encapsulation */ 8126776253SPaolo Lungaroni #define IPPROTO_ETHERNET IPPROTO_ETHERNET 82*64e84450SChristian Hopps IPPROTO_AGGFRAG = 144, /* AGGFRAG in ESP (RFC 9347) */ 83*64e84450SChristian Hopps #define IPPROTO_AGGFRAG IPPROTO_AGGFRAG 84607ca46eSDavid Howells IPPROTO_RAW = 255, /* Raw IP packets */ 85cfd280c9SCarlos O'Donell #define IPPROTO_RAW IPPROTO_RAW 86d25a92ccSD. Wythe IPPROTO_SMC = 256, /* Shared Memory Communications */ 87d25a92ccSD. Wythe #define IPPROTO_SMC IPPROTO_SMC 88faf391c3SMat Martineau IPPROTO_MPTCP = 262, /* Multipath TCP connection */ 89faf391c3SMat Martineau #define IPPROTO_MPTCP IPPROTO_MPTCP 90607ca46eSDavid Howells IPPROTO_MAX 91607ca46eSDavid Howells }; 92279c6c7fSStephen Hemminger #endif 93607ca46eSDavid Howells 94279c6c7fSStephen Hemminger #if __UAPI_DEF_IN_ADDR 95607ca46eSDavid Howells /* Internet address. */ 96607ca46eSDavid Howells struct in_addr { 97607ca46eSDavid Howells __be32 s_addr; 98607ca46eSDavid Howells }; 99279c6c7fSStephen Hemminger #endif 100607ca46eSDavid Howells 101607ca46eSDavid Howells #define IP_TOS 1 102607ca46eSDavid Howells #define IP_TTL 2 103607ca46eSDavid Howells #define IP_HDRINCL 3 104607ca46eSDavid Howells #define IP_OPTIONS 4 105607ca46eSDavid Howells #define IP_ROUTER_ALERT 5 106607ca46eSDavid Howells #define IP_RECVOPTS 6 107607ca46eSDavid Howells #define IP_RETOPTS 7 108607ca46eSDavid Howells #define IP_PKTINFO 8 109607ca46eSDavid Howells #define IP_PKTOPTIONS 9 110607ca46eSDavid Howells #define IP_MTU_DISCOVER 10 111607ca46eSDavid Howells #define IP_RECVERR 11 112607ca46eSDavid Howells #define IP_RECVTTL 12 113607ca46eSDavid Howells #define IP_RECVTOS 13 114607ca46eSDavid Howells #define IP_MTU 14 115607ca46eSDavid Howells #define IP_FREEBIND 15 116607ca46eSDavid Howells #define IP_IPSEC_POLICY 16 117607ca46eSDavid Howells #define IP_XFRM_POLICY 17 118607ca46eSDavid Howells #define IP_PASSSEC 18 119607ca46eSDavid Howells #define IP_TRANSPARENT 19 120607ca46eSDavid Howells 121607ca46eSDavid Howells /* BSD compatibility */ 122607ca46eSDavid Howells #define IP_RECVRETOPTS IP_RETOPTS 123607ca46eSDavid Howells 124607ca46eSDavid Howells /* TProxy original addresses */ 125607ca46eSDavid Howells #define IP_ORIGDSTADDR 20 126607ca46eSDavid Howells #define IP_RECVORIGDSTADDR IP_ORIGDSTADDR 127607ca46eSDavid Howells 128607ca46eSDavid Howells #define IP_MINTTL 21 129607ca46eSDavid Howells #define IP_NODEFRAG 22 130ad6f939aSTom Herbert #define IP_CHECKSUM 23 13190c337daSEric Dumazet #define IP_BIND_ADDRESS_NO_PORT 24 13270ecc248SWillem de Bruijn #define IP_RECVFRAGSIZE 25 133eba75c58SWillem de Bruijn #define IP_RECVERR_RFC4884 26 134607ca46eSDavid Howells 135607ca46eSDavid Howells /* IP_MTU_DISCOVER values */ 136607ca46eSDavid Howells #define IP_PMTUDISC_DONT 0 /* Never send DF frames */ 137607ca46eSDavid Howells #define IP_PMTUDISC_WANT 1 /* Use per route hints */ 138607ca46eSDavid Howells #define IP_PMTUDISC_DO 2 /* Always DF */ 139607ca46eSDavid Howells #define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu */ 140482fc609SHannes Frederic Sowa /* Always use interface mtu (ignores dst pmtu) but don't set DF flag. 141482fc609SHannes Frederic Sowa * Also incoming ICMP frag_needed notifications will be ignored on 142482fc609SHannes Frederic Sowa * this socket to prevent accepting spoofed ones. 143482fc609SHannes Frederic Sowa */ 144482fc609SHannes Frederic Sowa #define IP_PMTUDISC_INTERFACE 4 145645f0897SMiaohe Lin /* weaker version of IP_PMTUDISC_INTERFACE, which allows packets to get 14670d0bb45SSimon Horman * fragmented if they exceed the interface mtu 1471b346576SHannes Frederic Sowa */ 1481b346576SHannes Frederic Sowa #define IP_PMTUDISC_OMIT 5 149607ca46eSDavid Howells 150607ca46eSDavid Howells #define IP_MULTICAST_IF 32 151607ca46eSDavid Howells #define IP_MULTICAST_TTL 33 152607ca46eSDavid Howells #define IP_MULTICAST_LOOP 34 153607ca46eSDavid Howells #define IP_ADD_MEMBERSHIP 35 154607ca46eSDavid Howells #define IP_DROP_MEMBERSHIP 36 155607ca46eSDavid Howells #define IP_UNBLOCK_SOURCE 37 156607ca46eSDavid Howells #define IP_BLOCK_SOURCE 38 157607ca46eSDavid Howells #define IP_ADD_SOURCE_MEMBERSHIP 39 158607ca46eSDavid Howells #define IP_DROP_SOURCE_MEMBERSHIP 40 159607ca46eSDavid Howells #define IP_MSFILTER 41 160607ca46eSDavid Howells #define MCAST_JOIN_GROUP 42 161607ca46eSDavid Howells #define MCAST_BLOCK_SOURCE 43 162607ca46eSDavid Howells #define MCAST_UNBLOCK_SOURCE 44 163607ca46eSDavid Howells #define MCAST_LEAVE_GROUP 45 164607ca46eSDavid Howells #define MCAST_JOIN_SOURCE_GROUP 46 165607ca46eSDavid Howells #define MCAST_LEAVE_SOURCE_GROUP 47 166607ca46eSDavid Howells #define MCAST_MSFILTER 48 167607ca46eSDavid Howells #define IP_MULTICAST_ALL 49 168607ca46eSDavid Howells #define IP_UNICAST_IF 50 16991d0b78cSJakub Sitnicki #define IP_LOCAL_PORT_RANGE 51 1703632679dSNicolas Dichtel #define IP_PROTOCOL 52 171607ca46eSDavid Howells 172607ca46eSDavid Howells #define MCAST_EXCLUDE 0 173607ca46eSDavid Howells #define MCAST_INCLUDE 1 174607ca46eSDavid Howells 175607ca46eSDavid Howells /* These need to appear somewhere around here */ 176607ca46eSDavid Howells #define IP_DEFAULT_MULTICAST_TTL 1 177607ca46eSDavid Howells #define IP_DEFAULT_MULTICAST_LOOP 1 178607ca46eSDavid Howells 179607ca46eSDavid Howells /* Request struct for multicast socket ops */ 180607ca46eSDavid Howells 181279c6c7fSStephen Hemminger #if __UAPI_DEF_IP_MREQ 182607ca46eSDavid Howells struct ip_mreq { 183607ca46eSDavid Howells struct in_addr imr_multiaddr; /* IP multicast address of group */ 184607ca46eSDavid Howells struct in_addr imr_interface; /* local IP address of interface */ 185607ca46eSDavid Howells }; 186607ca46eSDavid Howells 187607ca46eSDavid Howells struct ip_mreqn { 188607ca46eSDavid Howells struct in_addr imr_multiaddr; /* IP multicast address of group */ 189607ca46eSDavid Howells struct in_addr imr_address; /* local IP address of interface */ 190607ca46eSDavid Howells int imr_ifindex; /* Interface index */ 191607ca46eSDavid Howells }; 192607ca46eSDavid Howells 193607ca46eSDavid Howells struct ip_mreq_source { 194607ca46eSDavid Howells __be32 imr_multiaddr; 195607ca46eSDavid Howells __be32 imr_interface; 196607ca46eSDavid Howells __be32 imr_sourceaddr; 197607ca46eSDavid Howells }; 198607ca46eSDavid Howells 199607ca46eSDavid Howells struct ip_msfilter { 200607ca46eSDavid Howells __be32 imsf_multiaddr; 201607ca46eSDavid Howells __be32 imsf_interface; 202607ca46eSDavid Howells __u32 imsf_fmode; 203607ca46eSDavid Howells __u32 imsf_numsrc; 2045854a09bSGustavo A. R. Silva union { 2055854a09bSGustavo A. R. Silva __be32 imsf_slist[1]; 2065854a09bSGustavo A. R. Silva __DECLARE_FLEX_ARRAY(__be32, imsf_slist_flex); 2072d3e5cafSGustavo A. R. Silva }; 208607ca46eSDavid Howells }; 209607ca46eSDavid Howells 210607ca46eSDavid Howells #define IP_MSFILTER_SIZE(numsrc) \ 211607ca46eSDavid Howells (sizeof(struct ip_msfilter) - sizeof(__u32) \ 212607ca46eSDavid Howells + (numsrc) * sizeof(__u32)) 213607ca46eSDavid Howells 214607ca46eSDavid Howells struct group_req { 215607ca46eSDavid Howells __u32 gr_interface; /* interface index */ 216607ca46eSDavid Howells struct __kernel_sockaddr_storage gr_group; /* group address */ 217607ca46eSDavid Howells }; 218607ca46eSDavid Howells 219607ca46eSDavid Howells struct group_source_req { 220607ca46eSDavid Howells __u32 gsr_interface; /* interface index */ 221607ca46eSDavid Howells struct __kernel_sockaddr_storage gsr_group; /* group address */ 222607ca46eSDavid Howells struct __kernel_sockaddr_storage gsr_source; /* source address */ 223607ca46eSDavid Howells }; 224607ca46eSDavid Howells 225607ca46eSDavid Howells struct group_filter { 226db243b79SGustavo A. R. Silva union { 227db243b79SGustavo A. R. Silva struct { 228db243b79SGustavo A. R. Silva __u32 gf_interface_aux; /* interface index */ 229db243b79SGustavo A. R. Silva struct __kernel_sockaddr_storage gf_group_aux; /* multicast address */ 230db243b79SGustavo A. R. Silva __u32 gf_fmode_aux; /* filter mode */ 231db243b79SGustavo A. R. Silva __u32 gf_numsrc_aux; /* number of sources */ 232db243b79SGustavo A. R. Silva struct __kernel_sockaddr_storage gf_slist[1]; /* interface index */ 233db243b79SGustavo A. R. Silva }; 234db243b79SGustavo A. R. Silva struct { 235607ca46eSDavid Howells __u32 gf_interface; /* interface index */ 236607ca46eSDavid Howells struct __kernel_sockaddr_storage gf_group; /* multicast address */ 237607ca46eSDavid Howells __u32 gf_fmode; /* filter mode */ 238607ca46eSDavid Howells __u32 gf_numsrc; /* number of sources */ 239db243b79SGustavo A. R. Silva struct __kernel_sockaddr_storage gf_slist_flex[]; /* interface index */ 240db243b79SGustavo A. R. Silva }; 241db243b79SGustavo A. R. Silva }; 242607ca46eSDavid Howells }; 243607ca46eSDavid Howells 244607ca46eSDavid Howells #define GROUP_FILTER_SIZE(numsrc) \ 245607ca46eSDavid Howells (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) \ 246607ca46eSDavid Howells + (numsrc) * sizeof(struct __kernel_sockaddr_storage)) 247279c6c7fSStephen Hemminger #endif 248607ca46eSDavid Howells 249279c6c7fSStephen Hemminger #if __UAPI_DEF_IN_PKTINFO 250607ca46eSDavid Howells struct in_pktinfo { 251607ca46eSDavid Howells int ipi_ifindex; 252607ca46eSDavid Howells struct in_addr ipi_spec_dst; 253607ca46eSDavid Howells struct in_addr ipi_addr; 254607ca46eSDavid Howells }; 255279c6c7fSStephen Hemminger #endif 256607ca46eSDavid Howells 257607ca46eSDavid Howells /* Structure describing an Internet (IP) socket address. */ 258279c6c7fSStephen Hemminger #if __UAPI_DEF_SOCKADDR_IN 259607ca46eSDavid Howells #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ 260607ca46eSDavid Howells struct sockaddr_in { 261607ca46eSDavid Howells __kernel_sa_family_t sin_family; /* Address family */ 262607ca46eSDavid Howells __be16 sin_port; /* Port number */ 263607ca46eSDavid Howells struct in_addr sin_addr; /* Internet address */ 264607ca46eSDavid Howells 265607ca46eSDavid Howells /* Pad to size of `struct sockaddr'. */ 266607ca46eSDavid Howells unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) - 267607ca46eSDavid Howells sizeof(unsigned short int) - sizeof(struct in_addr)]; 268607ca46eSDavid Howells }; 269607ca46eSDavid Howells #define sin_zero __pad /* for BSD UNIX comp. -FvK */ 270279c6c7fSStephen Hemminger #endif 271607ca46eSDavid Howells 272279c6c7fSStephen Hemminger #if __UAPI_DEF_IN_CLASS 273607ca46eSDavid Howells /* 274607ca46eSDavid Howells * Definitions of the bits in an Internet address integer. 275607ca46eSDavid Howells * On subnets, host and network parts are found according 276607ca46eSDavid Howells * to the subnet mask, not these masks. 277607ca46eSDavid Howells */ 278607ca46eSDavid Howells #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0) 279607ca46eSDavid Howells #define IN_CLASSA_NET 0xff000000 280607ca46eSDavid Howells #define IN_CLASSA_NSHIFT 24 281607ca46eSDavid Howells #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) 282607ca46eSDavid Howells #define IN_CLASSA_MAX 128 283607ca46eSDavid Howells 284607ca46eSDavid Howells #define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000) 285607ca46eSDavid Howells #define IN_CLASSB_NET 0xffff0000 286607ca46eSDavid Howells #define IN_CLASSB_NSHIFT 16 287607ca46eSDavid Howells #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) 288607ca46eSDavid Howells #define IN_CLASSB_MAX 65536 289607ca46eSDavid Howells 290607ca46eSDavid Howells #define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000) 291607ca46eSDavid Howells #define IN_CLASSC_NET 0xffffff00 292607ca46eSDavid Howells #define IN_CLASSC_NSHIFT 8 293607ca46eSDavid Howells #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) 294607ca46eSDavid Howells 295607ca46eSDavid Howells #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000) 296607ca46eSDavid Howells #define IN_MULTICAST(a) IN_CLASSD(a) 29765cab850SDave Taht #define IN_MULTICAST_NET 0xe0000000 298607ca46eSDavid Howells 299f275ee0fSGreg Kroah-Hartman #define IN_BADCLASS(a) (((long int) (a) ) == (long int)0xffffffff) 30065cab850SDave Taht #define IN_EXPERIMENTAL(a) IN_BADCLASS((a)) 30165cab850SDave Taht 30265cab850SDave Taht #define IN_CLASSE(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000) 30365cab850SDave Taht #define IN_CLASSE_NET 0xffffffff 30465cab850SDave Taht #define IN_CLASSE_NSHIFT 0 305607ca46eSDavid Howells 306607ca46eSDavid Howells /* Address to accept any incoming messages. */ 307607ca46eSDavid Howells #define INADDR_ANY ((unsigned long int) 0x00000000) 308607ca46eSDavid Howells 309607ca46eSDavid Howells /* Address to send to all hosts. */ 310607ca46eSDavid Howells #define INADDR_BROADCAST ((unsigned long int) 0xffffffff) 311607ca46eSDavid Howells 312607ca46eSDavid Howells /* Address indicating an error return. */ 313607ca46eSDavid Howells #define INADDR_NONE ((unsigned long int) 0xffffffff) 314607ca46eSDavid Howells 31532182747SToke Høiland-Jørgensen /* Dummy address for src of ICMP replies if no real address is set (RFC7600). */ 31632182747SToke Høiland-Jørgensen #define INADDR_DUMMY ((unsigned long int) 0xc0000008) 31732182747SToke Høiland-Jørgensen 318607ca46eSDavid Howells /* Network number for local host loopback. */ 319607ca46eSDavid Howells #define IN_LOOPBACKNET 127 320607ca46eSDavid Howells 321607ca46eSDavid Howells /* Address to loopback in software to local host. */ 322607ca46eSDavid Howells #define INADDR_LOOPBACK 0x7f000001 /* 127.0.0.1 */ 323607ca46eSDavid Howells #define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000) 324607ca46eSDavid Howells 325607ca46eSDavid Howells /* Defines for Multicast INADDR */ 326607ca46eSDavid Howells #define INADDR_UNSPEC_GROUP 0xe0000000U /* 224.0.0.0 */ 327607ca46eSDavid Howells #define INADDR_ALLHOSTS_GROUP 0xe0000001U /* 224.0.0.1 */ 328607ca46eSDavid Howells #define INADDR_ALLRTRS_GROUP 0xe0000002U /* 224.0.0.2 */ 3294effd28cSLinus Lüssing #define INADDR_ALLSNOOPERS_GROUP 0xe000006aU /* 224.0.0.106 */ 330607ca46eSDavid Howells #define INADDR_MAX_LOCAL_GROUP 0xe00000ffU /* 224.0.0.255 */ 331279c6c7fSStephen Hemminger #endif 332607ca46eSDavid Howells 333607ca46eSDavid Howells /* <asm/byteorder.h> contains the htonl type stuff.. */ 334607ca46eSDavid Howells #include <asm/byteorder.h> 335607ca46eSDavid Howells 336607ca46eSDavid Howells 337607ca46eSDavid Howells #endif /* _UAPI_LINUX_IN_H */ 338