.\" Copyright (c) 2018 by Eugene Syromyatnikov , .\" and Copyright (c) 2018 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH address_families 7 2024-05-02 "Linux man-pages 6.8" .SH NAME address_families \- socket address families (domains) .SH SYNOPSIS .nf .BR "#include " " /* See NOTES */" .B #include .P .BI "int socket(int " domain ", int " type ", int " protocol ); .fi .SH DESCRIPTION The .I domain argument of the .BR socket (2) specifies a communication domain; this selects the protocol family which will be used for communication. These families are defined in .IR . The formats currently understood by the Linux kernel include: .TP .B AF_UNIX .TQ .B AF_LOCAL Local communication. For further information, see .BR unix (7). .TP .B AF_INET IPv4 Internet protocols. For further information, see .BR ip (7). .TP .B AF_AX25 Amateur radio AX.25 protocol. For further information, see .BR ax25 (4). .\" Part of ax25-tools .TP .B AF_IPX IPX \- Novell protocols. .TP .B AF_APPLETALK AppleTalk For further information, see .BR ddp (7). .TP .B AF_NETROM AX.25 packet layer protocol. For further information, see .BR netrom (4), .\" Part of ax25-tools package .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x61.html .I The Packet Radio Protocols and Linux .UE and the .IR AX.25 ", " NET/ROM ", and " "ROSE network programming" chapters of the .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html .I Linux Amateur Radio AX.25 HOWTO .UE . .TP .B AF_BRIDGE Can't be used for creating sockets; mostly used for bridge links in .BR rtnetlink (7) protocol commands. .TP .B AF_ATMPVC Access to raw ATM Permanent Virtual Circuits (PVCs). For further information, see the .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO .I ATM on Linux HOWTO .UE . .TP .B AF_X25 ITU-T X.25 / ISO/IEC\~8208 protocol. For further information, see .BR x25 (7). .TP .B AF_INET6 IPv6 Internet protocols. For further information, see .BR ipv6 (7). .TP .B AF_ROSE RATS (Radio Amateur Telecommunications Society). Open Systems environment (ROSE) AX.25 packet layer protocol. For further information, see the resources listed for .BR AF_NETROM . .TP .B AF_DECnet DECet protocol sockets. See .I Documentation/networking/decnet.txt in the Linux kernel source tree for details. .TP .B AF_NETBEUI Reserved for "802.2LLC project"; never used. .TP .B AF_SECURITY This was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family for firewall upcalls. .TP .B AF_KEY Key management protocol, originally developed for usage with IPsec (since Linux 2.1.38). This has no relation to .BR keyctl (2) and the in-kernel key storage facility. See .UR https://tools.ietf.org/html/rfc2367 RFC 2367 .I PF_KEY Key Management API, Version 2 .UE for details. .TP .B AF_NETLINK Kernel user interface device. For further information, see .BR netlink (7). .TP .B AF_PACKET Low-level packet interface. For further information, see .BR packet (7). .\" .TP .\" .B AF_ASH .\" Asynchronous Serial Host protocol (?) .\" Notes from Eugene Syromyatnikov: .\" I haven't found any concrete information about this one; .\" it never was implemented in Linux, at least, judging by historical .\" repos. There is also this file (and its variations): .\" https://github.com/ecki/net-tools/blob/master/lib/ash.c .\" ( https://github.com/ecki/net-tools/commits/master/lib/ash.c ) .\" it mentions "NET-2 distribution" (BSD Net/2?), but, again, I failed .\" to find any mentions of "ash" protocol there. .\" (for the reference: .\" ftp://pdp11.org.ru/pub/unix-archive/Distributions/UCB/Net2/net2.tar.gz ) .\" Another source that mentions it is .\" https://www.silabs.com/documents/public/user-guides/ug101-uart-gateway-protocol-reference.pdf .\" https://www.silabs.com/documents/public/user-guides/ug115-ashv3-protocol-reference.pdf .\" but I doubt that it's related, as former files use 64-byte addresses and .\" "Hamming-encode of hops", and that's barely combines with a protocol .\" that is mainly used over serial connection. .TP .B AF_ECONET .\" commit: 349f29d841dbae854bd7367be7c250401f974f47 Acorn Econet protocol (removed in Linux 3.5). See the .UR http://www.8bs.com/othrdnld/manuals/econet.shtml Econet documentation .UE for details. .TP .B AF_ATMSVC Access to ATM Switched Virtual Circuits (SVCs) See the .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO .I ATM on Linux HOWTO .UE for details. .TP .B AF_RDS .\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4 Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30). RDS over RDMA has no relation to .B AF_SMC or .BR AF_XDP . For further information, see .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7 .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7 .BR rds (7), .BR rds\-rdma (7), and .I Documentation/networking/rds.txt in the Linux kernel source tree. .TP .B AF_IRDA .\" commits: 1ca163afb6fd569b, d64c2a76123f0300 Socket interface over IrDA (moved to staging in Linux 4.14, removed in Linux 4.17). .\" irda-utils: https://sourceforge.net/p/irda/code/HEAD/tree/tags/IRDAUTILS_0_9_18/irda-utils/man/irda.7.gz?format=raw For further information, see .BR irda (7). .TP .B AF_PPPOX Generic PPP transport layer, for setting up L2 tunnels (L2TP and PPPoE). See .I Documentation/networking/l2tp.txt in the Linux kernel source tree for details. .TP .B AF_WANPIPE .\" commits: ce0ecd594d78710422599918a608e96dd1ee6024 Legacy protocol for wide area network (WAN) connectivity that was used by Sangoma WAN cards (called "WANPIPE"); removed in Linux 2.6.21. .TP .B AF_LLC .\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa 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 .BR AF_PACKET . See chapter .I 13.5.3. Logical Link Control in .I Understanding Linux Kernel Internals (O'Reilly Media, 2006) and .I 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 .UR https://wiki.linuxfoundation.org/networking/llc some historical notes .UE regarding its development. .TP .B AF_IB .\" commits: 8d36eb01da5d371f..ce117ffac2e93334 InfiniBand native addressing (since Linux 3.11). .TP .B AF_MPLS .\" commits: 0189197f441602acdca3f97750d392a895b778fd Multiprotocol Label Switching (since Linux 4.1); mostly used for configuring MPLS routing via .BR netlink (7), as it doesn't expose ability to create sockets to user space. .TP .B AF_CAN .\" commits: 8dbde28d9711475a..5423dd67bd0108a1 Controller Area Network automotive bus protocol (since Linux 2.6.25). See .I Documentation/networking/can.rst in the Linux kernel source tree for details. .TP .B AF_TIPC .\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4 TIPC, "cluster domain sockets" protocol (since Linux 2.6.16). See .UR http://tipc.io/programming.html .I TIPC Programmer's Guide .UE and the .UR http://tipc.io/protocol.html protocol description .UE for details. .TP .B AF_BLUETOOTH .\" commits: 8d36eb01da5d371f..ce117ffac2e93334 Bluetooth low-level socket protocol (since Linux 3.11). See .UR https://git.kernel.org\:/pub/scm\:/bluetooth/bluez.git\:/tree/doc/mgmt-api.txt .I Bluetooth Management API overview .UE and .UR https://people.csail.mit.edu/albert/bluez-intro/ .I An Introduction to Bluetooth Programming by Albert Huang .UE for details. .TP .B AF_IUCV .\" commit: eac3731bd04c7131478722a3c148b78774553116 IUCV (inter-user communication vehicle) z/VM protocol for hypervisor-guest interaction (since Linux 2.6.21); has no relation to .B AF_VSOCK and/or .B AF_SMC See .UR https://www.ibm.com\:/support\:/knowledgecenter\:/en/SSB27U_6.4.0\:/com.ibm.zvm.v640.hcpb4\:/iucv.htm .I IUCV protocol overview .UE for details. .TP .B AF_RXRPC .\" commit: 17926a79320afa9b95df6b977b40cca6d8713cea .\" http://people.redhat.com/~dhowells/rxrpc/ .\" https://www.infradead.org/~dhowells/kafs/af_rxrpc_client.html .\" http://workshop.openafs.org/afsbpw09/talks/thu_2/kafs.pdf .\" http://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf .\" http://web.mit.edu/kolya/afs/rx/rx-spec Rx, Andrew File System remote procedure call protocol (since Linux 2.6.22). See .I Documentation/networking/rxrpc.txt in the Linux kernel source tree for details. .TP .B AF_ISDN .\" commit: 1b2b03f8e514e4f68e293846ba511a948b80243c New "modular ISDN" driver interface protocol (since Linux 2.6.27). See the .UR http://www.misdn.eu/wiki/Main_Page/ mISDN wiki .UE for details. .TP .B AF_PHONET .\" commit: 4b07b3f69a8471cdc142c51461a331226fef248a Nokia cellular modem IPC/RPC interface (since Linux 2.6.31). See .I Documentation/networking/phonet.txt in the Linux kernel source tree for details. .TP .B AF_IEEE802154 .\" commit: 9ec7671603573ede31207eb5b0b3e1aa211b2854 IEEE 802.15.4 WPAN (wireless personal area network) raw packet protocol (since Linux 2.6.31). See .I Documentation/networking/ieee802154.txt in the Linux kernel source tree for details. .TP .B AF_CAIF .\" commit: 529d6dad5bc69de14cdd24831e2a14264e93daa4 .\" https://lwn.net/Articles/371017/ .\" http://read.pudn.com/downloads157/doc/comm/698729/Misc/caif/Com%20CPU%20to%20Appl%20CPU%20Interface%20DESCRIPTION_LZN901%202002_revR1C.pdf .\" http://read.pudn.com/downloads157/doc/comm/698729/Misc/caif/Com%20CPU%20to%20Appl%20CPU%20Interface%20PROTOCOL%20SPECIFICATION_LZN901%201708_revR1A.pdf Ericsson's Communication CPU to Application CPU interface (CAIF) protocol (since Linux 2.6.36). See .I Documentation/networking/caif/Linux\-CAIF.txt in the Linux kernel source tree for details. .TP .B AF_ALG Interface to kernel crypto API (since Linux 2.6.38). See .I Documentation/crypto/userspace\-if.rst in the Linux kernel source tree for details. .TP .B AF_VSOCK .\" commit: d021c344051af91f42c5ba9fdedc176740cbd238 VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9); has no relation to .B AF_IUCV and .BR AF_SMC . For further information, see .BR vsock (7). .TP .B AF_KCM .\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314 KCM (kernel connection multiplexer) interface (since Linux 4.6). See .I Documentation/networking/kcm.txt in the Linux kernel source tree for details. .TP .B AF_QIPCRTR .\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881 Qualcomm IPC router interface protocol (since Linux 4.7). .TP .B AF_SMC .\" commit: f3a3e248f3f7cd9a4bed334022704d7e7fc781bf 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 .BR AF_RDS ", " AF_IUCV or .BR AF_VSOCK . See .UR https://tools.ietf.org/html/rfc7609 RFC 7609 .I IBM's Shared Memory Communications over RDMA (SMC-R) Protocol .UE for details regarding SMC-R. See .UR https://www-01.ibm.com\:/software/network\:/commserver\:/SMC-D/index.html .I SMC-D Reference Information .UE for details regarding SMC-D. .TP .B AF_XDP .\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7 XDP (express data path) interface (since Linux 4.18). See .I Documentation/networking/af_xdp.rst in the Linux kernel source tree for details. .SH SEE ALSO .BR socket (2), .BR socket (7)