diff options
author | Michael Brown <mcb30@ipxe.org> | 2013-07-18 14:49:06 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2013-07-19 15:29:23 +0100 |
commit | 44fd30904467e9c99a42b0e8fe2456e7d43a8e0e (patch) | |
tree | c47f9f2b523fc2f9a53dd093c3e7f5ab958f6611 /src/usr | |
parent | 129a70631a1b138f74bf0e2a7c6bdd1b564f8a10 (diff) | |
download | ipxe-44fd30904467e9c99a42b0e8fe2456e7d43a8e0e.tar.gz |
[settings] Eliminate call to store_named_setting() in nslookup.c
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/nslookup.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/usr/nslookup.c b/src/usr/nslookup.c index c931ec5a..cb6d8d2b 100644 --- a/src/usr/nslookup.c +++ b/src/usr/nslookup.c @@ -46,7 +46,7 @@ struct nslookup { struct interface resolver; /** 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, struct sockaddr *sa ) { struct sockaddr_in *sin; - struct setting_type *type; + struct setting_type *default_type; + struct settings *settings; + struct setting setting; void *data; size_t len; int rc; @@ -82,16 +84,25 @@ static void nslookup_resolv_done ( struct nslookup *nslookup, sin = ( ( struct sockaddr_in * ) sa ); data = &sin->sin_addr; len = sizeof ( sin->sin_addr ); - type = &setting_type_ipv4; + default_type = &setting_type_ipv4; break; default: rc = -ENOTSUP; goto err; } - /* Save in specified setting */ - if ( ( rc = store_named_setting ( nslookup->setting_name, type, - data, len ) ) != 0 ) + /* Parse specified setting name */ + if ( ( rc = parse_setting_name ( nslookup->setting_name, + 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; err: |