title: What type is socket type of value 0?
body: <p>I cannot see a socke type of value <code>0</code> in <code>enum __socket_type</code>:</p>
  <p><em>socket_type.h</em>:</p>
  <pre><code>/* Types of sockets.  */
  enum __socket_type
  {
    SOCK_STREAM = 1,      /* Sequenced, reliable, connection-based
                     byte streams.  */
  #define SOCK_STREAM SOCK_STREAM
    SOCK_DGRAM = 2,       /* Connectionless, unreliable datagrams
                     of fixed maximum length.  */
  #define SOCK_DGRAM SOCK_DGRAM
    SOCK_RAW = 3,         /* Raw protocol interface.  */
  #define SOCK_RAW SOCK_RAW
    SOCK_RDM = 4,         /* Reliably-delivered messages.  */
  #define SOCK_RDM SOCK_RDM
    SOCK_SEQPACKET = 5,       /* Sequenced, reliable, connection-based,
                     datagrams of fixed maximum length.  */
  #define SOCK_SEQPACKET SOCK_SEQPACKET
    SOCK_DCCP = 6,        /* Datagram Congestion Control Protocol.  */
  #define SOCK_DCCP SOCK_DCCP
    SOCK_PACKET = 10,     /* Linux specific way of getting packets
                     at the dev level.  For writing rarp and
                     other similar things on the user level. */
  #define SOCK_PACKET SOCK_PACKET
  
    /* Flags to be ORed into the type parameter of socket and socketpair and
       used for the flags parameter of paccept.  */
  
    SOCK_CLOEXEC = 02000000,  /* Atomically set close-on-exec flag for the
                     new descriptor(s).  */
  #define SOCK_CLOEXEC SOCK_CLOEXEC
    SOCK_NONBLOCK = 00004000  /* Atomically mark descriptor(s) as
                     non-blocking.  */
  #define SOCK_NONBLOCK SOCK_NONBLOCK
  };
  </code></pre>
  <p>But what if I do not specify <code>addrinfo</code> struct field <code>ai_socktype</code>? Then the value is <code>0</code>, and what kind of type is that, when there is no such type in <code>__socktype_type</code>?</p>