Hi Eugene, On 10/16/2018 05:36 AM, Eugene Syromyatnikov wrote: > Add some information about some other address families present in > <linux/socket.h>. Thanks! What an extraordinary amount of detail! I merged this patch, but have then moved most of the detail into a separate, new page, address_families(7). (Take a look...) Cheers, Michael > Signed-off-by: Eugene Syromyatnikov <evgsyr@xxxxxxxxx> > --- > man2/socket.2 | 489 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 473 insertions(+), 16 deletions(-) > > diff --git a/man2/socket.2 b/man2/socket.2 > index 133f4a2..bc9e67a 100644 > --- a/man2/socket.2 > +++ b/man2/socket.2 > @@ -80,19 +80,44 @@ T}:IPv4 Internet protocols:T{ > .BR ip (7) > T} > T{ > -.B AF_INET6 > -T}:IPv6 Internet protocols:T{ > -.BR ipv6 (7) > +.B AF_AX25 > +T}:T{ > +Amateur radio AX.25 protocol > +T}:T{ > +.\" Part of ax25-tools > +.BR ax25 (4) > T} > T{ > .B AF_IPX > T}:IPX \- Novell protocols: > T{ > -.B AF_NETLINK > +.B AF_APPLETALK > +T}:AppleTalk:T{ > +.BR ddp (7) > +T} > +T{ > +.B AF_NETROM > T}:T{ > -Kernel user interface device > +AX.25 packet layer protocol > T}:T{ > -.BR netlink (7) > +.\" Part of ax25-tools package > +.BR netrom (4), > +[1] > +T} > +T{ > +.B AF_BRIDGE > +T}:T{ > +Can't be used for creating sockets; > +mostly used for bridge links in > +.BR rtnetlink (7) > +protocol commands. > +T} > +T{ > +.B AF_ATMPVC > +T}:T{ > +Access to raw ATM Permanent Virtual Circuits (PVCs) > +T}:T{ > +[2] > T} > T{ > .B AF_X25 > @@ -100,17 +125,55 @@ T}:ITU-T X.25 / ISO-8208 protocol:T{ > .BR x25 (7) > T} > T{ > -.B AF_AX25 > +.B AF_INET6 > +T}:IPv6 Internet protocols:T{ > +.BR ipv6 (7) > +T} > +T{ > +.B AF_ROSE > T}:T{ > -Amateur radio AX.25 protocol > -T}: > +RATS (Radio Amateur Telecommunications Society) > +Open Systems environment (ROSE) AX.25 packet layer protocol. > +T}:T{ > +.\" Part of ax25-tools package > +.BR netrom (4), > +[1] > +T} > T{ > -.B AF_ATMPVC > -T}:Access to raw ATM PVCs: > +.B AF_DECnet > +T}:T{ > +DECet protocol sockets. > +T}:T{ > +[3] > +T} > T{ > -.B AF_APPLETALK > -T}:AppleTalk:T{ > -.BR ddp (7) > +.B AF_NETBEUI > +T}:T{ > +Reserved for "802.2LLC project", never used. > +T} > +T{ > +.B AF_SECURITY > +T}:T{ > +Was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family > +for firewall upcalls. > +T} > +T{ > +.B AF_KEY > +T}:T{ > +Key management protocol, originally developed for usage with IPsec. > +Has no relation to > +.BR keyctl (2) > +and related in-kernel key storage facility. > +(since Linux 2.1.38.) > +T}:T{ > +[4] > +T} > +T{ > +.B AF_NETLINK > +T}:T{ > +Kernel user interface device > +T}:T{ > +.BR netlink (7) > T} > T{ > .B AF_PACKET > @@ -119,17 +182,411 @@ Low level packet interface > T}:T{ > .BR packet (7) > T} > +.\" 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. > +.\" T{ > +.\" .B AF_ASH > +.\" T}:T{ > +.\" Asynchronous Serial Host protocol (?) > +.\" T} > +T{ > +.B AF_ECONET > +T}:T{ > +.\" commit: 349f29d841dbae854bd7367be7c250401f974f47 > +Acorn Econet protocol (removed in Linux 3.5) > +T}:T{ > +[5] > +T} > +T{ > +.B AF_ATMSVC > +T}:T{ > +Access to ATM Switched Virtual Circuits (SVCs) > +T}:T{ > +[2] > +T} > +T{ > +.B AF_RDS > +T}:T{ > +.\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4 > +Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30). > +RDS over RDMA has no relation to > +.B AF_SMC > +and/or > +.BR AF_XDP . > +T}:T{ > +.\" 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), " rds-rdma (7), > +[6] > +T} > +T{ > +.B AF_IRDA > +T}:T{ > +.\" commits: 1ca163afb6fd569b, d64c2a76123f0300 > +Socket interface over IrDA > +(moved to staging in Linux 4.14, removed in Linux 4.17) > +T}:T{ > +.\" irda-utils: https://sourceforge.net/p/irda/code/HEAD/tree/tags/IRDAUTILS_0_9_18/irda-utils/man/irda.7.gz?format=raw > +.BR irda (7) > +T} > +T{ > +.B AF_PPPOX > +T}:T{ > +Generic PPP transport layer, for setting up up L2 tunnels > +(L2TP and PPPoE). > +T}:T{ > +[7] > +T} > +T{ > +.B AF_WANPIPE > +T}:T{ > +.\" 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. > +T} > +T{ > +.B AF_LLC > +T}:T{ > +.\" 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 . > +T}:T{ > +[8] > +T} > +T{ > +.B AF_IB > +T}:T{ > +.\" commits: 8d36eb01da5d371f..ce117ffac2e93334 > +InfiniBand native addressing (since Linux 3.11) > +T} > +T{ > +.B AF_MPLS > +T}:T{ > +.\" commits: 0189197f441602acdca3f97750d392a895b778fd > +Multiprotocol Label Switching configu (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. > +T} > +T{ > +.B AF_CAN > +T}:T{ > +.\" commits: 8dbde28d9711475a..5423dd67bd0108a1 > +Controller Area Network automotive bus protocol (since Linux 2.6.25) > +T}:T{ > +[9] > +T} > +T{ > +.B AF_TIPC > +T}:T{ > +.\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4 > +TIPC, "cluster domain sockets" protocol (since Linux 2.6.16) > +T}:T{ > +[10] > +T} > +T{ > +.B AF_BLUETOOTH > +T}:T{ > +.\" commits: 8d36eb01da5d371f..ce117ffac2e93334 > +Bluetooth low-level socket protocol (since Linux 3.11) > +T}:T{ > +[11] > +T} > +T{ > +.B AF_IUCV > +T}:T{ > +.\" 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 . > +T}:T{ > +[12] > +T} > +T{ > +.B AF_RXRPC > +T}:T{ > +.\" 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) > +T}:T{ > +[13] > +T} > +T{ > +.B AF_ISDN > +T}:T{ > +.\" commit: 1b2b03f8e514e4f68e293846ba511a948b80243c > +New "modular ISDN" driver interface protocol (since Linux 2.6.27) > +T}:T{ > +[14] > +T} > +T{ > +.B AF_PHONET > +T}:T{ > +.\" commit: 4b07b3f69a8471cdc142c51461a331226fef248a > +Nokia cellular modem IPC/RPC interface (since Linux 2.6.31) > +T}:T{ > +[15] > +T} > +T{ > +.B AF_IEEE802154 > +T}:T{ > +.\" commit: 9ec7671603573ede31207eb5b0b3e1aa211b2854 > +IEEE 802.15.4 WPAN (wireless personal area network) raw packet protocol > +(since Linux 2.6.31) > +T}:T{ > +[16] > +T} > +T{ > +.B AF_CAIF > +T}:T{ > +.\" 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) > +T}:T{ > +[17] > +T} > T{ > .B AF_ALG > T}:T{ > -Interface to kernel crypto API > +.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314 > +Interface to kernel crypto API (since Linux 2.6.38) > +T}:T{ > +[18] > +T} > +T{ > +.B AF_VSOCK > +T}:T{ > +.\" commit: d021c344051af91f42c5ba9fdedc176740cbd238 > +VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9). > +Has no relation to > +.B AF_IUCV > +and/or > +.BR AF_SMC . > +T}:T{ > +.BR vsock (7) > +T} > +T{ > +.B AF_KCM > +T}:T{ > +.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314 > +KCM (kernel connection multiplexor) interface (since Linux 4.6) > +T}:T{ > +[19] > +T} > +T{ > +.B AF_QIPCRTR > +T}:T{ > +.\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881 > +Qualcomm IPC router interface protocol (since Linux 4.7) > +T} > +T{ > +.B AF_SMC > +T}:T{ > +.\" 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 > +and/org > +.BR AF_VSOCK . > +T}:T{ > +[20] > T} > T{ > .B AF_XDP > T}:T{ > -XDP (express data path) interface > +.\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7 > +XDP (express data path) interface (since Linux 4.18) > +T}:T{ > +[21] > T} > .TE > +.TP 5 > +[1] > +See > +.UR https://www.tldp.org/HOWTO/AX25-HOWTO/x61.html > +.I The Packet Radio Protocols and Linux > +.UE > +and > +.UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html > +.I AX.25, NET/ROM, ROSE network programming > +.UE > +chapters of > +.I Linux Amateur Radio AX.25 HOWTO > +for details. > +.TQ > +[2] > +See > +.UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO > +.I ATM on Linux HOWTO > +.UE > +for details. > +.TQ > +[3] > +See > +.I Documentation/networking/decnet.txt > +in the Linux kernel source tree for details. > +.TQ > +[4] > +See > +.UR https://tools.ietf.org/html/rfc2367 > +RFC 2367 > +.I PF_KEY Key Management API, Version 2 > +.UE > +for details. > +.TQ > +[5] > +See > +.UR http://www.8bs.com/othrdnld/manuals/econet.shtml > +Econet documentation > +.UE > +for details. > +.TQ > +[6] > +See > +.I Documentation/networking/rds.txt > +in the Linux kernel source tree for details. > +.TQ > +[7] > +See > +.I Documentation/networking/l2tp.txt > +in the Linux kernel source tree for details. > +.TQ > +[8] > +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 historic notes > +.UE > +regarding its development. > +.TQ > +[9] > +See > +.I Documentation/networking/can.rst > +in the Linux kernel source tree for details. > +.TQ > +[10] > +See > +.UR http://tipc.io/programming.html > +.I TIPC Programmer's Guide > +.UE > +and > +.UR http://tipc.io/protocol.html > +protocol description > +.UE > +for details. > +.TQ > +[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. > +.TQ > +[12] > +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. > +.TQ > +[13] > +See > +.I Documentation/networking/rxrpc.txt > +in the Linux kernel source tree for details. > +.TQ > +[14] > +See > +.UR http://www.misdn.eu/wiki/Main_Page/ > +mISDN wiki > +.UE > +for details. > +.TQ > +[15] > +See > +.I Documentation/networking/phonet.txt > +in the Linux kernel source tree for details. > +.TQ > +[16] > +See > +.I Documentation/networking/ieee802154.txt > +in the Linux kernel source tree for details. > +.TQ > +[17] > +See > +.I Documentation/networking/caif/Linux-CAIF.txt > +in the Linux kernel source tree for details. > +.TQ > +[18] > +See > +.I Documentation/crypto/userspace-if.rst > +in the Linux kernel source tree for details. > +.TQ > +[19] > +See > +.I Documentation/networking/kcm.txt > +in the Linux kernel source tree for details. > +.TQ > +[20] > +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. > +.TQ > +[21] > +See > +.I Documentation/networking/af_xdp.rst > +in the Linux kernel source tree for details. > .PP > The socket has the indicated > .IR type , > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/