MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Sockets Library Functions                           inet(3SOCKET)



NAME
     inet, inet6,  inetntop,  inetpton,  inetaton,  inetaddr,
     inetnetwork,    inetmakeaddr,    inetlnaof,   inetnetof,
     inetntoa - Internet address manipulation

SYNOPSIS
     cc [ flag... ] file... -lsocket  -lnsl  [ library... ]
     #include 
     #include 
     #include 
     #include 

     const char *inetntop(int af, const void *addr, char *cp,
          sizet size);


     int inetpton(int af, const char *cp, void *addr);


     int inetaton(const char *cp, struct inaddr *addr);


     inaddrt inetaddr(const char *cp);


     inaddrt inetnetwork(const char *cp);


     struct inaddr inetmakeaddr(const int net, const int lna);


     int inetlnaof(const struct inaddr in);


     int inetnetof(const struct inaddr in);


     char *inetntoa(const struct inaddr in);


DESCRIPTION
     The inetntop() and  inetpton()  functions  can  manipulate
     both  IPv4 and IPv6 addresses. The inetaton(), inetaddr(),
     inetnetwork(),        inetmakeaddr(),        inetlnaof(),
     inetnetof(),  and inetntoa() functions can only manipulate
     IPv4 addresses.


     The inetntop() function converts a numeric address  into  a
     string  suitable for presentation. The af argument specifies
     the family of the address which can be AFINET or  AFINET6.
     The  addr  argument  points  to  a buffer that holds an IPv4



SunOS 5.11          Last change: 28 Nov 2007                    1






Sockets Library Functions                           inet(3SOCKET)



     address if the af argument is  AFINET.  The  addr  argument
     points  to  a  buffer  that  holds an IPv6 address if the af
     argument is AFINET6. The address must be  in  network  byte
     order. The cp argument points to a buffer where the function
     stores the resulting string. The application must specify  a
     non-NUL  cp  argument. The size argument specifies the size
     of this buffer. For IPv6 addresses, the buffer  must  be  at
     least  46-octets.  For IPv4 addresses, the buffer must be at
     least 16-octets. To allow  applications  to  easily  declare
     buffers  of the proper size to store IPv4 and IPv6 addresses
     in string form, the following two constants are  defined  in
     :

       #define INETADRSTRLEN    16
       #define INET6ADRSTRLEN   46



     The inetpton() function converts the standard text  presen-
     tation form of a function to the numeric binary form. The af
     argument specifies the family of the address. Currently, the
     AFINET  and AFINET6 address families are supported. The cp
     argument points to the string  being  passed  in.  The  addr
     argument  points  to  a buffer where the function stores the
     numeric address. The calling application  must  ensure  that
     the  buffer  referred to by addr is large enough to hold the
     numeric address, at least 4 bytes for AFINET  or  16  bytes
     for AFINET6.


     The inetaton(), inetaddr(), and  inetnetwork()  functions
     interpret character strings that represent numbers expressed
     in the IPv4 standard '.' notation, returning  numbers  suit-
     able  for  use  as  IPv4 addresses and IPv4 network numbers,
     respectively. The inetmakeaddr() function uses an IPv4 net-
     work number and a local network address to construct an IPv4
     address. The inetnetof() and inetlnaof()  functions  break
     apart  IPv4  host  addresses, then return the network number
     and local network address, respectively.


     The inetntoa() function returns a pointer to  a  string  in
     the  base 256 notation d.d.d.d. See the following section on
     IPv4 addresses.


     Internet addresses are  returned  in  network  order,  bytes
     ordered  from  left  to  right.  Network  numbers  and local
     address parts are returned as machine format integer values.

  IPv6 Addresses




SunOS 5.11          Last change: 28 Nov 2007                    2






Sockets Library Functions                           inet(3SOCKET)



     There are three conventional  forms  for  representing  IPv6
     addresses as strings:

         1.   The preferred form is  x:x:x:x:x:x:x:x,  where  the
              'x's are the hexadecimal values of the eight 16-bit
              pieces of the address. For example:

                1080:0:0:0:8:800:200C:417A

              It is not necessary to write the leading  zeros  in
              an  individual  field.  There  must be at least one
              numeral in every field,  except  when  the  special
              syntax described in the following is used.

         2.   It is common for addresses to contain long  strings
              of  zero bits in some methods used to allocate cer-
              tain IPv6  address  styles.  A  special  syntax  is
              available  to  compress  the zeros. The use of "::"
              indicates multiple groups of 16 bits of zeros.  The
              ::  may  only appear once in an address. The :: can
              also be used to compress the leading  and  trailing
              zeros in an address. For example:

                1080::8:800:200C:417A


         3.   The alternative form x:x:x:x:x:x:d.d.d.d  is  some-
              times  more  convenient  when  dealing with a mixed
              environment of IPv4 and IPv6 nodes. The x's in this
              form  represent  the  hexadecimal values of the six
              high-order 16-bit pieces of the  address.  The  d's
              represent  the decimal values of the four low-order
              8-bit pieces of  the  standard  IPv4  address.  For
              example:

                ::F:129.144.52.38
                ::129.144.52.38

              The ::F:d.d.d.d and  ::d.d.d.d  pieces  are  the
              general forms of an IPv4-mapped IPv6 address and an
              IPv4-compatible IPv6 address.

              The IPv4 portion must be in the d.d.d.d  form.  The
              following forms are invalid:

                ::F:d.d.d
                ::F:d.d
                ::d.d.d
                ::d.d

              The ::F:d form is  a  valid  but  unconventional
              representation  of the IPv4-compatible IPv6 address



