[settings] Eliminate call to store_named_setting() in nslookup.c

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/598/head
Michael Brown 2013-07-18 14:49:06 +01:00
parent 129a70631a
commit 44fd309044
1 changed files with 17 additions and 6 deletions

View File

@ -46,7 +46,7 @@ struct nslookup {
struct interface resolver; struct interface resolver;
/** Setting name */ /** Setting name */
const char *setting_name; char *setting_name;
}; };
/** /**
@ -71,7 +71,9 @@ static void nslookup_close ( struct nslookup *nslookup, int rc ) {
static void nslookup_resolv_done ( struct nslookup *nslookup, static void nslookup_resolv_done ( struct nslookup *nslookup,
struct sockaddr *sa ) { struct sockaddr *sa ) {
struct sockaddr_in *sin; struct sockaddr_in *sin;
struct setting_type *type; struct setting_type *default_type;
struct settings *settings;
struct setting setting;
void *data; void *data;
size_t len; size_t len;
int rc; int rc;
@ -82,16 +84,25 @@ static void nslookup_resolv_done ( struct nslookup *nslookup,
sin = ( ( struct sockaddr_in * ) sa ); sin = ( ( struct sockaddr_in * ) sa );
data = &sin->sin_addr; data = &sin->sin_addr;
len = sizeof ( sin->sin_addr ); len = sizeof ( sin->sin_addr );
type = &setting_type_ipv4; default_type = &setting_type_ipv4;
break; break;
default: default:
rc = -ENOTSUP; rc = -ENOTSUP;
goto err; goto err;
} }
/* Save in specified setting */ /* Parse specified setting name */
if ( ( rc = store_named_setting ( nslookup->setting_name, type, if ( ( rc = parse_setting_name ( nslookup->setting_name,
data, len ) ) != 0 ) autovivify_child_settings, &settings,
&setting ) ) != 0 )
goto err;
/* Apply default type if necessary */
if ( ! setting.type )
setting.type = default_type;
/* Store in specified setting */
if ( ( rc = store_setting ( settings, &setting, data, len ) ) != 0 )
goto err; goto err;
err: err: