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

FreeBSD Manual Pages


home | help
INET(4)		       FreeBSD 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>
     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.

     The Internet protocol family is comprised of the IP network protocol,
     Internet Control Message Protocol (ICMP), Internet	Group Management Pro-
     tocol (IGMP), Transmission	Control	Protocol (TCP),	and User Datagram Pro-
     tocol (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 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
			   requires struct ifreq as argument.
	   SIOCGIFNETMASK  Return address information from interface.  The
			   returned value is in	struct ifreq.  This way	of
			   address 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.
			      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

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

FreeBSD	11.2			  Feb 4, 2016			  FreeBSD 11.2


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

home | help