Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

16.6.2.2 Host Address Data Type

IPv4 Internet host addresses are represented in some contexts as integers (type uint32_t). In other contexts, the integer is packaged inside a structure of type struct in_addr. It would be better if the usage were made consistent, but it is not hard to extract the integer from the structure or put the integer into a structure.

You will find older code that uses unsigned long int for IPv4 Internet host addresses instead of uint32_t or struct in_addr. Historically unsigned long int was a 32-bit number but with 64-bit machines this has changed. Using unsigned long int might break the code if it is used on machines where this type doesn't have 32 bits. uint32_t is specified by Unix98 and guaranteed to have 32 bits.

IPv6 Internet host addresses have 128 bits and are packaged inside a structure of type struct in6_addr.

The following basic definitions for Internet addresses are declared in the header file netinet/in.h:

— Data Type: struct in_addr

This data type is used in certain contexts to contain an IPv4 Internet host address. It has just one field, named s_addr, which records the host address number as an uint32_t.

— Macro: uint32_t INADDR_LOOPBACK

You can use this constant to stand for “the address of this machine,” instead of finding its actual address. It is the IPv4 Internet address `127.0.0.1', which is usually called `localhost'. This special constant saves you the trouble of looking up the address of your own machine. Also, the system usually implements INADDR_LOOPBACK specially, avoiding any network traffic for the case of one machine talking to itself.

— Macro: uint32_t INADDR_ANY

You can use this constant to stand for “any incoming address” when binding to an address. See Setting Address. This is the usual address to give in the sin_addr member of struct sockaddr_in when you want to accept Internet connections.

— Macro: uint32_t INADDR_BROADCAST

This constant is the address you use to send a broadcast message.

— Macro: uint32_t INADDR_NONE

This constant is returned by some functions to indicate an error.

— Data Type: struct in6_addr

This data type is used to store an IPv6 address. It stores 128 bits of data, which can be accessed (via a union) in a variety of ways.

— Constant: struct in6_addr in6addr_loopback

This constant is the IPv6 address `::1', the loopback address. See above for a description of what this means. The macro IN6ADDR_LOOPBACK_INIT is provided to allow you to initialize your own variables to this value.

— Constant: struct in6_addr in6addr_any

This constant is the IPv6 address `::', the unspecified address. See above for a description of what this means. The macro IN6ADDR_ANY_INIT is provided to allow you to initialize your own variables to this value.


 
 
  Published under the terms of the GNU General Public License Design by Interspire