Provided by: manpages_5.05-1_all bug


       address_families - socket address families (domains)


       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int socket(int domain, int type, int protocol);


       The  domain  argument  of the socket(2) specifies a communication domain; this selects the
       protocol family which will be used for  communication.   These  families  are  defined  in
       <sys/socket.h>.  The formats currently understood by the Linux kernel include:

              Local communication For further information, see unix(7).

              IPv4 Internet protocols.  For further information, see ip(7).

              Amateur radio AX.25 protocol.  For further information, see ax25(4).

       AF_IPX IPX - Novell protocols.

              AppleTalk For further information, see ddp(7).

              AX.25  packet  layer  protocol.  For further information, see netrom(4), The Packet
              Radio Protocols and Linux ⟨⟩ and  the
              AX.25,  NET/ROM,  and  ROSE network programming chapters of the Linux Amateur Radio
              AX.25 HOWTO ⟨⟩.

              Can't be used for creating sockets; mostly used for bridge  links  in  rtnetlink(7)
              protocol commands.

              Access  to raw ATM Permanent Virtual Circuits (PVCs).  For further information, see
              the ATM on Linux HOWTO ⟨⟩.

       AF_X25 ITU-T X.25 / ISO-8208 protocol.  For further information, see x25(7).

              IPv6 Internet protocols.  For further information, see ipv6(7).

              RATS (Radio Amateur Telecommunications Society)  Open  Systems  environment  (ROSE)
              AX.25 packet layer protocol.  For further information, see the resources listed for

              DECet protocol  sockets.   See  Documentation/networking/decnet.txt  in  the  Linux
              kernel source tree for details.

              Reserved for "802.2LLC project"; never used.

              This  was  a  short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family for
              firewall upcalls.

       AF_KEY Key management protocol, originally developed for usage  with  IPsec  (since  Linux
              2.1.38).  This has no relation to keyctl(2) and the in-kernel key storage facility.
              See     RFC     2367     PF_KEY     Key     Management     API,      Version      2
              ⟨⟩ for details.

              Kernel user interface device For further information, see netlink(7).

              Low-level packet interface.  For further information, see packet(7).

              Acorn  Econet  protocol  (removed  in  Linux  3.5).   See  the Econet documentation
              ⟨⟩ for details.

              Access to ATM  Switched  Virtual  Circuits  (SVCs)  See  the  ATM  on  Linux  HOWTO
              ⟨⟩ for details.

       AF_RDS Reliable  Datagram  Sockets (RDS) protocol (since Linux 2.6.30).  RDS over RDMA has
              no relation to AF_SMC or AF_XDP.  For further information see rds(7),  rds-rdma(7),
              and Documentation/networking/rds.txt in the Linux kernel source tree.

              Socket interface over IrDA (moved to staging in Linux 4.14, removed in Linux 4.17).
              For further information see irda(7).

              Generic PPP transport layer, for setting up  L2  tunnels  (L2TP  and  PPPoE).   See
              Documentation/networking/l2tp.txt in the Linux kernel source tree for details.

              Legacy  protocol  for wide area network (WAN) connectivity that was used by Sangoma
              WAN cards (called "WANPIPE"); removed in Linux 2.6.21.

       AF_LLC 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 AF_PACKET.
              See chapter 13.5.3. Logical Link Control in Understanding  Linux  Kernel  Internals
              (O'Reilly  Media,  2006)  and  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   some   historical   notes
              ⟨⟩ regarding its development.

       AF_IB  InfiniBand native addressing (since Linux 3.11).

              Multiprotocol Label Switching (since Linux 4.1); mostly used for  configuring  MPLS
              routing  via  netlink(7),  as  it  doesn't expose ability to create sockets to user

       AF_CAN Controller  Area  Network  automotive  bus  protocol  (since  Linux  2.6.25).   See
              Documentation/networking/can.rst in the Linux kernel source tree for details.

              TIPC,   "cluster   domain   sockets"  protocol  (since  Linux  2.6.16).   See  TIPC
              Programmer's Guide⟩ and the  protocol  description
              ⟨⟩ for details.

              Bluetooth  low-level  socket protocol (since Linux 3.11).  See Bluetooth Management
              API   overview   ⟨
              api.txt⟩   and   An   Introduction   to   Bluetooth  Programming  by  Albert  Huang
              ⟨⟩ for details.

              IUCV  (inter-user  communication  vehicle)  z/VM  protocol   for   hypervisor-guest
              interaction  (since  Linux  2.6.21);  has no relation to AF_VSOCK and/or AF_SMC See
              IUCV protocol overview ⟨
              /⟩ for details.
              Rx,  Andrew  File  System remote procedure call protocol (since Linux 2.6.22).  See
              Documentation/networking/rxrpc.txt in the Linux kernel source tree for details.

              New "modular ISDN" driver interface protocol (since Linux 2.6.27).  See  the  mISDN
              wiki ⟨⟩ for details.

              Nokia    cellular    modem   IPC/RPC   interface   (since   Linux   2.6.31).    See
              Documentation/networking/phonet.txt in the Linux kernel source tree for details.

              IEEE 802.15.4 WPAN (wireless personal area  network)  raw  packet  protocol  (since
              Linux  2.6.31).   See  Documentation/networking/ieee802154.txt  in the Linux kernel
              source tree for details.

              Ericsson's Communication CPU to Application CPU interface  (CAIF)  protocol  (since
              Linux  2.6.36).   See  Documentation/networking/caif/Linux-CAIF.txt  in  the  Linux
              kernel source tree for details.

       AF_ALG Interface    to    kernel    crypto    API    (since    Linux     2.6.38).      See
              Documentation/crypto/userspace-if.rst in the Linux kernel source tree for details.

              VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9); has no
              relation to AF_IUCV and AF_SMC.  For further information, see vsock(7).

       AF_KCM KCM  (kernel  connection   multiplexor)   interface   (since   Linux   4.6).    See
              Documentation/networking/kcm.txt in the Linux kernel source tree for details.

              Qualcomm IPC router interface protocol (since Linux 4.7).

       AF_SMC 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 AF_RDS, AF_IUCV or
              AF_VSOCK.  See RFC 7609  IBM's  Shared  Memory  Communications  over  RDMA  (SMC-R)
              Protocol  ⟨⟩  for  details regarding SMC-R.  See
              SMC-D  Reference  Information   ⟨
              /SMC-D/index.html⟩ for details regarding SMC-D.

       AF_XDP XDP     (express    data    path)    interface    (since    Linux    4.18).     See
              Documentation/networking/af_xdp.rst in the Linux kernel source tree for details.


       socket(2), socket(7)


       This page is part of release 5.05 of the Linux man-pages project.  A  description  of  the
       project,  information  about  reporting  bugs, and the latest version of this page, can be
       found at