📛 NAME
address_families - socket address families (domains)
🚀 Quick Reference
| Use Case |
Command |
Description |
| 🌐 IPv4 TCP |
socket(AF_INET, SOCK_STREAM, 0) |
Create a TCP socket for IPv4 |
| 🌐 IPv4 UDP |
socket(AF_INET, SOCK_DGRAM, 0) |
Create a UDP socket for IPv4 |
| 🏠 Local Unix |
socket(AF_UNIX, SOCK_STREAM, 0) |
Create a local socket |
| 🌍 IPv6 TCP |
socket(AF_INET6, SOCK_STREAM, 0) |
Create a TCP socket for IPv6 |
| 🔗 Netlink |
socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE) |
Kernel user interface |
| 📦 Packet |
socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) |
Low-level packet interface |
| 🔵 Bluetooth |
socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) |
Bluetooth RFCOMM protocol |
| 🖥️ VSock |
socket(AF_VSOCK, SOCK_STREAM, 0) |
Hypervisor-guest interaction |
| 🚗 CAN bus |
socket(AF_CAN, SOCK_RAW, CAN_RAW) |
Controller Area Network |
| 🔐 Crypto |
socket(AF_ALG, SOCK_SEQPACKET, 0) |
Kernel crypto API interface |
📝 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-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 — DECnet 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 guest 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.
🔗 SEE ALSO
📄 COLOPHON
This page is part of release 5.10 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.