mirror of
https://github.com/ipxe/ipxe
synced 2026-02-28 03:11:18 +03:00
[settings] Add fetch_ipv4_array_setting()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -646,6 +646,29 @@ int fetch_string_setting_copy ( struct settings *settings,
|
|||||||
return len;
|
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
|
* 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,
|
int fetch_ipv4_setting ( struct settings *settings, struct setting *setting,
|
||||||
struct in_addr *inp ) {
|
struct in_addr *inp ) {
|
||||||
int len;
|
return fetch_ipv4_array_setting ( settings, setting, inp, 1 );
|
||||||
|
|
||||||
len = fetch_setting ( settings, setting, inp, sizeof ( *inp ) );
|
|
||||||
if ( len < 0 )
|
|
||||||
return len;
|
|
||||||
if ( len < ( int ) sizeof ( *inp ) )
|
|
||||||
return -ERANGE;
|
|
||||||
return len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -193,6 +193,10 @@ extern int fetch_string_setting ( struct settings *settings,
|
|||||||
extern int fetch_string_setting_copy ( struct settings *settings,
|
extern int fetch_string_setting_copy ( struct settings *settings,
|
||||||
struct setting *setting,
|
struct setting *setting,
|
||||||
char **data );
|
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,
|
extern int fetch_ipv4_setting ( struct settings *settings,
|
||||||
struct setting *setting, struct in_addr *inp );
|
struct setting *setting, struct in_addr *inp );
|
||||||
extern int fetch_int_setting ( struct settings *settings,
|
extern int fetch_int_setting ( struct settings *settings,
|
||||||
|
|||||||
Reference in New Issue
Block a user