| .\" Copyright (c) 2018 by Eugene Syromyatnikov <evgsyr@gmail.com>, |
| .\" and Copyright (c) 2018 Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH ADDRESS_FAMILIES 7 2018-10-16 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| address_families \- socket address families (domains) |
| .SH SYNOPSIS |
| .BR "#include <sys/types.h>" " /* See NOTES */" |
| .br |
| .B #include <sys/socket.h> |
| .PP |
| .BI "int socket(int " domain ", int " type ", int " protocol ); |
| .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 <sys/socket.h> . |
| The formats currently understood by the Linux kernel include: |
| .TP |
| .BR AF_UNIX ", " 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-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 |
| .BR 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 multiplexor) 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) |