[ipxe-devel] [ipxe] Adoptation of IPv6 from gPXE (#6)
Ivan Shmakov
oneingray at gmail.com
Wed Aug 29 17:30:36 UTC 2012
>>>>> Anton D Kachalov writes:
[…]
> @@ -117,10 +118,14 @@ static int numeric_resolv ( struct interface *resolv,
> /* Attempt to resolve name */
> sin = ( ( struct sockaddr_in * ) &numeric->sa );
> - if ( inet_aton ( name, &sin->sin_addr ) != 0 ) {
> - sin->sin_family = AF_INET;
> + if ( inet_aton ( name, &sin->sin_addr ) == 0 ) {
> + sin6 = ( ( struct sockaddr_in6 * ) &numeric->sa );
> + sin6->sin_family = AF_INET6;
> + if ( inet6_aton ( name, &sin6->sin6_addr ) == 0 ) {
> + numeric->rc = -EINVAL;
> + }
> } else {
> - numeric->rc = -EINVAL;
> + sin->sin_family = AF_INET;
> }
> /* Attach to parent interface, mortalise self, and return */
BTW, I wonder if the above could be something like the following
instead:
@@ -117,10 +118,13 @@ static int numeric_resolv ( struct interface *resolv,
/* Attempt to resolve name */
sin = ( ( struct sockaddr_in * ) &numeric->sa );
+ sin6 = ( ( struct sockaddr_in6 * ) &numeric->sa );
if ( inet_aton ( name, &sin->sin_addr ) != 0 ) {
sin->sin_family = AF_INET;
+ } else if ( inet6_aton ( name, &sin6->sin6_addr ) == 0 ) {
+ sin6->sin_family = AF_INET6;
} else {
numeric->rc = -EINVAL;
}
/* Attach to parent interface, mortalise self, and return */
(AIUI, the added sin6 assignment above shouldn't add any actualy
code, other than those that will be optimized away anyway.)
I believe that there're a few more places in the patch where the
use of an appropriate ‘else if’ construct would save a few lines
in the resulting diff.
TIA.
--
FSF associate member #7257 http://sf-day.org/
More information about the ipxe-devel
mailing list