/*
 * Internet address manipulations
 * $Id: addr.h,v 1.3 2001/09/27 17:57:25 pasky Exp $
 */

#ifndef __ADDR_H
#define	__ADDR_H

#include <sys/types.h>
#include <sys/socket.h>


/* Each address is represented with this structure */

typedef struct {
  int af;		/* address family (now only AF_INET supported) */
  struct sockaddr *addr;
  socklen_t addrlen;
} addr_t;


/* Address functions */

/* Get v4 IP from a string containing host's name/address */
/* When (char *)[0]==0, INADDR_ANY is returned */
/* Returns address in network-byte order or 0 on failiture */
extern uint32_t sock_addr_ip4byname(char *);

/* Get v4 addr_t structure */
/* Returns newly allocated addr_t structure or NULL */
extern addr_t *sock_addr_get4(uint32_t, int);

/* Get addr_t structure */
/* Returns newly allocated addr_t structure or NULL */
extern addr_t *sock_addr_get(int, struct sockaddr *, int);

/* Delete addr_t structure */
/* Returns always NULL */
extern addr_t *sock_addr_del(addr_t *);

#endif
