# address_families

## NAME



           address_families - socket address families (domains)
    


## SYNOPSIS



           **#include <sys/types.h>          **/* See NOTES */
           **#include <sys/socket.h>**
    
           **int socket(int** _domain_**, int** _type_**, int** _protocol_**);**
    


## DESCRIPTION



           The _domain_ argument of the socket(2) specifies a communication
           domain; this selects the protocol family which will be used for
           communication.  These families are defined in _< sys/socket.h>_.  The
           formats currently understood by the Linux kernel include:
    
           **AF_UNIX**
           **AF_LOCAL**
                  Local communication.  For further information, see unix(7).
    
           **AF_INET**
                  IPv4 Internet protocols.  For further information, see
                  ip(7).
    
           **AF_AX25**
                  Amateur radio AX.25 protocol.  For further information, see
                  **ax25**(4).
    
           **AF_IPX** IPX - Novell protocols.
    
           **AF_APPLETALK**
                  AppleTalk For further information, see ddp(7).
    
           **AF_NETROM**
                  AX.25 packet layer protocol.  For further information, see
                  **netrom**(4), _The Packet Radio Protocols and Linux_ 
                  ⟨https://www.tldp.org/HOWTO/AX25-HOWTO/x61.html⟩ and the
                  _AX.25_ , _NET/ROM_ , and _ROSE network programming_ chapters of
                  the _Linux Amateur Radio AX.25 HOWTO_ 
                  ⟨https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html⟩.
    
           **AF_BRIDGE**
                  Can't be used for creating sockets; mostly used for bridge
                  links in rtnetlink(7) protocol commands.
    
           **AF_ATMPVC**
                  Access to raw ATM Permanent Virtual Circuits (PVCs).  For
                  further information, see the _ATM on Linux HOWTO_ 
                  ⟨https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO⟩.
    
           **AF_X25** ITU-T X.25 / ISO/IEC 8208 protocol.  For further
                  information, see x25(7).
    
           **AF_INET6**
                  IPv6 Internet protocols.  For further information, see
                  ipv6(7).
    
           **AF_ROSE**
                  RATS (Radio Amateur Telecommunications Society).  Open
                  Systems environment (ROSE) AX.25 packet layer protocol.
                  For further information, see the resources listed for
                  **AF_NETROM**.
    
           **AF_DECnet**
                  DECet protocol sockets.  See
                  _Documentation/networking/decnet.txt_ in the Linux kernel
                  source tree for details.
    
           **AF_NETBEUI**
                  Reserved for "802.2LLC project"; never used.
    
           **AF_SECURITY**
                  This was a short-lived (between Linux 2.1.30 and
                  2.1.99pre2) protocol family for firewall upcalls.
    
           **AF_KEY** Key management protocol, originally developed for usage
                  with IPsec (since Linux 2.1.38).  This has no relation to
                  keyctl(2) and the in-kernel key storage facility.  See RFC
                  2367 _PF_KEY Key Management API, Version 2_ 
                  ⟨https://tools.ietf.org/html/rfc2367⟩ for details.
    
           **AF_NETLINK**
                  Kernel user interface device.  For further information, see
                  netlink(7).
    
           **AF_PACKET**
                  Low-level packet interface.  For further information, see
                  packet(7).
    
           **AF_ECONET**
                  Acorn Econet protocol (removed in Linux 3.5).  See the
                  Econet documentation 
                  ⟨http://www.8bs.com/othrdnld/manuals/econet.shtml⟩ for
                  details.
    
           **AF_ATMSVC**
                  Access to ATM Switched Virtual Circuits (SVCs) See the _ATM_
                  _on Linux HOWTO_ 
                  ⟨https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO⟩ for
                  details.
    
           **AF_RDS** Reliable Datagram Sockets (RDS) protocol (since Linux
                  2.6.30).  RDS over RDMA has no relation to **AF_SMC** or
                  **AF_XDP**.  For further information, see **rds**(7), **rds-rdma**(7),
                  and _Documentation/networking/rds.txt_ in the Linux kernel
                  source tree.
    
           **AF_IRDA**
                  Socket interface over IrDA (moved to staging in Linux 4.14,
                  removed in Linux 4.17).  For further information, see
                  **irda**(7).
    
           **AF_PPPOX**
                  Generic PPP transport layer, for setting up L2 tunnels
                  (L2TP and PPPoE).  See _Documentation/networking/l2tp.txt_ in
                  the Linux kernel source tree for details.
    
           **AF_WANPIPE**
                  Legacy protocol for wide area network (WAN) connectivity
                  that was used by Sangoma WAN cards (called "WANPIPE");
                  removed in Linux 2.6.21.
    
           **AF_LLC** Logical link control (IEEE 802.2 LLC) protocol, upper part
                  of data link layer of ISO/OSI networking protocol stack
                  (since Linux 2.4); has no relation to **AF_PACKET**.  See
                  chapter _13.5.3. Logical Link Control_ in _Understanding Linux_
                  _Kernel Internals_ (O'Reilly Media, 2006) and _IEEE Standards_
                  _for Local Area Networks: Logical Link Control_ (The
                  Institute of Electronics and Electronics Engineers, Inc.,
                  New York, New York, 1985) for details.  See also some
                  historical notes 
                  ⟨https://wiki.linuxfoundation.org/networking/llc⟩ regarding
                  its development.
    
           **AF_IB** InfiniBand native addressing (since Linux 3.11).
    
           **AF_MPLS**
                  Multiprotocol Label Switching (since Linux 4.1); mostly
                  used for configuring MPLS routing via netlink(7), as it
                  doesn't expose ability to create sockets to user space.
    
           **AF_CAN** Controller Area Network automotive bus protocol (since
                  Linux 2.6.25).  See _Documentation/networking/can.rst_ in the
                  Linux kernel source tree for details.
    
           **AF_TIPC**
                  TIPC, "cluster domain sockets" protocol (since Linux
                  2.6.16).  See _TIPC Programmer's Guide_ 
                  ⟨http://tipc.io/programming.html⟩ and the protocol
                  description ⟨http://tipc.io/protocol.html⟩ for details.
    
           **AF_BLUETOOTH**
                  Bluetooth low-level socket protocol (since Linux 3.11).
                  See _Bluetooth Management API overview_ 
                  ⟨https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/mgmt-
                  api.txt⟩ and _An Introduction to Bluetooth Programming_ by
                  Albert Huang 
                  ⟨https://people.csail.mit.edu/albert/bluez-intro/⟩ for
                  details.
    
           **AF_IUCV**
                  IUCV (inter-user communication vehicle) z/VM protocol for
                  hypervisor-guest interaction (since Linux 2.6.21); has no
                  relation to **AF_VSOCK** and/or **AF_SMC** See _IUCV protocol_
                  _overview_ 
                  ⟨https://www.ibm.com/support/knowledgecenter/en/SSB27U_6.4.0/com.ibm.zvm.v640.hcpb4/iucv.htm⟩
                  for details.
    
           **AF_RXRPC**
                  Rx, Andrew File System remote procedure call protocol
                  (since Linux 2.6.22).  See
                  _Documentation/networking/rxrpc.txt_ in the Linux kernel
                  source tree for details.
    
           **AF_ISDN**
                  New "modular ISDN" driver interface protocol (since Linux
                  2.6.27).  See the mISDN wiki 
                  ⟨http://www.misdn.eu/wiki/Main_Page/⟩ for details.
    
           **AF_PHONET**
                  Nokia cellular modem IPC/RPC interface (since Linux
                  2.6.31).  See _Documentation/networking/phonet.txt_ in the
                  Linux kernel source tree for details.
    
           **AF_IEEE802154**
                  IEEE 802.15.4 WPAN (wireless personal area network) raw
                  packet protocol (since Linux 2.6.31).  See
                  _Documentation/networking/ieee802154.txt_ in the Linux kernel
                  source tree for details.
    
           **AF_CAIF**
                  Ericsson's Communication CPU to Application CPU interface
                  (CAIF) protocol (since Linux 2.6.36).  See
                  _Documentation/networking/caif/Linux-CAIF.txt_ in the Linux
                  kernel source tree for details.
    
           **AF_ALG** Interface to kernel crypto API (since Linux 2.6.38).  See
                  _Documentation/crypto/userspace-if.rst_ in the Linux kernel
                  source tree for details.
    
           **AF_VSOCK**
                  VMWare VSockets protocol for hypervisor-guest interaction
                  (since Linux 3.9); has no relation to **AF_IUCV** and **AF_SMC**.
                  For further information, see vsock(7).
    
           **AF_KCM** KCM (kernel connection multiplexer) interface (since Linux
                  4.6).  See _Documentation/networking/kcm.txt_ in the Linux
                  kernel source tree for details.
    
           **AF_QIPCRTR**
                  Qualcomm IPC router interface protocol (since Linux 4.7).
    
           **AF_SMC** SMC-R (shared memory communications over RDMA) protocol
                  (since Linux 4.11), and SMC-D (shared memory
                  communications, direct memory access) protocol for intra-
                  node z/VM quest interaction (since Linux 4.19); has no
                  relation to **AF_RDS** , **AF_IUCV** or **AF_VSOCK**.  See RFC 7609
                  _IBM's Shared Memory Communications over RDMA (SMC-R)_
                  _Protocol_ ⟨https://tools.ietf.org/html/rfc7609⟩ for details
                  regarding SMC-R.  See _SMC-D Reference Information_ 
                  ⟨https://www-01.ibm.com/software/network/commserver/SMC-
                  D/index.html⟩ for details regarding SMC-D.
    
           **AF_XDP** XDP (express data path) interface (since Linux 4.18).  See
                  _Documentation/networking/af_xdp.rst_ in the Linux kernel
                  source tree for details.
    
           **AF_MCTP**
                  MCTP (Management Component Transport Protocol) interface
                  (since Linux 5.15), as defined by the DMTF specification
                  DSP0236.  For further information, see mctp(7).
    


* * *