inet_aton,    inet_addr,    inet_network,   inet_ntoa,   inet_makeaddr,
   inet_lnaof, inet_netof - Internet address manipulation routines


   #include <sys/socket.h>
   #include <netinet/in.h>
   #include <arpa/inet.h>

   int inet_aton(const char *cp, struct in_addr *inp);

   in_addr_t inet_addr(const char *cp);

   in_addr_t inet_network(const char *cp);

   char *inet_ntoa(struct in_addr in);

   struct in_addr inet_makeaddr(in_addr_t net, in_addr_t host);

   in_addr_t inet_lnaof(struct in_addr in);

   in_addr_t inet_netof(struct in_addr in);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

   inet_aton(), inet_ntoa():
       Since glibc 2.19:
       In glibc up to and including 2.19:
           _BSD_SOURCE || _BSD_SOURCE


   inet_aton() converts  the  Internet  host  address  cp  from  the  IPv4
   numbers-and-dots  notation into binary form (in network byte order) and
   stores it in the structure that inp  points  to.   inet_aton()  returns
   nonzero  if the address is valid, zero if not.  The address supplied in
   cp can have one of the following forms:

   a.b.c.d   Each of the four  numeric  parts  specifies  a  byte  of  the
             address;  the  bytes  are  assigned in left-to-right order to
             produce the binary address.

   a.b.c     Parts a and b specify the  first  two  bytes  of  the  binary
             address.   Part  c  is  interpreted  as  a  16-bit value that
             defines the rightmost two bytes of the binary address.   This
             notation  is  suitable  for  specifying  (outmoded)  Class  B
             network addresses.

   a.b       Part a specifies the first byte of the binary address.   Part
             b is interpreted as a 24-bit value that defines the rightmost
             three bytes of the binary address.  This notation is suitable
             for specifying (outmoded) Class A network addresses.

   a         The  value  a is interpreted as a 32-bit value that is stored
             directly  into  the   binary   address   without   any   byte

   In  all  of  the  above  forms, components of the dotted address can be
   specified in decimal, octal (with a leading 0), or hexadecimal, with  a
   leading  0X).   Addresses in any of these forms are collectively termed
   IPV4 numbers-and-dots  notation.   The  form  that  uses  exactly  four
   decimal  numbers  is  referred  to  as IPv4 dotted-decimal notation (or
   sometimes: IPv4 dotted-quad notation).

   inet_aton()  returns  1  if  the  supplied  string   was   successfully
   interpreted, or 0 if the string is invalid (errno is not set on error).

   The  inet_addr()  function  converts  the Internet host address cp from
   IPv4 numbers-and-dots notation into binary data in network byte  order.
   If  the input is invalid, INADDR_NONE (usually -1) is returned.  Use of
   this  function  is  problematic  because  -1   is   a   valid   address
   (    Avoid   its   use   in   favor   of  inet_aton(),
   inet_pton(3),  or  getaddrinfo(3),  which  provide  a  cleaner  way  to
   indicate error return.

   The  inet_network() function converts cp, a string in IPv4 numbers-and-
   dots notation, into a number in host byte order suitable for use as  an
   Internet  network  address.   On  success,  the  converted  address  is
   returned.  If the input is invalid, -1 is returned.

   The inet_ntoa() function converts the Internet host address  in,  given
   in  network  byte  order,  to a string in IPv4 dotted-decimal notation.
   The  string  is  returned  in  a  statically  allocated  buffer,  which
   subsequent calls will overwrite.

   The inet_lnaof() function returns the local network address part of the
   Internet address in.  The returned value is in host byte order.

   The inet_netof() function  returns  the  network  number  part  of  the
   Internet address in.  The returned value is in host byte order.

   The  inet_makeaddr()  function  is  the  converse  of  inet_netof() and
   inet_lnaof().  It returns an Internet  host  address  in  network  byte
   order,  created  by  combining  the  network  number net with the local
   address host, both in host byte order.

   The  structure  in_addr  as  used  in   inet_ntoa(),   inet_makeaddr(),
   inet_lnaof() and inet_netof() is defined in <netinet/in.h> as:

       typedef uint32_t in_addr_t;

       struct in_addr {
           in_addr_t s_addr;


   For   an   explanation   of   the  terms  used  in  this  section,  see

   Interface                       Attribute      Value          
   inet_aton(), inet_addr(),       Thread safety  MT-Safe locale 
   inet_network(), inet_ntoa()                                   
   inet_makeaddr(), inet_lnaof(),  Thread safety  MT-Safe        


   inet_addr(), inet_ntoa(): POSIX.1-2001, POSIX.1-2008, 4.3BSD.

   inet_aton() is not specified in  POSIX.1,  but  is  available  on  most


   On  x86  architectures,  the  host byte order is Least Significant Byte
   first (little endian), whereas the network byte order, as used  on  the
   Internet, is Most Significant Byte first (big endian).

   inet_lnaof(),  inet_netof(),  and  inet_makeaddr() are legacy functions
   that assume they are dealing with classful network addresses.  Classful
   networking  divides  IPv4  network  addresses  into  host  and  network
   components at byte boundaries, as follows:

   Class A   This address type is indicated by the value  0  in  the  most
             significant  bit  of the (network byte ordered) address.  The
             network address is contained in the  most  significant  byte,
             and the host address occupies the remaining three bytes.

   Class B   This  address type is indicated by the binary value 10 in the
             most significant  two  bits  of  the  address.   The  network
             address  is  contained in the two most significant bytes, and
             the host address occupies the remaining two bytes.

   Class C   This address type is indicated by the binary value 110 in the
             most  significant  three  bits  of  the address.  The network
             address is contained in the three most significant bytes, and
             the host address occupies the remaining byte.

   Classful  network addresses are now obsolete, having been superseded by
   Classless Inter-Domain Routing (CIDR),  which  divides  addresses  into
   network  and  host  components  at  arbitrary  bit  (rather  than byte)


   An example of the use of inet_aton() and inet_ntoa()  is  shown  below.
   Here are some example runs:

       $ ./a.out      # Last byte is in octal
       $ ./a.out 0x7f.1               # First byte is in hex

   Program source

   #define _BSD_SOURCE
   #include <arpa/inet.h>
   #include <stdio.h>
   #include <stdlib.h>

   main(int argc, char *argv[])
       struct in_addr addr;

       if (argc != 2) {
           fprintf(stderr, "%s <dotted-address>\n", argv[0]);

       if (inet_aton(argv[1], &addr) == 0) {
           fprintf(stderr, "Invalid address\n");

       printf("%s\n", inet_ntoa(addr));


   byteorder(3),    getaddrinfo(3),    gethostbyname(3),   getnameinfo(3),
   getnetent(3), inet_net_pton(3), inet_ntop(3),  inet_pton(3),  hosts(5),


   This  page  is  part of release 4.09 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


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.