# Internet Address Module
[Operating System Abstraction]

This module handles internet addresses. More...

## Capabilities of this module

#define | GWEN_INETADDR_CAPS_AF_TCP 0x00000001
#define | GWEN_INETADDR_CAPS_AF_UNIX 0x00000002
GWENHYWFAR_API GWEN_TYPE_UINT32 | GWEN_InetAddr_GetCapabilities ()

## Error Codes

#define | GWEN_INETADDR_ERROR_BAD_ADDRESS 2
#define | GWEN_INETADDR_ERROR_BAD_ADDRESS_FAMILY 9
#define | GWEN_INETADDR_ERROR_BUFFER_OVERFLOW 3
#define | GWEN_INETADDR_ERROR_HOST_NOT_FOUND 4
#define | GWEN_INETADDR_ERROR_MEMORY_FULL 1
#define | GWEN_INETADDR_ERROR_NO_ADDRESS 5
#define | GWEN_INETADDR_ERROR_NO_RECOVERY 6
#define | GWEN_INETADDR_ERROR_TRY_AGAIN 7
#define | GWEN_INETADDR_ERROR_TYPE "InetAddr"
#define | GWEN_INETADDR_ERROR_UNKNOWN_DNS_ERROR 8
#define | GWEN_INETADDR_ERROR_UNSUPPORTED 10

## Construction and destruction

These functions allocate and free administrative data about IP addresses.
GWENHYWFAR_API GWEN_INETADDRESS * | GWEN_InetAddr_dup (const GWEN_INETADDRESS *ia)
GWENHYWFAR_API void | GWEN_InetAddr_free (GWEN_INETADDRESS *ia)
GWENHYWFAR_API GWEN_INETADDRESS * | GWEN_InetAddr_new (GWEN_AddressFamily af)

## Get and set address

These functions allow getting and setting of IP addresses either by hostname or host address.
GWENHYWFAR_API GWEN_ERRORCODE | GWEN_InetAddr_GetAddress (const GWEN_INETADDRESS *ia, char *buffer, unsigned int bsize)
GWENHYWFAR_API GWEN_ERRORCODE | GWEN_InetAddr_GetName (const GWEN_INETADDRESS *ia, char *buffer, unsigned int bsize)
GWENHYWFAR_API GWEN_ERRORCODE | GWEN_InetAddr_SetAddress (GWEN_INETADDRESS *ia, const char *addr)
GWENHYWFAR_API GWEN_ERRORCODE | GWEN_InetAddr_SetName (GWEN_INETADDRESS *ia, const char *name)

## Get and set port

These functions allow getting and setting of the port.
GWENHYWFAR_API int | GWEN_InetAddr_GetPort (const GWEN_INETADDRESS *ia)
GWENHYWFAR_API GWEN_ERRORCODE | GWEN_InetAddr_SetPort (GWEN_INETADDRESS *ia, int port)

## Typedefs

typedef GWEN_INETADDRESSSTRUCT | GWEN_INETADDRESS

## Enumerations

enum | GWEN_AddressFamily { GWEN_AddressFamilyIP = 0, GWEN_AddressFamilyUnix }

## Detailed Description

This module handles internet addresses.

This module allows using of internet IP addresses. It is also capable of resolving addresses and hostnames.

Author:
  Martin Preuss<martin@libchipcard.de>

## Define Documentation

#define GWEN_INETADDR_CAPS_AF_TCP 0x00000001

#define GWEN_INETADDR_CAPS_AF_UNIX 0x00000002

#define GWEN_INETADDR_ERROR_BAD_ADDRESS 2

#define GWEN_INETADDR_ERROR_BAD_ADDRESS_FAMILY 9

#define GWEN_INETADDR_ERROR_BUFFER_OVERFLOW 3

#define GWEN_INETADDR_ERROR_HOST_NOT_FOUND 4

#define GWEN_INETADDR_ERROR_MEMORY_FULL 1

#define GWEN_INETADDR_ERROR_NO_ADDRESS 5

#define GWEN_INETADDR_ERROR_NO_RECOVERY 6

#define GWEN_INETADDR_ERROR_TRY_AGAIN 7

#define GWEN_INETADDR_ERROR_TYPE "InetAddr"

#define GWEN_INETADDR_ERROR_UNKNOWN_DNS_ERROR 8

#define GWEN_INETADDR_ERROR_UNSUPPORTED 10

## Typedef Documentation

typedef struct GWEN_INETADDRESSSTRUCT GWEN_INETADDRESS

| You shoukd treat this type as opaque. Its members are not part of the API, i.e. they are subject to changes without notice !

## Enumeration Type Documentation

enum GWEN_AddressFamily

Address family (in most cases this is AddressFamilyIP)

Enumerator:

  GWEN_AddressFamilyIP | Internet Protocol (IP)
  GWEN_AddressFamilyUnix |

## Function Documentation

GWENHYWFAR_API GWEN_INETADDRESS* GWEN_InetAddr_dup | ( | const GWEN_INETADDRESS * | ia | ) |

GWENHYWFAR_API void GWEN_InetAddr_free | ( | GWEN_INETADDRESS * | ia | ) |

GWENHYWFAR_API GWEN_ERRORCODE GWEN_InetAddr_GetAddress | ( | const GWEN_INETADDRESS * | ia,
|  | char * | buffer,
|  | unsigned int | bsize
| ) |

Gets the IP address stored in the INETADDRESS.

Returns:
  error code

Parameters:

  | ia | INETADDRESS to use
  | buffer | pointer to a buffer to receive the address
  | bsize | size of the buffer in bytes

GWENHYWFAR_API GWEN_TYPE_UINT32 GWEN_InetAddr_GetCapabilities | ( |  | ) |

GWENHYWFAR_API GWEN_ERRORCODE GWEN_InetAddr_GetName | ( | const GWEN_INETADDRESS * | ia,
|  | char * | buffer,
|  | unsigned int | bsize
| ) |

Gets the host name stored in the INETADDRESS. If there is none, then the IP address stored in the INETADDRESS will be used to resolve the hostname.

Returns:
  error code

Parameters:

  | ia | INETADDRESS to use
  | buffer | pointer to a buffer to receive the name
  | bsize | size of the buffer in bytes

GWENHYWFAR_API int GWEN_InetAddr_GetPort | ( | const GWEN_INETADDRESS * | ia | ) |

Return the port stored in the INETADDRESS

Parameters:

  | ia | INETADDRESS to use

GWENHYWFAR_API GWEN_INETADDRESS* GWEN_InetAddr_new | ( | GWEN_AddressFamily | af | ) |

GWENHYWFAR_API GWEN_ERRORCODE GWEN_InetAddr_SetAddress | ( | GWEN_INETADDRESS * | ia,
|  | const char * | addr
| ) |

Sets the IP address.

Returns:
  error code

Parameters:

  | ia | INETADDRESS to manipulate
  | addr | IP address in 3-dot-notation ("1.2.3.4")

GWENHYWFAR_API GWEN_ERRORCODE GWEN_InetAddr_SetName | ( | GWEN_INETADDRESS * | ia,
|  | const char * | name
| ) |

Sets the IP name and resolves its address.

Returns:
  error code

Parameters:

  | ia | INETADDRESS to manipulate
  | name | hostname whose address is to be resolved in 3-dot-notation

GWENHYWFAR_API GWEN_ERRORCODE GWEN_InetAddr_SetPort | ( | GWEN_INETADDRESS * | ia,
|  | int | port
| ) |

Set the port in the given INETADDRESS.

Returns:
  error code

Parameters:

  | ia | INETADDRESS to manipulate
  | port | port to set (0-65535)