1 .\" Copyright (c) 2018 by Eugene Syromyatnikov <evgsyr@gmail.com>,
2 .\" and Copyright (c) 2018 Michael Kerrisk <mtk.manpages@gmail.com>
4 .\" %%%LICENSE_START(VERBATIM)
5 .\" Permission is granted to make and distribute verbatim copies of this
6 .\" manual provided the copyright notice and this permission notice are
7 .\" preserved on all copies.
9 .\" Permission is granted to copy and distribute modified versions of this
10 .\" manual under the conditions for verbatim copying, provided that the
11 .\" entire resulting derived work is distributed under the terms of a
12 .\" permission notice identical to this one.
14 .\" Since the Linux kernel and libraries are constantly changing, this
15 .\" manual page may be incorrect or out-of-date. The author(s) assume no
16 .\" responsibility for errors or omissions, or for damages resulting from
17 .\" the use of the information contained herein. The author(s) may not
18 .\" have taken the same level of care in the production of this manual,
19 .\" which is licensed free of charge, as they might when working
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
26 .TH ADDRESS_FAMILIES 7 2021-03-22 "Linux" "Linux Programmer's Manual"
28 address_families \- socket address families (domains)
31 .BR "#include <sys/types.h>" " /* See NOTES */"
32 .B #include <sys/socket.h>
34 .BI "int socket(int " domain ", int " type ", int " protocol );
41 specifies a communication domain; this selects the protocol
42 family which will be used for communication.
43 These families are defined in
45 The formats currently understood by the Linux kernel include:
47 .BR AF_UNIX ", " AF_LOCAL
49 For further information, see
53 IPv4 Internet protocols.
54 For further information, see
58 Amateur radio AX.25 protocol.
59 For further information, see
61 .\" Part of ax25-tools
64 IPX \- Novell protocols.
68 For further information, see
72 AX.25 packet layer protocol.
73 For further information, see
75 .\" Part of ax25-tools package
76 .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x61.html
77 .I The Packet Radio Protocols and Linux
80 .IR AX.25 ", " NET/ROM ", and " "ROSE network programming"
82 .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html
83 .I Linux Amateur Radio AX.25 HOWTO
87 Can't be used for creating sockets;
88 mostly used for bridge links in
93 Access to raw ATM Permanent Virtual Circuits (PVCs).
94 For further information, see the
95 .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
100 ITU-T X.25 / ISO-8208 protocol.
101 For further information, see
105 IPv6 Internet protocols.
106 For further information, see
110 RATS (Radio Amateur Telecommunications Society)
111 Open Systems environment (ROSE) AX.25 packet layer protocol.
112 For further information, see the resources listed for
116 DECet protocol sockets.
118 .I Documentation/networking/decnet.txt
119 in the Linux kernel source tree for details.
122 Reserved for "802.2LLC project"; never used.
125 This was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family
126 for firewall upcalls.
129 Key management protocol, originally developed for usage with IPsec
130 (since Linux 2.1.38).
131 This has no relation to
133 and the in-kernel key storage facility.
135 .UR https://tools.ietf.org/html/rfc2367
137 .I PF_KEY Key Management API, Version 2
142 Kernel user interface device
143 For further information, see
147 Low-level packet interface.
148 For further information, see
152 .\" Asynchronous Serial Host protocol (?)
153 .\" Notes from Eugene Syromyatnikov:
154 .\" I haven't found any concrete information about this one;
155 .\" it never was implemented in Linux, at least, judging by historical
156 .\" repos. There is also this file (and its variations):
157 .\" https://github.com/ecki/net-tools/blob/master/lib/ash.c
158 .\" ( https://github.com/ecki/net-tools/commits/master/lib/ash.c )
159 .\" it mentions "NET-2 distribution" (BSD Net/2?), but, again, I failed
160 .\" to find any mentions of "ash" protocol there.
161 .\" (for the reference:
162 .\" ftp://pdp11.org.ru/pub/unix-archive/Distributions/UCB/Net2/net2.tar.gz )
163 .\" Another source that mentions it is
164 .\" https://www.silabs.com/documents/public/user-guides/ug101-uart-gateway-protocol-reference.pdf
165 .\" https://www.silabs.com/documents/public/user-guides/ug115-ashv3-protocol-reference.pdf
166 .\" but I doubt that it's related, as former files use 64-byte addresses and
167 .\" "Hamming-encode of hops", and that's barely combines with a protocol
168 .\" that is mainly used over serial connection.
171 .\" commit: 349f29d841dbae854bd7367be7c250401f974f47
172 Acorn Econet protocol (removed in Linux 3.5).
174 .UR http://www.8bs.com/othrdnld/manuals/econet.shtml
180 Access to ATM Switched Virtual Circuits (SVCs)
182 .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
183 .I ATM on Linux HOWTO
188 .\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
189 Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30).
190 RDS over RDMA has no relation to
194 For further information see
195 .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7
196 .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7
200 .I Documentation/networking/rds.txt
201 in the Linux kernel source tree.
204 .\" commits: 1ca163afb6fd569b, d64c2a76123f0300
205 Socket interface over IrDA
206 (moved to staging in Linux 4.14, removed in Linux 4.17).
207 .\" irda-utils: https://sourceforge.net/p/irda/code/HEAD/tree/tags/IRDAUTILS_0_9_18/irda-utils/man/irda.7.gz?format=raw
208 For further information see
212 Generic PPP transport layer, for setting up L2 tunnels
215 .I Documentation/networking/l2tp.txt
216 in the Linux kernel source tree for details.
219 .\" commits: ce0ecd594d78710422599918a608e96dd1ee6024
220 Legacy protocol for wide area network (WAN) connectivity
221 that was used by Sangoma WAN cards (called "WANPIPE");
222 removed in Linux 2.6.21.
225 .\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa
226 Logical link control (IEEE 802.2 LLC) protocol, upper part
227 of data link layer of ISO/OSI networking protocol stack
232 .I 13.5.3. Logical Link Control
234 .I Understanding Linux Kernel Internals
235 (O'Reilly Media, 2006)
237 .I IEEE Standards for Local Area Networks: Logical Link Control
238 (The Institute of Electronics and Electronics Engineers, Inc.,
239 New York, New York, 1985)
242 .UR https://wiki.linuxfoundation.org/networking/llc
243 some historical notes
245 regarding its development.
248 .\" commits: 8d36eb01da5d371f..ce117ffac2e93334
249 InfiniBand native addressing (since Linux 3.11).
252 .\" commits: 0189197f441602acdca3f97750d392a895b778fd
253 Multiprotocol Label Switching (since Linux 4.1);
254 mostly used for configuring MPLS routing via
256 as it doesn't expose ability to create sockets to user space.
259 .\" commits: 8dbde28d9711475a..5423dd67bd0108a1
260 Controller Area Network automotive bus protocol (since Linux 2.6.25).
262 .I Documentation/networking/can.rst
263 in the Linux kernel source tree for details.
266 .\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4
267 TIPC, "cluster domain sockets" protocol (since Linux 2.6.16).
269 .UR http://tipc.io/programming.html
270 .I TIPC Programmer's Guide
273 .UR http://tipc.io/protocol.html
279 .\" commits: 8d36eb01da5d371f..ce117ffac2e93334
280 Bluetooth low-level socket protocol (since Linux 3.11).
282 .UR https://git.kernel.org\:/pub/scm\:/bluetooth/bluez.git\:/tree/doc/mgmt-api.txt
283 .I Bluetooth Management API overview
286 .UR https://people.csail.mit.edu/albert/bluez-intro/
287 .I An Introduction to Bluetooth Programming
293 .\" commit: eac3731bd04c7131478722a3c148b78774553116
294 IUCV (inter-user communication vehicle) z/VM protocol
295 for hypervisor-guest interaction (since Linux 2.6.21);
301 .UR https://www.ibm.com\:/support\:/knowledgecenter\:/en/SSB27U_6.4.0\:/com.ibm.zvm.v640.hcpb4\:/iucv.htm
302 .I IUCV protocol overview
307 .\" commit: 17926a79320afa9b95df6b977b40cca6d8713cea
308 .\" http://people.redhat.com/~dhowells/rxrpc/
309 .\" https://www.infradead.org/~dhowells/kafs/af_rxrpc_client.html
310 .\" http://workshop.openafs.org/afsbpw09/talks/thu_2/kafs.pdf
311 .\" http://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf
312 .\" http://web.mit.edu/kolya/afs/rx/rx-spec
313 Rx, Andrew File System remote procedure call protocol
314 (since Linux 2.6.22).
316 .I Documentation/networking/rxrpc.txt
317 in the Linux kernel source tree for details.
320 .\" commit: 1b2b03f8e514e4f68e293846ba511a948b80243c
321 New "modular ISDN" driver interface protocol (since Linux 2.6.27).
323 .UR http://www.misdn.eu/wiki/Main_Page/
329 .\" commit: 4b07b3f69a8471cdc142c51461a331226fef248a
330 Nokia cellular modem IPC/RPC interface (since Linux 2.6.31).
332 .I Documentation/networking/phonet.txt
333 in the Linux kernel source tree for details.
336 .\" commit: 9ec7671603573ede31207eb5b0b3e1aa211b2854
337 IEEE 802.15.4 WPAN (wireless personal area network) raw packet protocol
338 (since Linux 2.6.31).
340 .I Documentation/networking/ieee802154.txt
341 in the Linux kernel source tree for details.
344 .\" commit: 529d6dad5bc69de14cdd24831e2a14264e93daa4
345 .\" https://lwn.net/Articles/371017/
346 .\" http://read.pudn.com/downloads157/doc/comm/698729/Misc/caif/Com%20CPU%20to%20Appl%20CPU%20Interface%20DESCRIPTION_LZN901%202002_revR1C.pdf
347 .\" http://read.pudn.com/downloads157/doc/comm/698729/Misc/caif/Com%20CPU%20to%20Appl%20CPU%20Interface%20PROTOCOL%20SPECIFICATION_LZN901%201708_revR1A.pdf
348 Ericsson's Communication CPU to Application CPU interface (CAIF) protocol
349 (since Linux 2.6.36).
351 .I Documentation/networking/caif/Linux\-CAIF.txt
352 in the Linux kernel source tree for details.
355 Interface to kernel crypto API (since Linux 2.6.38).
357 .I Documentation/crypto/userspace\-if.rst
358 in the Linux kernel source tree for details.
361 .\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
362 VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9);
367 For further information, see
371 .\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
372 KCM (kernel connection multiplexer) interface (since Linux 4.6).
374 .I Documentation/networking/kcm.txt
375 in the Linux kernel source tree for details.
378 .\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881
379 Qualcomm IPC router interface protocol (since Linux 4.7).
382 .\" commit: f3a3e248f3f7cd9a4bed334022704d7e7fc781bf
383 SMC-R (shared memory communications over RDMA) protocol (since Linux 4.11),
384 and SMC-D (shared memory communications, direct memory access) protocol
385 for intra-node z/VM quest interaction (since Linux 4.19);
387 .BR AF_RDS ", " AF_IUCV
391 .UR https://tools.ietf.org/html/rfc7609
393 .I IBM's Shared Memory Communications over RDMA (SMC-R) Protocol
395 for details regarding SMC-R.
397 .UR https://www-01.ibm.com\:/software/network\:/commserver\:/SMC-D/index.html
398 .I SMC-D Reference Information
400 for details regarding SMC-D.
403 .\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7
404 XDP (express data path) interface (since Linux 4.18).
406 .I Documentation/networking/af_xdp.rst
407 in the Linux kernel source tree for details.