close_range.2: Glibc added a wrapper recently
[man-pages.git] / man7 / address_families.7
blob3e535e66ddd498850a141e810129db80979f2a4a
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 2021-03-22 "Linux" "Linux Programmer's Manual"
27 .SH NAME
28 address_families \- socket address families (domains)
29 .SH SYNOPSIS
30 .nf
31 .BR "#include <sys/types.h>" "          /* See NOTES */"
32 .B #include <sys/socket.h>
33 .PP
34 .BI "int socket(int " domain ", int " type ", int " protocol );
35 .fi
36 .SH DESCRIPTION
37 The
38 .I domain
39 argument of the
40 .BR socket (2)
41 specifies a communication domain; this selects the protocol
42 family which will be used for communication.
43 These families are defined in
44 .IR <sys/socket.h> .
45 The formats currently understood by the Linux kernel include:
46 .TP
47 .BR AF_UNIX ", " AF_LOCAL
48 Local communication
49 For further information, see
50 .BR unix (7).
51 .TP
52 .B AF_INET
53 IPv4 Internet protocols.
54 For further information, see
55 .BR ip (7).
56 .TP
57 .B AF_AX25
58 Amateur radio AX.25 protocol.
59 For further information, see
60 .BR ax25 (4).
61 .\" Part of ax25-tools
62 .TP
63 .B AF_IPX
64 IPX \- Novell protocols.
65 .TP
66 .B AF_APPLETALK
67 AppleTalk
68 For further information, see
69 .BR ddp (7).
70 .TP
71 .B AF_NETROM
72 AX.25 packet layer protocol.
73 For further information, see
74 .BR netrom (4),
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
78 .UE
79 and the
80 .IR AX.25 ", " NET/ROM ", and " "ROSE network programming"
81 chapters of the
82 .UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html
83 .I Linux Amateur Radio AX.25 HOWTO
84 .UE .
85 .TP
86 .B AF_BRIDGE
87 Can't be used for creating sockets;
88 mostly used for bridge links in
89 .BR rtnetlink (7)
90 protocol commands.
91 .TP
92 .B AF_ATMPVC
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
96 .I ATM on Linux HOWTO
97 .UE .
98 .TP
99 .B AF_X25
100 ITU-T X.25 / ISO-8208 protocol.
101 For further information, see
102 .BR x25 (7).
104 .B AF_INET6
105 IPv6 Internet protocols.
106 For further information, see
107 .BR ipv6 (7).
109 .B AF_ROSE
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
113 .BR AF_NETROM .
115 .B AF_DECnet
116 DECet protocol sockets.
118 .I Documentation/networking/decnet.txt
119 in the Linux kernel source tree for details.
121 .B AF_NETBEUI
122 Reserved for "802.2LLC project"; never used.
124 .B AF_SECURITY
125 This was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family
126 for firewall upcalls.
128 .B AF_KEY
129 Key management protocol, originally developed for usage with IPsec
130 (since Linux 2.1.38).
131 This has no relation to
132 .BR keyctl (2)
133 and the in-kernel key storage facility.
135 .UR https://tools.ietf.org/html/rfc2367
136 RFC 2367
137 .I PF_KEY Key Management API, Version 2
139 for details.
141 .B AF_NETLINK
142 Kernel user interface device
143 For further information, see
144 .BR netlink (7).
146 .B AF_PACKET
147 Low-level packet interface.
148 For further information, see
149 .BR packet (7).
150 .\" .TP
151 .\" .B AF_ASH
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.
170 .B AF_ECONET
171 .\" commit: 349f29d841dbae854bd7367be7c250401f974f47
172 Acorn Econet protocol (removed in Linux 3.5).
173 See the
174 .UR http://www.8bs.com/othrdnld/manuals/econet.shtml
175 Econet documentation
177 for details.
179 .B AF_ATMSVC
180 Access to ATM Switched Virtual Circuits (SVCs)
181 See the
182 .UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
183 .I ATM on Linux HOWTO
185 for details.
187 .B AF_RDS
188 .\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
189 Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30).
190 RDS over RDMA has no relation to
191 .B AF_SMC
193 .BR AF_XDP .
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
197 .BR rds (7),
198 .BR rds\-rdma (7),
200 .I Documentation/networking/rds.txt
201 in the Linux kernel source tree.
203 .B AF_IRDA
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
209 .BR irda (7).
211 .B AF_PPPOX
212 Generic PPP transport layer, for setting up L2 tunnels
213 (L2TP and PPPoE).
215 .I Documentation/networking/l2tp.txt
216 in the Linux kernel source tree for details.
218 .B AF_WANPIPE
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.
224 .B AF_LLC
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
228 (since Linux 2.4);
229 has no relation to
230 .BR AF_PACKET .
231 See chapter
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)
240 for details.
241 See also
242 .UR https://wiki.linuxfoundation.org/networking/llc
243 some historical notes
245 regarding its development.
247 .B AF_IB
248 .\" commits: 8d36eb01da5d371f..ce117ffac2e93334
249 InfiniBand native addressing (since Linux 3.11).
251 .B AF_MPLS
252 .\" commits: 0189197f441602acdca3f97750d392a895b778fd
253 Multiprotocol Label Switching (since Linux 4.1);
254 mostly used for configuring MPLS routing via
255 .BR netlink (7),
256 as it doesn't expose ability to create sockets to user space.
258 .B AF_CAN
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.
265 .B AF_TIPC
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
272 and the
273 .UR http://tipc.io/protocol.html
274 protocol description
276 for details.
278 .B AF_BLUETOOTH
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
288 by Albert Huang
290 for details.
292 .B AF_IUCV
293 .\" commit: eac3731bd04c7131478722a3c148b78774553116
294 IUCV (inter-user communication vehicle) z/VM protocol
295 for hypervisor-guest interaction (since Linux 2.6.21);
296 has no relation to
297 .B AF_VSOCK
298 and/or
299 .BR AF_SMC
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
304 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).
357 .I Documentation/crypto/userspace\-if.rst
358 in the Linux kernel source tree for details.
360 .B AF_VSOCK
361 .\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
362 VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9);
363 has no relation to
364 .B AF_IUCV
366 .BR AF_SMC .
367 For further information, see
368 .BR vsock (7).
370 .B AF_KCM
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.
377 .B AF_QIPCRTR
378 .\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881
379 Qualcomm IPC router interface protocol (since Linux 4.7).
381 .B AF_SMC
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);
386 has no relation to
387 .BR AF_RDS ", " AF_IUCV
389 .BR AF_VSOCK .
391 .UR https://tools.ietf.org/html/rfc7609
392 RFC 7609
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.
402 .B AF_XDP
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.
408 .SH SEE ALSO
409 .BR socket (2),
410 .BR socket (7)