david/ipxe
Archived
1
0

[ipv4] Add IPv4 socket address converter

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2013-10-21 14:05:40 +01:00
parent b6a9152f8c
commit 365a09d867

View File

@ -524,6 +524,36 @@ static const char * ipv4_ntoa ( const void *net_addr ) {
return inet_ntoa ( * ( ( struct in_addr * ) net_addr ) );
}
/**
* Transcribe IPv4 socket address
*
* @v sa Socket address
* @ret string Socket address in standard notation
*/
static const char * ipv4_sock_ntoa ( struct sockaddr *sa ) {
struct sockaddr_in *sin = ( ( struct sockaddr_in * ) sa );
return inet_ntoa ( sin->sin_addr );
}
/**
* Parse IPv4 socket address
*
* @v string Socket address string
* @v sa Socket address to fill in
* @ret rc Return status code
*/
static int ipv4_sock_aton ( const char *string, struct sockaddr *sa ) {
struct sockaddr_in *sin = ( ( struct sockaddr_in * ) sa );
struct in_addr in;
if ( inet_aton ( string, &in ) ) {
sin->sin_addr = in;
return 0;
}
return -EINVAL;
}
/** IPv4 protocol */
struct net_protocol ipv4_protocol __net_protocol = {
.name = "IP",
@ -546,6 +576,13 @@ struct arp_net_protocol ipv4_arp_protocol __arp_net_protocol = {
.check = ipv4_arp_check,
};
/** IPv4 socket address converter */
struct sockaddr_converter ipv4_sockaddr_converter __sockaddr_converter = {
.family = AF_INET,
.ntoa = ipv4_sock_ntoa,
.aton = ipv4_sock_aton,
};
/******************************************************************************
*
* Settings