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 2018-10-16 "Linux" "Linux Programmer's Manual"
28 address_families \- socket address families (domains)
30 .BR "#include <sys/types.h>" " /* See NOTES */"
32 .B #include <sys/socket.h>
34 .BI "int socket(int " domain ", int " type ", int " protocol );
40 specifies a communication domain; this selects the protocol
41 family which will be used for communication.
42 These families are defined in
44 The currently understood formats include:
46 .BR AF_UNIX ", " AF_LOCAL
48 For further information, see
52 IPv4 Internet protocols.
53 For further information, see
57 Amateur radio AX.25 protocol.
58 For further information, see
60 .\" Part of ax25-tools
63 IPX \- Novell protocols.
67 For further information, see
71 AX.25 packet layer protocol.
72 For further information, see
74 .\" Part of ax25-tools package
75 .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x61.html
76 .I The Packet Radio Protocols and Linux
79 .IR AX.25 ", " NET/ROM ", and " "ROSE network programming"
81 .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html
82 .I Linux Amateur Radio AX.25 HOWTO
86 Can't be used for creating sockets;
87 mostly used for bridge links in
92 Access to raw ATM Permanent Virtual Circuits (PVCs).
93 For further information, see the
94 .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
99 ITU-T X.25 / ISO-8208 protocol.
100 For further information, see
104 IPv6 Internet protocols.
105 For further information, see
109 RATS (Radio Amateur Telecommunications Society)
110 Open Systems environment (ROSE) AX.25 packet layer protocol.
111 For further information, see the resources listed for
115 DECet protocol sockets.
117 .I Documentation/networking/decnet.txt
118 in the Linux kernel source tree for details.
121 Reserved for "802.2LLC project"; never used.
124 This was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family
125 for firewall upcalls.
128 Key management protocol, originally developed for usage with IPsec
129 (since Linux 2.1.38).
130 This has no relation to
132 and the in-kernel key storage facility.
134 .UR https://tools.ietf.org/html/rfc2367
136 .I PF_KEY Key Management API, Version 2
141 Kernel user interface device
142 For further information, see
146 Low-level packet interface.
147 For further information, see
151 .\" Asynchronous Serial Host protocol (?)
152 .\" Notes from Eugene Syromyatnikov:
153 .\" I haven't found any concrete information about this one;
154 .\" it never was implemented in Linux, at least, judging by historical
155 .\" repos. There is also this file (and its variations):
156 .\" https://github.com/ecki/net-tools/blob/master/lib/ash.c
157 .\" ( https://github.com/ecki/net-tools/commits/master/lib/ash.c )
158 .\" it mentions "NET-2 distribution" (BSD Net/2?), but, again, I failed
159 .\" to find any mentions of "ash" protocol there.
160 .\" (for the reference:
161 .\" ftp://pdp11.org.ru/pub/unix-archive/Distributions/UCB/Net2/net2.tar.gz )
162 .\" Another source that mentions it is
163 .\" https://www.silabs.com/documents/public/user-guides/ug101-uart-gateway-protocol-reference.pdf
164 .\" https://www.silabs.com/documents/public/user-guides/ug115-ashv3-protocol-reference.pdf
165 .\" but I doubt that it's related, as former files use 64-byte addresses and
166 .\" "Hamming-encode of hops", and that's barely combines with a protocol
167 .\" that is mainly used over serial connection.
170 .\" commit: 349f29d841dbae854bd7367be7c250401f974f47
171 Acorn Econet protocol (removed in Linux 3.5).
173 .UR http://www.8bs.com/othrdnld/manuals/econet.shtml
179 Access to ATM Switched Virtual Circuits (SVCs)
181 .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
182 .I ATM on Linux HOWTO
187 .\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
188 Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30).
189 RDS over RDMA has no relation to
193 For further information see
194 .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7
195 .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7
199 .I Documentation/networking/rds.txt
200 in the Linux kernel source tree.
203 .\" commits: 1ca163afb6fd569b, d64c2a76123f0300
204 Socket interface over IrDA
205 (moved to staging in Linux 4.14, removed in Linux 4.17).
206 .\" irda-utils: https://sourceforge.net/p/irda/code/HEAD/tree/tags/IRDAUTILS_0_9_18/irda-utils/man/irda.7.gz?format=raw
207 For further information see
211 Generic PPP transport layer, for setting up L2 tunnels
214 .I Documentation/networking/l2tp.txt
215 in the Linux kernel source tree for details.
218 .\" commits: ce0ecd594d78710422599918a608e96dd1ee6024
219 Legacy protocol for wide area network (WAN) connectivity
220 that was used by Sangoma WAN cards (called "WANPIPE");
221 removed in Linux 2.6.21.
224 .\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa
225 Logical link control (IEEE 802.2 LLC) protocol, upper part
226 of data link layer of ISO/OSI networking protocol stack
231 .I 13.5.3. Logical Link Control
233 .I Understanding Linux Kernel Internals
234 (O'Reilly Media, 2006)
236 .I IEEE Standards for Local Area Networks: Logical Link Control
237 (The Institute of Electronics and Electronics Engineers, Inc.,
238 New York, New York, 1985)
241 .UR https://wiki.linuxfoundation.org/networking/llc
242 some historical notes
244 regarding its development.
247 .\" commits: 8d36eb01da5d371f..ce117ffac2e93334
248 InfiniBand native addressing (since Linux 3.11).
251 .\" commits: 0189197f441602acdca3f97750d392a895b778fd
252 Multiprotocol Label Switching (since Linux 4.1);
253 mostly used for configuring MPLS routing via
255 as it doesn't expose ability to create sockets to user space.
258 .\" commits: 8dbde28d9711475a..5423dd67bd0108a1
259 Controller Area Network automotive bus protocol (since Linux 2.6.25).
261 .I Documentation/networking/can.rst
262 in the Linux kernel source tree for details.
265 .\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4
266 TIPC, "cluster domain sockets" protocol (since Linux 2.6.16).
268 .UR http://tipc.io/programming.html
269 .I TIPC Programmer's Guide
272 .UR http://tipc.io/protocol.html
278 .\" commits: 8d36eb01da5d371f..ce117ffac2e93334
279 Bluetooth low-level socket protocol (since Linux 3.11).
281 .UR https://git.kernel.org\:/pub/scm\:/bluetooth/bluez.git\:/tree/doc/mgmt-api.txt
282 .I Bluetooth Management API overview
285 .UR https://people.csail.mit.edu/albert/bluez-intro/
286 .I An Introduction to Bluetooth Programming
292 .\" commit: eac3731bd04c7131478722a3c148b78774553116
293 IUCV (inter-user communication vehicle) z/VM protocol
294 for hypervisor-guest interaction (since Linux 2.6.21);
300 .UR https://www.ibm.com\:/support\:/knowledgecenter\:/en/SSB27U_6.4.0\:/com.ibm.zvm.v640.hcpb4\:/iucv.htm
301 .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).
358 .I Documentation/crypto/userspace-if.rst
359 in the Linux kernel source tree for details.
362 .\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
363 VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9);
368 For further information, see
372 .\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
373 KCM (kernel connection multiplexor) interface (since Linux 4.6).
375 .I Documentation/networking/kcm.txt
376 in the Linux kernel source tree for details.
379 .\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881
380 Qualcomm IPC router interface protocol (since Linux 4.7).
383 .\" commit: f3a3e248f3f7cd9a4bed334022704d7e7fc781bf
384 SMC-R (shared memory communications over RDMA) protocol (since Linux 4.11),
385 and SMC-D (shared memory communications, direct memory access) protocol
386 for intra-node z/VM quest interaction (since Linux 4.19);
388 .BR AF_RDS ", " AF_IUCV
392 .UR https://tools.ietf.org/html/rfc7609
394 .I IBM's Shared Memory Communications over RDMA (SMC-R) Protocol
396 for details regarding SMC-R.
398 .UR https://www-01.ibm.com\:/software/network\:/commserver\:/SMC-D/index.html
399 .I SMC-D Reference Information
401 for details regarding SMC-D.
404 .\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7
405 XDP (express data path) interface (since Linux 4.18).
407 .I Documentation/networking/af_xdp.rst
408 in the Linux kernel source tree for details.