2
0
mirror of https://github.com/xcat2/xNBA.git synced 2025-02-16 18:48:12 +00:00

[settings] Add fetch_ipv4_array_setting()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2010-12-09 15:34:12 +00:00
parent 66531a5918
commit cb838cc419
2 changed files with 28 additions and 8 deletions

View File

@ -646,6 +646,29 @@ int fetch_string_setting_copy ( struct settings *settings,
return len;
}
/**
* Fetch value of IPv4 address setting
*
* @v settings Settings block, or NULL to search all blocks
* @v setting Setting to fetch
* @v inp IPv4 addresses to fill in
* @v count Maximum number of IPv4 addresses
* @ret len Length of setting, or negative error
*/
int fetch_ipv4_array_setting ( struct settings *settings,
struct setting *setting,
struct in_addr *inp, unsigned int count ) {
int len;
len = fetch_setting ( settings, setting, inp,
( sizeof ( *inp ) * count ) );
if ( len < 0 )
return len;
if ( ( len % sizeof ( *inp ) ) != 0 )
return -ERANGE;
return len;
}
/**
* Fetch value of IPv4 address setting
*
@ -656,14 +679,7 @@ int fetch_string_setting_copy ( struct settings *settings,
*/
int fetch_ipv4_setting ( struct settings *settings, struct setting *setting,
struct in_addr *inp ) {
int len;
len = fetch_setting ( settings, setting, inp, sizeof ( *inp ) );
if ( len < 0 )
return len;
if ( len < ( int ) sizeof ( *inp ) )
return -ERANGE;
return len;
return fetch_ipv4_array_setting ( settings, setting, inp, 1 );
}
/**

View File

@ -193,6 +193,10 @@ extern int fetch_string_setting ( struct settings *settings,
extern int fetch_string_setting_copy ( struct settings *settings,
struct setting *setting,
char **data );
extern int fetch_ipv4_array_setting ( struct settings *settings,
struct setting *setting,
struct in_addr *inp,
unsigned int count );
extern int fetch_ipv4_setting ( struct settings *settings,
struct setting *setting, struct in_addr *inp );
extern int fetch_int_setting ( struct settings *settings,