/*-------------------------------------------------------------*/
/***************************************************************
* A netwib_ip represents an IP address. *
***************************************************************/
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_ip4_fields
Description :
Initialize an netwib_ip address.
Input parameter(s) :
a,b,c,d : bytes of the IP address
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set with a.b.c.d
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip_init_ip4_fields(netwib_byte a,
netwib_byte b,
netwib_byte c,
netwib_byte d,
netwib_ip *pip);
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_ip4
Description :
Initialize an netwib_ip address from an netwib_ip4.
Input parameter(s) :
ip4 : netwib_ip4 address
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip_init_ip4(netwib_ip4 ip4,
netwib_ip *pip);
/*-------------------------------------------------------------*/
/* Name : netwib_ip4_init_ip
Description :
Initialize an netwib_ip4 address from an netwib_ip.
Input parameter(s) :
ip : netwib_ip address
Input/output parameter(s) :
Output parameter(s) :
*pip4 : netwib_ip4 set
Normal return values :
NETWIB_ERR_OK : ok
NETWIB_ERR_NOTCONVERTED : the address could not be represented
*/
netwib_err netwib_ip4_init_ip(netwib_constip *pip,
netwib_ip4 *pip4);
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_ip6_fields
Description :
Initialize an netwib_ip address.
Input parameter(s) :
a,b,c,d : "aaaa:aaaa:bbbb:bbbb:cccc:cccc:dddd:dddd"
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set with "aaaa:aaaa:bbbb:b..."
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip_init_ip6_fields(netwib_uint32 a,
netwib_uint32 b,
netwib_uint32 c,
netwib_uint32 d,
netwib_ip *pip);
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_ip6
Description :
Initialize an netwib_ip address from an netwib_ip6.
Input parameter(s) :
ip6 : netwib_ip6 address
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip_init_ip6(netwib_constip6 *pip6,
netwib_ip *pip);
/*-------------------------------------------------------------*/
/* Name : netwib_ip6_init_ip
Description :
Initialize an netwib_ip6 address from an netwib_ip.
Input parameter(s) :
ip : netwib_ip address
Input/output parameter(s) :
Output parameter(s) :
*pip6 : netwib_ip6 set
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip6_init_ip(netwib_constip *pip,
netwib_ip6 *pip6);
/*-------------------------------------------------------------*/
typedef enum {
NETWIB_IP_DECODETYPE_IP4 = 1, /* "1.2.3.4" only */
NETWIB_IP_DECODETYPE_IP6, /* "aaaa:bbbb:..." only */
NETWIB_IP_DECODETYPE_IP, /* try IP4 then IP6 */
NETWIB_IP_DECODETYPE_HN4, /* server.example.com->IPv4 only */
NETWIB_IP_DECODETYPE_HN6, /* server.example.com->IPv4 only */
NETWIB_IP_DECODETYPE_HN, /* try HN4 then HN6 */
NETWIB_IP_DECODETYPE_IP4HN4, /* if IP4 does not work, use HN4 */
NETWIB_IP_DECODETYPE_IP6HN6, /* if IP6 does not work, use HN6 */
NETWIB_IP_DECODETYPE_IPHN, /* try IP, then HN */
NETWIB_IP_DECODETYPE_BEST = NETWIB_IP_DECODETYPE_IPHN /* best */
} netwib_ip_decodetype;
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_buf
Description :
Convert a string "1.2.3.4", "aaaa:bbbb:..." or a
hostname to a netwib_ip. To convert a hostname resolving
to several IP addresses, function netwib_ips_add_buf
has to be used instead.
Input parameter(s) :
*pbuf : string to convert
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set
Normal return values :
NETWIB_ERR_OK : ok
NETWIB_ERR_NOTCONVERTED : the address could not be resolved
*/
netwib_err netwib_ip_init_buf(netwib_constbuf *pbuf,
netwib_ip_decodetype decodetype,
netwib_ip *pip);
#define netwib_ip_init_buf_best(pbuf,pip) netwib_ip_init_buf(pbuf,NETWIB_IP_DECODETYPE_BEST,pip)
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_eth
Description :
Convert a netwib_eth to a netwib_ip.
Input parameter(s) :
eth : netwib_eth to convert
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set with eth value
Normal return values :
NETWIB_ERR_OK : ok
NETWIB_ERR_NOTCONVERTED : the address could not be resolved
Note :
This function does not currently support IPv6. It have
to be finished.
*/
netwib_err netwib_ip_init_eth(netwib_consteth *peth,
netwib_ip *pip);
/*-------------------------------------------------------------*/
/* Name : netwib_ip_init_kbd
Description :
Initialize an netwib_ip with the address entered by the
user through the keyboard
Input parameter(s) :
message : message to print before
defaulthn : default hostname or ip address to use if
user enters nothing. If NULL, there is no default
Input/output parameter(s) :
Output parameter(s) :
*pip : netwib_ip set with user's string
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip_init_kbd(netwib_constbuf *pmessage,
netwib_constbuf *pdefaulthn,
netwib_ip *pip);
#define NETWIB_IP_INIT_KBD_NODEF NULL
/*-------------------------------------------------------------*/
/* Name : netwib_ip_cmp
Description :
Compare two netwib_ip.
Input parameter(s) :
ip1 : netwib_ip to compare with ip2
ip2 : netwib_ip to compare with ip1
Input/output parameter(s) :
Output parameter(s) :
*pcmp :
NETWIB_CMP_LT : ip1<ip2
NETWIB_CMP_EQ : if ip1 and ip2 are equal
NETWIB_CMP_GT : ip1>ip2
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_ip_cmp(netwib_constip *pip1,
netwib_constip *pip2,
netwib_cmp *pcmp);
/*-------------------------------------------------------------*/
typedef enum {
NETWIB_IP_ENCODETYPE_IP = 1, /* "1.2.3.4" */
NETWIB_IP_ENCODETYPE_HN, /* server.example.com */
NETWIB_IP_ENCODETYPE_HNIP, /* if HN does not work, use IP */
NETWIB_IP_ENCODETYPE_HNS, /* "host1,host2,etc." */
NETWIB_IP_ENCODETYPE_BEST = NETWIB_IP_ENCODETYPE_HNIP /* best */
} netwib_ip_encodetype;
/*-------------------------------------------------------------*/
/* Name : netwib_buf_append_ip
Description :
Append a string representing a netwib_ip.
Input parameter(s) :
ip : netwib_ip to append
encodetype : encodetype to use
Input/output parameter(s) :
pbuf : buffer updated
Output parameter(s) :
Normal return values :
NETWIB_ERR_OK : ok
NETWIB_ERR_NOTCONVERTED : the address could not be resolved
*/
netwib_err netwib_buf_append_ip(netwib_constip *pip,
netwib_ip_encodetype encodetype,
netwib_buf *pbuf);
/*-------------------------------------------------------------*/
/* Name : netwib_buf_append_iptype
Description :
Obtains the buf string corresponding to a type.
Input parameter(s) :
type : type
Input/output parameter(s) :
Output parameter(s) :
*pbuf : netwib_buf set with the buf string
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_buf_append_iptype(netwib_iptype type,
netwib_buf *pbuf);
/*-------------------------------------------------------------*/
/* Name : netwib_iptype_init_kbd
Description :
Initialize a netwib_iptype with data entered
through keyboard.
Input parameter(s) :
*pmessage : message to print before
defaulttype : default type to use if user enters
nothing (if NETWIB_IPTYPE_UNKNOWN means
no default)
Input/output parameter(s) :
Output parameter(s) :
*phwtype : netwib_hwtype initialized
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_iptype_init_kbd(netwib_constbuf *pmessage,
netwib_iptype defaulttype,
netwib_iptype *ptype);
#define NETWIB_IPTYPE_INIT_KBD_NODEF NETWIB_IPTYPE_UNKNOWN