From eaa86156484d72f50825fec3e313a732f258fd31 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 19 Nov 2013 15:34:58 +0000 Subject: [settings] Allow for multiple definitions of each predefined setting Allow for multiple setting definitions with the same name but different scopes and tags. For example, allow for a "filename" setting with default scope and tag value 67 (for DHCPv4) and a corresponding "filename" setting with IPv6 scope and tag value 59 (for DHCPv6). Signed-off-by: Michael Brown --- src/interface/efi/efi_snp_hii.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/interface/efi') diff --git a/src/interface/efi/efi_snp_hii.c b/src/interface/efi/efi_snp_hii.c index 61954b632..c272527c0 100644 --- a/src/interface/efi/efi_snp_hii.c +++ b/src/interface/efi/efi_snp_hii.c @@ -126,6 +126,7 @@ static void efi_snp_hii_questions ( struct efi_snp_device *snpdev, struct efi_ifr_builder *ifr, unsigned int varstore_id ) { struct setting *setting; + struct setting *previous = NULL; unsigned int name_id; unsigned int prompt_id; unsigned int help_id; @@ -135,6 +136,9 @@ static void efi_snp_hii_questions ( struct efi_snp_device *snpdev, for_each_table_entry ( setting, SETTINGS ) { if ( ! efi_snp_hii_setting_applies ( snpdev, setting ) ) continue; + if ( previous && ( setting_cmp ( setting, previous ) == 0 ) ) + continue; + previous = setting; name_id = efi_ifr_string ( ifr, "%s", setting->name ); prompt_id = efi_ifr_string ( ifr, "%s", setting->description ); help_id = efi_ifr_string ( ifr, "http://ipxe.org/cfg/%s", -- cgit v1.2.3-55-g7522