1 #ifndef _IPXE_SETTINGS_H 2 #define _IPXE_SETTINGS_H 53 #define SETTINGS __table ( struct setting, "settings" ) 56 #define __setting( setting_order, name ) \ 57 __table_entry ( SETTINGS, setting_order.name ) 63 #define SETTING_NETDEV 01 64 #define SETTING_NETDEV_EXTRA 02 65 #define SETTING_IP4 03 66 #define SETTING_IP4_EXTRA 04 67 #define SETTING_IP6 05 68 #define SETTING_IP6_EXTRA 06 70 #define SETTING_IP_EXTRA 08 71 #define SETTING_BOOT 09 72 #define SETTING_BOOT_EXTRA 10 73 #define SETTING_SANBOOT 11 74 #define SETTING_SANBOOT_EXTRA 12 75 #define SETTING_HOST 13 76 #define SETTING_HOST_EXTRA 14 77 #define SETTING_AUTH 15 78 #define SETTING_AUTH_EXTRA 16 79 #define SETTING_CRYPTO 17 80 #define SETTING_MISC 18 110 const void *
data,
size_t len );
206 void *buf,
size_t len );
228 void *buf,
size_t len );
242 #define SETTING_TYPES __table ( struct setting_type, "setting_types" ) 245 #define __setting_type __table_entry ( SETTING_TYPES, 01 ) 260 #define SETTINGS_APPLICATORS \ 261 __table ( struct settings_applicator, "settings_applicators" ) 264 #define __settings_applicator __table_entry ( SETTINGS_APPLICATORS, 01 ) 280 #define BUILTIN_SETTINGS __table ( struct builtin_setting, "builtin_settings" ) 283 #define __builtin_setting __table_entry ( BUILTIN_SETTINGS, 01 ) 311 const void *
data,
size_t len );
326 const void *
data,
size_t len );
363 unsigned long *
value );
386 char *buf,
size_t len );
390 void *buf,
size_t len );
394 unsigned long value,
void *buf,
size_t len );
398 char *buf,
size_t len );
408 unsigned long *
value );
411 unsigned long value );
void clear_settings(struct settings *settings)
Clear settings block.
#define SETTING_IP4
IPv4 settings.
#define SETTING_IP_EXTRA
IPv4 additional settings.
int setting_numerate(const struct setting_type *type, const void *raw, size_t raw_len, unsigned long *value)
Convert setting value to number.
int storef_setting(struct settings *settings, const struct setting *setting, const char *value)
Store formatted value of setting.
const struct settings_scope ipv6_settings_scope
IPv6 setting scope.
int parse_setting_name(char *name, get_child_settings_t get_child, struct settings **settings, struct setting *setting)
Parse setting name.
char * expand_settings(const char *string)
Expand variables within string.
int fetch_uint_setting(struct settings *settings, const struct setting *setting, unsigned long *value)
Fetch value of unsigned integer setting.
struct stp_switch root
Root switch.
uint32_t next
Next descriptor address.
struct settings * parent
Parent settings block.
static void generic_settings_init(struct generic_settings *generics, struct refcnt *refcnt)
Initialise a settings block.
int fetch_raw_setting(struct settings *settings, const struct setting *setting, void *data, size_t len)
Fetch value of setting.
int(* denumerate)(const struct setting_type *type, unsigned long value, void *buf, size_t len)
Convert number to setting value.
static unsigned short vendor
const char * settings_name(struct settings *settings)
Return settings block name.
int generic_settings_fetch(struct settings *settings, struct setting *setting, void *data, size_t len)
Fetch value of generic setting.
uint32_t type
Operating system type.
#define SETTING_AUTH
Authentication settings.
static int delete_setting(struct settings *settings, const struct setting *setting)
Delete setting.
int fetch_setting(struct settings *settings, const struct setting *setting, struct settings **origin, struct setting *fetched, void *data, size_t len)
Fetch setting.
unsigned long long uint64_t
int(* fetch)(void *data, size_t len)
Fetch setting value.
int setting_cmp(const struct setting *a, const struct setting *b)
Compare two settings.
#define SETTING_SANBOOT
SAN boot settings.
#define SETTING_HOST_EXTRA
Host identity additional settings.
#define SETTING_MISC
Miscellaneous settings.
int generic_settings_store(struct settings *settings, const struct setting *setting, const void *data, size_t len)
Store value of generic setting.
int fetch_string_setting(struct settings *settings, const struct setting *setting, char *data, size_t len)
Fetch value of string setting.
uint8_t mac[ETH_ALEN]
MAC address.
int setting_denumerate(const struct setting_type *type, unsigned long value, void *buf, size_t len)
Convert number to setting value.
const char * description
Description.
static void(*) struct refcnt refcnt)
void(* clear)(struct settings *settings)
Clear settings block.
const struct settings_scope * default_scope
Default scope for numerical settings constructed for this block.
struct settings_operations * op
Settings block operations.
static void settings_init(struct settings *settings, struct settings_operations *op, struct refcnt *refcnt, const struct settings_scope *default_scope)
Initialise a settings block.
A doubly-linked list entry (or list head)
int(* parse)(const struct setting_type *type, const char *value, void *buf, size_t len)
Parse formatted string to setting value.
#define __setting(setting_order, name)
Declare a configuration setting.
uint64_t tag
Setting tag, if applicable.
int setting_name(struct settings *settings, const struct setting *setting, char *buf, size_t len)
Return full setting name.
int setting_format(const struct setting_type *type, const void *raw, size_t raw_len, char *buf, size_t len)
Format setting value as a string.
struct list_head list
List of generic settings.
int setting_applies(struct settings *settings, const struct setting *setting)
Check applicability of setting.
int fetchf_setting_copy(struct settings *settings, const struct setting *setting, struct settings **origin, struct setting *fetched, char **value)
Fetch copy of formatted value of setting.
#define SETTING_NETDEV
Network device settings.
int fetch_uuid_setting(struct settings *settings, const struct setting *setting, union uuid *uuid)
Fetch value of UUID setting.
const struct setting * setting
Setting.
struct settings * settings_target(struct settings *settings)
Redirect to target settings block.
#define SETTING_IP4_EXTRA
IPv4 additional settings.
#define __setting_type
Declare a configuration setting type.
struct settings *(* get_child_settings_t)(struct settings *settings, const char *name)
A child settings block locator function.
pseudo_bit_t value[0x00020]
int fetchf_setting(struct settings *settings, const struct setting *setting, struct settings **origin, struct setting *fetched, char *buf, size_t len)
Fetch formatted value of setting.
int setting_parse(const struct setting_type *type, const char *value, void *buf, size_t len)
Parse formatted string to setting value.
uint16_t count
Number of entries.
int fetchn_setting(struct settings *settings, const struct setting *setting, struct settings **origin, struct setting *fetched, unsigned long *value)
Fetch numeric value of setting.
const struct setting_type * type
Setting type.
struct settings * find_settings(const char *name)
Find settings block.
const struct settings_scope dhcpv6_scope
DHCPv6 setting scope.
int(* numerate)(const struct setting_type *type, const void *raw, size_t raw_len, unsigned long *value)
Convert setting value to number.
int storen_setting(struct settings *settings, const struct setting *setting, unsigned long value)
Store numeric value of setting.
int fetch_ipv6_array_setting(struct settings *settings, const struct setting *setting, struct in6_addr *inp, unsigned int count)
Fetch value of IPv6 address setting.
uint64_t serial
Serial number.
IP4_t ip
Destination IP address.
Settings block operations.
#define SETTING_BOOT
Generic boot settings.
int fetch_string_setting_copy(struct settings *settings, const struct setting *setting, char **data)
Fetch value of string setting.
int register_settings(struct settings *settings, struct settings *parent, const char *name)
Register settings block.
static struct dynamic_item password
struct list_head siblings
Sibling settings blocks.
uint8_t manufacturer
Manufacturer string.
int fetch_ipv4_array_setting(struct settings *settings, const struct setting *setting, struct in_addr *inp, unsigned int count)
Fetch value of IPv4 address setting.
static int setting_exists(struct settings *settings, const struct setting *setting)
Check existence of predefined setting.
static uint16_t struct vmbus_xfer_pages_operations * op
#define INIT_LIST_HEAD(list)
Initialise a list head.
int order
Sibling ordering.
A generic settings block.
int fetch_raw_setting_copy(struct settings *settings, const struct setting *setting, void **data)
Fetch value of setting.
struct settings settings
Settings block.
#define SETTING_IP6_EXTRA
IPv6 additional settings.
struct settings * find_child_settings(struct settings *parent, const char *name)
Find child settings block.
uint16_t priority
Priotity.
long fetch_intz_setting(struct settings *settings, const struct setting *setting)
Fetch value of signed integer setting, or zero.
int fetch_ipv4_setting(struct settings *settings, const struct setting *setting, struct in_addr *inp)
Fetch value of IPv4 address setting.
int(* fetch)(struct settings *settings, struct setting *setting, void *data, size_t len)
Fetch value of setting.
int fetch_int_setting(struct settings *settings, const struct setting *setting, long *value)
Fetch value of signed integer setting.
void generic_settings_clear(struct settings *settings)
Clear generic settings block.
uint8_t data[48]
Additional event data.
static struct dynamic_item username
struct settings_operations generic_settings_operations
Generic settings operations.
uint8_t product
Product string.
int(* apply)(void)
Apply updated settings.
int(* applies)(struct settings *settings, const struct setting *setting)
Check applicability of setting.
struct list_head children
Child settings blocks.
struct settings * autovivify_child_settings(struct settings *parent, const char *name)
Find or create child settings block.
#define SETTING_IP6
IPv6 settings.
uint8_t dummy
Dummy field.
const struct settings_scope * scope
Setting scope (or NULL)
const struct settings_scope builtin_scope
Built-in setting scope.
int store_setting(struct settings *settings, const struct setting *setting, const void *data, size_t len)
Store value of setting.
int(* store)(struct settings *settings, const struct setting *setting, const void *data, size_t len)
Store value of setting.
void unregister_settings(struct settings *settings)
Unregister settings block.
#define NULL
NULL pointer (VOID *)
int(* format)(const struct setting_type *type, const void *raw, size_t raw_len, char *buf, size_t len)
Format setting value as a string.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
struct setting * find_setting(const char *name)
Find predefined setting.
int fetch_setting_copy(struct settings *settings, const struct setting *setting, struct settings **origin, struct setting *fetched, void **data)
Fetch copy of setting.
unsigned long fetch_uintz_setting(struct settings *settings, const struct setting *setting)
Fetch value of unsigned integer setting, or zero.
struct refcnt * refcnt
Reference counter.
static struct dns_server dns6
IPv6 DNS server list.
#define SETTING_HOST
Host identity settings.
int fetch_ipv6_setting(struct settings *settings, const struct setting *setting, struct in6_addr *inp)
Fetch value of IPv6 address setting.