mirror of
https://github.com/ipxe/ipxe
synced 2025-12-27 18:12:36 +03:00
[settings] Eliminate call to store_named_setting() in nslookup.c
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user