NAME

  tst_lo_addr - IPv6 Loopback Address


PURPOSE

  Test IPv6 Loopback Address


SYNOPSIS

  ./tst_addr_and_pro_family [-tooloption ...]
    -tooloption : v6api tool option


TEST PROCEDURE

  1. Test global variable in6addr_loopback
  2. Test symbolic constant IN6ADDR_LOOPBACK_INIT


NOTE

  None


REFERENCE

  RFC 3493
  3.9 IPv6 Loopback Address
     Applications may need to send UDP packets to, or originate TCP
     connections to, services residing on the local node.  In IPv4, they
     can do this by using the constant IPv4 address INADDR_LOOPBACK in
     their connect(), sendto(), or sendmsg() call.
  
     IPv6 also provides a loopback address to contact local TCP and UDP
     services.  Like the unspecified address, the IPv6 loopback address is
     provided in two forms -- a global variable and a symbolic constant.
  
     The global variable is an in6_addr structure named
     "in6addr_loopback."  The extern declaration for this variable is
     defined in <netinet/in.h>:
  
        extern const struct in6_addr in6addr_loopback;
  
     Applications use in6addr_loopback as they would use INADDR_LOOPBACK
     in IPv4 applications (but beware of the byte ordering difference
     mentioned at the end of the previous section).  For example, to open
     a TCP connection to the local telnet server, an application could use
     the following code:
  
     struct sockaddr_in6 sin6;
      . . .
     sin6.sin6_family = AF_INET6;
     sin6.sin6_flowinfo = 0;
     sin6.sin6_port = htons(23);
     sin6.sin6_addr = in6addr_loopback;  /* structure assignment */
      . . .
     if (connect(s, (struct sockaddr *) &sin6, sizeof(sin6)) == -1)
             . . .
  
     The symbolic constant is named IN6ADDR_LOOPBACK_INIT and is defined
     in <netinet/in.h>.  It can be used at declaration time ONLY; for
     example:
  
        struct in6_addr loopbackaddr = IN6ADDR_LOOPBACK_INIT;
  
     Like IN6ADDR_ANY_INIT, this constant cannot be used in an assignment
     to a previously declared IPv6 address variable.