Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
INET(4)			 BSD Kernel Interfaces Manual		       INET(4)

     inet -- Internet protocol family

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

     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 inter-
     face provides access to the IP protocol.

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

     Sockets bound to the Internet protocol family utilize the following ad-
     dressing 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 dis-
     tinguished	address	INADDR_BROADCAST is allowed as a shorthand for the
     broadcast address on the primary network if the first network configured
     supports broadcast.

     The Internet protocol family is comprised of the IP network protocol, In-
     ternet Control Message Protocol (ICMP), Internet Group Management Proto-
     col (IGMP), Transmission Control Protocol (TCP), and User Datagram	Proto-
     col (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 mes-
     sage protocol is accessible from a	raw socket.

     The inet address on an interface consist of the address itself, the net-
     mask, either broadcast address in case of a broadcast interface or	peers
     address in	case of	point-to-point interface.  The following ioctl(2) com-
     mands 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 re-
			   quires struct ifreq as argument.
	   SIOCGIFNETMASK  Return address information from interface.  The re-
			   turned value	is in struct ifreq.  This way of ad-
			   dress information retrieval is obsoleted, a pre-
			   ferred 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 forward-
			      ing of IP	packets.  Defaults to off.

     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.  De-
			      faults 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

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

     ip.process_options	      Integer: control IP options processing.  By set-
			      ting this	variable to 0, all IP options in the
			      incoming packets will be ignored,	and the	pack-
			      ets will be passed unmodified.  By setting to 1,
			      IP options in the	incoming packets will be pro-
			      cessed 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.rfc6864		      Boolean: control IP IDs generation behaviour.
			      True value enables RFC6864 support, which	speci-
			      fies that	IP ID field of atomic datagrams	can be
			      set to any value.	 The FreeBSD implementation
			      sets it to zero. Enabled by default.

     ip.random_id	      Boolean: control IP IDs generation behaviour.
			      Setting this sysctl(8) to	1 causes the ID	field
			      in non-atomic IP datagrams (or all IP datagrams,
			      if ip.rfc6864 is disabled) to be randomized in-
			      stead of incremented by 1	with each packet gen-
			      erated.  This closes a minor information leak
			      which allows remote observers to determine the
			      rate of packet generation	on the machine by
			      watching the counter.  At	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

     ip.maxfragpackets	      Integer: maximum number of fragmented packets
			      the host will accept and hold in the reassem-
			      bling queue simultaneously.  0 means that	the
			      host will	not accept any fragmented packets.  -1
			      means that the host will accept as many frag-
			      mented 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.

     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.

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

     The Internet protocol support is subject to change	as the Internet	proto-
     cols develop.  Users should not depend on details of the current imple-
     mentation,	but rather the services	exported.

BSD				  Feb 4, 2016				   BSD


Want to link to this manual page? Use this URL:

home | help