SunOS 5.11          Last change: 28 Nov 2007                    3






Sockets Library Functions                           inet(3SOCKET)



              ::255.255.0.d.

              The  ::d  form  corresponds  to  the  general  IPv6
              address 0:0:0:0:0:0:0:d.

  IPv4 Addresses
     Values specified using `.' notation take one of the  follow-
     ing forms:

       d.d.d.d
       d.d.d
       d.d
       d



     When four parts are specified, each part is interpreted as a
     byte  of  data  and  assigned from left to right to the four
     bytes of an IPv4 address.


     When a three-part address is specified,  the  last  part  is
     interpreted  as  a  16-bit  quantity and placed in the right
     most two bytes  of  the  network  address.  The  three  part
     address  format is convenient for specifying Class B network
     addresses such as 128.net.host.


     When a two-part address is supplied, the last part is inter-
     preted  as  a  24-bit  quantity and placed in the right most
     three bytes of the network address.  The  two  part  address
     format   is   convenient  for  specifying  Class  A  network
     addresses such as net.host.


     When only one part is given, the value is stored directly in
     the network address without any byte rearrangement.


     With the exception of inetpton(), numbers supplied as parts
     in  '.'  notation  may be decimal, octal, or hexadecimal, as
     specified in C language. For example, a  leading  0x  or  0X
     implies  hexadecimal.  A leading 0 implies octal. Otherwise,
     the number is interpreted as decimal.


     For IPv4 addresses, inetpton() accepts  only  a  string  in
     standard IPv4 dot notation:

       d.d.d.d





SunOS 5.11          Last change: 28 Nov 2007                    4






Sockets Library Functions                           inet(3SOCKET)



     Each number has one to three digits  with  a  decimal  value
     between 0 and 255.


     The inetaddr() function has been obsoleted by inetaton().

RETURN VALUES
     The inetaton() function returns nonzero if the  address  is
     valid, 0 if the address is invalid.


     The inetntop() function returns a  pointer  to  the  buffer
     that  contains  a  string if the conversion succeeds. Other-
     wise, NUL is returned. Upon failure, errno is set  to  EAF-
     NOSUPORT  if  the  af  argument is invalid or ENOSPC if the
     size of the result buffer is inadequate.


     The  inetpton()  function  returns  1  if  the   conversion
     succeeds,  0 if the input is not a valid IPv4 dotted-decimal
     string or a valid  IPv6 address string. The function returns
     -1  with  errno  set  to  EAFNOSUPORT if the af argument is
     unknown.


     The value INADRNONE, which is equivalent to  (inaddrt)(-
     1),  is  returned by inetaddr() and inetnetwork() for mal-
     formed requests.


     The functions inetnetof() and inetlnaof() break apart IPv4
     host  addresses, returning the network number and local net-
     work address part, respectively.


     The function inetntoa() returns a pointer to  a  string  in
     the  base  256 notation d.d.d.d, described in the section on
     IPv4 addresses.

ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:













SunOS 5.11          Last change: 28 Nov 2007                    5






Sockets Library Functions                           inet(3SOCKET)



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Interface Stability          See below.                  
    
     MT-Level                     Safe                        
    



     The inetntop(), inetpton(), inetaton(), inetaddr(),  and
     inetnetwork()  functions  are  Committed. The inetlnaof(),
     inetmakeaddr(), inetnetof(), and inetnetwork()  functions
     are Committed (Obsolete).

SEE ALSO
     gethostbyname(3NSL),               getipnodebyname(3SOCKET),
     getnetbyname(3SOCKET), inet.h(3HEAD), hosts(4), networks(4),
     attributes(5)

NOTES
     The return value from inetntoa() points to a  buffer  which
     is  overwritten  on each call. This buffer is implemented as
     thread-specific data in multithreaded applications.


     IPv4-mapped addresses are not recommended.

BUGS
     The problem of host byte ordering versus network byte order-
     ing  is  confusing.  A simple way to specify Class C network
     addresses in a manner similar to that for Class B and  Class
     A is needed.






















SunOS 5.11          Last change: 28 Nov 2007                    6



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™