address_families.7: tfix
[man-pages.git] / man7 / address_families.7
blob93fb1e60e9d2a74ee8165698acfc2488013fffb7
1 .\" Copyright (c) 2018 by Eugene Syromyatnikov <evgsyr@gmail.com>,
2 .\" and Copyright (c) 2018 Michael Kerrisk <mtk.manpages@gmail.com>
3 .\"
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.
8 .\"
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.
13 .\"
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
20 .\" professionally.
21 .\"
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
24 .\" %%%LICENSE_END
25 .\"
26 .TH ADDRESS_FAMILIES 7 2018-10-16 "Linux" "Linux Programmer's Manual"
27 .SH NAME
28 address_families \- socket address families (domains)
29 .SH SYNOPSIS
30 .BR "#include <sys/types.h>" "          /* See NOTES */"
31 .br
32 .B #include <sys/socket.h>
33 .PP
34 .BI "int socket(int " domain ", int " type ", int " protocol );
35 .SH DESCRIPTION
36 The
37 .I domain
38 argument of the
39 .BR socket (2)
40 specifies a communication domain; this selects the protocol
41 family which will be used for communication.
42 These families are defined in
43 .IR <sys/socket.h> .
44 The currently understood formats include:
45 .TP
46 .BR AF_UNIX ", " AF_LOCAL
47 Local communication
48 For further information, see
49 .BR unix (7).
50 .TP
51 .B AF_INET
52 IPv4 Internet protocols.
53 For further information, see
54 .BR ip (7).
55 .TP
56 .B AF_AX25
57 Amateur radio AX.25 protocol.
58 For further information, see
59 .BR ax25 (4).
60 .\" Part of ax25-tools
61 .TP
62 .B AF_IPX
63 IPX \- Novell protocols.
64 .TP
65 .B AF_APPLETALK
66 AppleTalk
67 For further information, see
68 .BR ddp (7).
69 .TP
70 .B AF_NETROM
71 AX.25 packet layer protocol.
72 For further information, see
73 .BR netrom (4),
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
77 .UE
78 and the
79 .IR AX.25 ", " NET/ROM ", and " "ROSE network programming"
80 chapters of the
81 .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html
82 .I Linux Amateur Radio AX.25 HOWTO
83 .UE .
84 .TP
85 .B AF_BRIDGE
86 Can't be used for creating sockets;
87 mostly used for bridge links in
88 .BR rtnetlink (7)
89 protocol commands.
90 .TP
91 .B AF_ATMPVC
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
95 .I ATM on Linux HOWTO
96 .UE .
97 .TP
98 .B AF_X25
99 ITU-T X.25 / ISO-8208 protocol.
100 For further information, see
101 .BR x25 (7).
103 .B AF_INET6
104 IPv6 Internet protocols.
105 For further information, see
106 .BR ipv6 (7).
108 .B AF_ROSE
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
112 .BR AF_NETROM .
114 .B AF_DECnet
115 DECet protocol sockets.
117 .I Documentation/networking/decnet.txt
118 in the Linux kernel source tree for details.
120 .B AF_NETBEUI
121 Reserved for "802.2LLC project"; never used.
123 .B AF_SECURITY
124 This was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family
125 for firewall upcalls.
127 .B AF_KEY
128 Key management protocol, originally developed for usage with IPsec
129 (since Linux 2.1.38).
130 This has no relation to
131 .BR keyctl (2)
132 and the in-kernel key storage facility.
134 .UR https://tools.ietf.org/html/rfc2367
135 RFC 2367
136 .I PF_KEY Key Management API, Version 2
138 for details.
140 .B AF_NETLINK
141 Kernel user interface device
142 For further information, see
143 .BR netlink (7).
145 .B AF_PACKET
146 Low-level packet interface.
147 For further information, see
148 .BR packet (7).
149 .\" .TP
150 .\" .B AF_ASH
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.
169 .B AF_ECONET
170 .\" commit: 349f29d841dbae854bd7367be7c250401f974f47
171 Acorn Econet protocol (removed in Linux 3.5).
172 See the
173 .UR http://www.8bs.com/othrdnld/manuals/econet.shtml
174 Econet documentation
176 for details.
178 .B AF_ATMSVC
179 Access to ATM Switched Virtual Circuits (SVCs)
180 See the
181 .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
182 .I ATM on Linux HOWTO
184 for details.
186 .B AF_RDS
187 .\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
188 Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30).
189 RDS over RDMA has no relation to
190 .B AF_SMC
192 .BR AF_XDP.
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
196 .BR rds (7),
197 .BR rds-rdma (7),
199 .I Documentation/networking/rds.txt
200 in the Linux kernel source tree.
202 .B AF_IRDA
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
208 .BR irda (7).
210 .B AF_PPPOX
211 Generic PPP transport layer, for setting up L2 tunnels
212 (L2TP and PPPoE).
214 .I Documentation/networking/l2tp.txt
215 in the Linux kernel source tree for details.
217 .B AF_WANPIPE
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.
223 .B AF_LLC
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
227 (since Linux 2.4);
228 has no relation to
229 .BR AF_PACKET.
230 See chapter
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)
239 for details.
240 See also
241 .UR https://wiki.linuxfoundation.org/networking/llc
242 some historical notes
244 regarding its development.
246 .B AF_IB
247 .\" commits: 8d36eb01da5d371f..ce117ffac2e93334
248 InfiniBand native addressing (since Linux 3.11).
250 .B AF_MPLS
251 .\" commits: 0189197f441602acdca3f97750d392a895b778fd
252 Multiprotocol Label Switching (since Linux 4.1);
253 mostly used for configuring MPLS routing via
254 .BR netlink (7),
255 as it doesn't expose ability to create sockets to user space.
257 .B AF_CAN
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.
264 .B AF_TIPC
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
271 and the
272 .UR http://tipc.io/protocol.html
273 protocol description
275 for details.
277 .B AF_BLUETOOTH
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
287 by Albert Huang
289 for details.
291 .B AF_IUCV
292 .\" commit: eac3731bd04c7131478722a3c148b78774553116
293 IUCV (inter-user communication vehicle) z/VM protocol
294 for hypervisor-guest interaction (since Linux 2.6.21);
295 has no relation to
296 .B AF_VSOCK
297 and/or
298 .BR AF_SMC
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
303 for details.
306 .B AF_RXRPC
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.
319 .B AF_ISDN
320 .\" commit: 1b2b03f8e514e4f68e293846ba511a948b80243c
321 New "modular ISDN" driver interface protocol (since Linux 2.6.27).
322 See the
323 .UR http://www.misdn.eu/wiki/Main_Page/
324 mISDN wiki
326 for details.
328 .B AF_PHONET
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.
335 .B AF_IEEE802154
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.
343 .B AF_CAIF
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.
354 .B AF_ALG
355 Interface to kernel crypto API (since Linux 2.6.38).
356 [18]
358 .I Documentation/crypto/userspace-if.rst
359 in the Linux kernel source tree for details.
361 .B AF_VSOCK
362 .\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
363 VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9);
364 has no relation to
365 .B AF_IUCV
367 .BR AF_SMC .
368 For further information, see
369 .BR vsock (7).
371 .B AF_KCM
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.
378 .B AF_QIPCRTR
379 .\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881
380 Qualcomm IPC router interface protocol (since Linux 4.7).
382 .B AF_SMC
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);
387 has no relation to
388 .BR AF_RDS ", " AF_IUCV
390 .BR AF_VSOCK .
392 .UR https://tools.ietf.org/html/rfc7609
393 RFC 7609
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.
403 .B AF_XDP
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.
409 .SH SEE ALSO
410 .BR socket (2),
411 .BR socket (7)