diff options
author | Michael Brown | 2011-03-22 17:56:35 +0100 |
---|---|---|
committer | Michael Brown | 2011-03-22 20:54:58 +0100 |
commit | f5fd4dec3bab362a2ff7844859914e1f191fb905 (patch) | |
tree | 607eacef2f79c016a0c3c3031de2bb7d8aa7e331 /src/core/nvo.c | |
parent | [forcedeth] Clear the MII link status register on link status changes (diff) | |
download | ipxe-f5fd4dec3bab362a2ff7844859914e1f191fb905.tar.gz ipxe-f5fd4dec3bab362a2ff7844859914e1f191fb905.tar.xz ipxe-f5fd4dec3bab362a2ff7844859914e1f191fb905.zip |
[settings] Formalise notion of setting applicability
Expose a function setting_applies() to allow a caller to determine
whether or not a particular setting is applicable to a particular
settings block.
Restrict DHCP-backed settings blocks to accepting only DHCP-based
settings.
Restrict network device settings blocks to accepting only DHCP-based
settings and network device-specific settings such as "mac".
Inspired-by: Glenn Brown <glenn@myri.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/nvo.c')
-rw-r--r-- | src/core/nvo.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/nvo.c b/src/core/nvo.c index f4da407a..ea58bade 100644 --- a/src/core/nvo.c +++ b/src/core/nvo.c @@ -185,6 +185,19 @@ static int nvo_save ( struct nvo_block *nvo ) { } /** + * Check applicability of NVO setting + * + * @v settings Settings block + * @v setting Setting + * @ret applies Setting applies within this settings block + */ +static int nvo_applies ( struct settings *settings __unused, + struct setting *setting ) { + + return dhcpopt_applies ( setting->tag ); +} + +/** * Store value of NVO setting * * @v settings Settings block @@ -236,6 +249,7 @@ static int nvo_fetch ( struct settings *settings, struct setting *setting, /** NVO settings operations */ static struct settings_operations nvo_settings_operations = { + .applies = nvo_applies, .store = nvo_store, .fetch = nvo_fetch, }; |