[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