address_families(7)

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
    Support was removed in Linux 6.1.

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

SEE ALSO
socket(2), socket(7)