diff options
author | Michael Brown | 2013-12-05 00:36:53 +0100 |
---|---|---|
committer | Michael Brown | 2013-12-05 01:41:49 +0100 |
commit | 60c4e62e5dc56a451958456c7c013b161e53c9b9 (patch) | |
tree | 53057c45e2a9728014afab72ed9d7128a0765a7f /src/core/settings.c | |
parent | [settings] Allow for IPv6 setting types in non-IPv6 builds (diff) | |
download | ipxe-60c4e62e5dc56a451958456c7c013b161e53c9b9.tar.gz ipxe-60c4e62e5dc56a451958456c7c013b161e53c9b9.tar.xz ipxe-60c4e62e5dc56a451958456c7c013b161e53c9b9.zip |
[settings] Add fetch_ipv6_setting()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/settings.c')
-rw-r--r-- | src/core/settings.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/settings.c b/src/core/settings.c index 9b4087e8..1269c9a3 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -878,6 +878,44 @@ int fetch_ipv4_setting ( struct settings *settings, } /** + * Fetch value of IPv6 address setting + * + * @v settings Settings block, or NULL to search all blocks + * @v setting Setting to fetch + * @v inp IPv6 addresses to fill in + * @v count Maximum number of IPv6 addresses + * @ret len Length of setting, or negative error + */ +int fetch_ipv6_array_setting ( struct settings *settings, + const struct setting *setting, + struct in6_addr *inp, unsigned int count ) { + int len; + + len = fetch_raw_setting ( settings, setting, inp, + ( sizeof ( *inp ) * count ) ); + if ( len < 0 ) + return len; + if ( ( len % sizeof ( *inp ) ) != 0 ) + return -ERANGE; + return len; +} + +/** + * Fetch value of IPv6 address setting + * + * @v settings Settings block, or NULL to search all blocks + * @v setting Setting to fetch + * @v inp IPv6 address to fill in + * @ret len Length of setting, or negative error + */ +int fetch_ipv6_setting ( struct settings *settings, + const struct setting *setting, + struct in6_addr *inp ) { + + return fetch_ipv6_array_setting ( settings, setting, inp, 1 ); +} + +/** * Extract numeric value of setting * * @v is_signed Treat value as a signed integer |