From 12605efded6928add185d8d9666b4be9a67b7945 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 21 Oct 2013 14:06:55 +0100 Subject: [resolv] Use sock_aton() to allow parsing of arbitrary numeric addresses Signed-off-by: Michael Brown --- src/core/resolv.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/core/resolv.c b/src/core/resolv.c index 86f19ee..d59a8c0 100644 --- a/src/core/resolv.c +++ b/src/core/resolv.c @@ -23,10 +23,10 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include #include #include -#include #include #include #include +#include #include /** @file @@ -100,7 +100,6 @@ static struct process_descriptor numeric_process_desc = static int numeric_resolv ( struct interface *resolv, const char *name, struct sockaddr *sa ) { struct numeric_resolv *numeric; - struct sockaddr_in *sin; /* Allocate and initialise structure */ numeric = zalloc ( sizeof ( *numeric ) ); @@ -112,16 +111,8 @@ static int numeric_resolv ( struct interface *resolv, &numeric->refcnt ); memcpy ( &numeric->sa, sa, sizeof ( numeric->sa ) ); - DBGC ( numeric, "NUMERIC %p attempting to resolve \"%s\"\n", - numeric, name ); - /* Attempt to resolve name */ - sin = ( ( struct sockaddr_in * ) &numeric->sa ); - if ( inet_aton ( name, &sin->sin_addr ) != 0 ) { - sin->sin_family = AF_INET; - } else { - numeric->rc = -EINVAL; - } + numeric->rc = sock_aton ( name, &numeric->sa ); /* Attach to parent interface, mortalise self, and return */ intf_plug_plug ( &numeric->resolv, resolv ); @@ -193,8 +184,8 @@ static int resmux_try ( struct resolv_mux *mux ) { static void resmux_child_resolv_done ( struct resolv_mux *mux, struct sockaddr *sa ) { - DBGC ( mux, "RESOLV %p resolved \"%s\" using method %s\n", - mux, mux->name, mux->resolver->name ); + DBGC ( mux, "RESOLV %p resolved \"%s\" to %s using method %s\n", + mux, mux->name, sock_ntoa ( sa ), mux->resolver->name ); /* Pass resolution to parent */ resolv_done ( &mux->parent, sa ); -- cgit v1.1