Provided by: freebsd-manpages_10.1~RC1-1_all bug

NAME

       inet — Internet protocol family

SYNOPSIS

       #include <sys/types.h>
       #include <netinet/in.h>

DESCRIPTION

       The  Internet  protocol  family  is  a  collection  of  protocols layered atop the Internet Protocol (IP)
       transport layer, and utilizing the Internet  address  format.   The  Internet  family  provides  protocol
       support  for  the  SOCK_STREAM,  SOCK_DGRAM,  and  SOCK_RAW socket types; the SOCK_RAW interface provides
       access to the IP protocol.

ADDRESSING

       Internet addresses are four byte  quantities,  stored  in  network  standard  format  (on  little  endian
       machines,  such  as  the alpha, amd64, i386 and ia64 these are word and byte reversed).  The include file
       <netinet/in.h> defines this address as a discriminated union.

       Sockets bound to the Internet protocol family utilize the following addressing structure,

             struct sockaddr_in {
                     uint8_t         sin_len;
                     sa_family_t     sin_family;
                     in_port_t       sin_port;
                     struct in_addr  sin_addr;
                     char            sin_zero[8];
             };

       Sockets may be created with the local address  INADDR_ANY  to  affect  “wildcard”  matching  on  incoming
       messages.   The address in a connect(2) or sendto(2) call may be given as INADDR_ANY to mean “this host”.
       The distinguished address INADDR_BROADCAST is allowed as a shorthand for the  broadcast  address  on  the
       primary network if the first network configured supports broadcast.

PROTOCOLS

       The  Internet  protocol family is comprised of the IP network protocol, Internet Control Message Protocol
       (ICMP), Internet Group Management Protocol (IGMP), Transmission Control Protocol (TCP), and User Datagram
       Protocol (UDP).  TCP is used to support the SOCK_STREAM abstraction while UDP  is  used  to  support  the
       SOCK_DGRAM  abstraction.   A  raw  interface  to  IP  is available by creating an Internet socket of type
       SOCK_RAW.  The ICMP message protocol is accessible from a raw socket.

       The inet address on an interface consist of the address itself, the netmask, either broadcast address  in
       case  of  a  broadcast  interface  or  peers  address in case of point-to-point interface.  The following
       ioctl(2) commands are provided for a datagram socket in the Internet domain:

             SIOCAIFADDR     Add address to an interface.  The command requires struct in_aliasreq as argument.
             SIOCDIFADDR     Delete address from an interface.  The command requires struct ifreq as argument.
             SIOCGIFADDR
             SIOCGIFBRDADDR
             SIOCGIFDSTADDR
             SIOCGIFNETMASK  Return address information from interface. The returned value is in  struct  ifreq.
                             This  way  of address information retrieval is obsoleted, a preferred way is to use
                             getifaddrs(3) API.

   MIB Variables
       A number of variables are implemented in the net.inet branch of the sysctl(3) MIB.  In  addition  to  the
       variables  supported by the transport protocols (for which the respective manual pages may be consulted),
       the following general variables are defined:

       IPCTL_FORWARDING      (ip.forwarding) Boolean: enable/disable forwarding of IP packets.  Defaults to off.

       IPCTL_FASTFORWARDING  (ip.fastforwarding) Boolean: enable/disable the use of  fast  IP  forwarding  code.
                             Defaults  to  off.   When  fast  IP forwarding is enabled, IP packets are forwarded
                             directly to the appropriate network interface with direct processing to completion,
                             which greatly improves the throughput.  All packets for local  IP  addresses,  non-
                             unicast,  or  with  IP  options are handled by the normal IP input processing path.
                             All features of the normal  (slow)  IP  forwarding  path  are  supported  including
                             firewall  (through  pfil(9) hooks) checking, except ipsec(4) tunnel brokering.  The
                             IP fastforwarding path does not generate ICMP redirect or source quench messages.

       IPCTL_SENDREDIRECTS   (ip.redirect) Boolean: enable/disable sending of ICMP redirects in response  to  IP
                             packets  for  which a better, and for the sender directly reachable, route and next
                             hop is known.  Defaults to on.

       IPCTL_DEFTTL          (ip.ttl) Integer: default time-to-live (“TTL”) to use for outgoing IP packets.

       IPCTL_ACCEPTSOURCEROUTE
                             (ip.accept_sourceroute)  Boolean:  enable/disable  accepting  of  source-routed  IP
                             packets (default false).

       IPCTL_SOURCEROUTE     (ip.sourceroute)  Boolean:  enable/disable  forwarding  of source-routed IP packets
                             (default false).

       IPCTL_RTEXPIRE        (ip.rtexpire) Integer: lifetime in seconds of protocol-cloned IP routes  after  the
                             last  reference  drops  (default  one  hour).   This  value  varies  dynamically as
                             described above.

       IPCTL_RTMINEXPIRE     (ip.rtminexpire) Integer: minimum value of ip.rtexpire (default ten seconds).  This
                             value has no effect on user modifications, but  restricts  the  dynamic  adaptation
                             described above.

       IPCTL_RTMAXCACHE      (ip.rtmaxcache)  Integer:  trigger  level  of cached, unreferenced, protocol-cloned
                             routes which initiates dynamic adaptation (default 128).

       ip.process_options    Integer: control IP options processing.  By setting this  variable  to  0,  all  IP
                             options  in  the  incoming  packets will be ignored, and the packets will be passed
                             unmodified.  By setting to 1, IP options in the incoming packets will be  processed
                             accordingly.   By setting to 2, an ICMP “prohibited by filter” message will be sent
                             back in response to  incoming  packets  with  IP  options.   Default  is  1.   This
                             sysctl(8)  variable  affects  packets  destined for a local host as well as packets
                             forwarded to some other host.

       ip.random_id          Boolean: control IP IDs generation behaviour.  Setting this sysctl(8)  to  non-zero
                             causes the ID field in IP packets to be randomized instead of incremented by 1 with
                             each  packet  generated.   This closes a minor information leak which allows remote
                             observers to determine the rate of packet generation on the machine by watching the
                             counter.  In the same time, on high-speed links, it can decrease the ID reuse cycle
                             greatly.  Default is 0 (sequential IP IDs).  IPv6 flow IDs  and  fragment  IDs  are
                             always random.

       ip.maxfragpackets     Integer:  maximum number of fragmented packets the host will accept and hold in the
                             reassembling queue simultaneously.  0 means that  the  host  will  not  accept  any
                             fragmented  packets.  -1 means that the host will accept as many fragmented packets
                             as it receives.

       ip.maxfragsperpacket  Integer: maximum number  of  fragments  the  host  will  accept  and  hold  in  the
                             reassembling  queue  for  a  packet.   0  means  that  the host will not accept any
                             fragmented packets.

SEE ALSO

       ioctl(2), socket(2), getifaddrs(3), sysctl(3), icmp(4), intro(4), ip(4), ipfirewall(4), route(4), tcp(4),
       udp(4), pfil(9)

       “An Introductory 4.3 BSD Interprocess Communication Tutorial”, PS1, 7.

       “An Advanced 4.3 BSD Interprocess Communication Tutorial”, PS1, 8.

HISTORY

       The inet protocol interface appeared in 4.2BSD.  The “protocol cloning” code appeared in FreeBSD 2.1.

CAVEATS

       The Internet protocol support is subject to change as the Internet protocols develop.  Users  should  not
       depend on details of the current implementation, but rather the services exported.

Debian                                          January 26, 2012                                         INET(4)