]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[settings] Impose a fixed order on settings
authorMichael Brown <mcb30@ipxe.org>
Wed, 23 Mar 2011 11:57:29 +0000 (11:57 +0000)
committerMichael Brown <mcb30@ipxe.org>
Wed, 23 Mar 2011 11:57:29 +0000 (11:57 +0000)
Improve the appearance of the "config" user interface by ensuring that
settings appear in some kind of logical order.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 files changed:
src/core/settings.c
src/include/ipxe/net80211.h
src/include/ipxe/settings.h
src/interface/smbios/smbios_settings.c
src/net/80211/net80211.c
src/net/ipv4.c
src/net/netdev_settings.c
src/net/tcp/iscsi.c
src/net/udp/dhcp.c
src/net/udp/dns.c
src/net/udp/syslog.c
src/net/udp/tftp.c
src/usr/autoboot.c

index d498db69b70f53f1b037b3c264e63ef1ff291187..b9df5a7a7835382dcecf7441efaf0e4d633ed5a3 100644 (file)
@@ -1672,7 +1672,7 @@ char * expand_settings ( const char *string ) {
  */
 
 /** Hostname setting */
-struct setting hostname_setting __setting = {
+struct setting hostname_setting __setting ( SETTING_HOST ) = {
        .name = "hostname",
        .description = "Host name",
        .tag = DHCP_HOST_NAME,
@@ -1680,7 +1680,7 @@ struct setting hostname_setting __setting = {
 };
 
 /** Filename setting */
-struct setting filename_setting __setting = {
+struct setting filename_setting __setting ( SETTING_BOOT ) = {
        .name = "filename",
        .description = "Boot filename",
        .tag = DHCP_BOOTFILE_NAME,
@@ -1688,7 +1688,7 @@ struct setting filename_setting __setting = {
 };
 
 /** Root path setting */
-struct setting root_path_setting __setting = {
+struct setting root_path_setting __setting ( SETTING_SANBOOT ) = {
        .name = "root-path",
        .description = "iSCSI root path",
        .tag = DHCP_ROOT_PATH,
@@ -1696,7 +1696,7 @@ struct setting root_path_setting __setting = {
 };
 
 /** Username setting */
-struct setting username_setting __setting = {
+struct setting username_setting __setting ( SETTING_AUTH ) = {
        .name = "username",
        .description = "User name",
        .tag = DHCP_EB_USERNAME,
@@ -1704,7 +1704,7 @@ struct setting username_setting __setting = {
 };
 
 /** Password setting */
-struct setting password_setting __setting = {
+struct setting password_setting __setting ( SETTING_AUTH ) = {
        .name = "password",
        .description = "Password",
        .tag = DHCP_EB_PASSWORD,
@@ -1712,7 +1712,7 @@ struct setting password_setting __setting = {
 };
 
 /** Priority setting */
-struct setting priority_setting __setting = {
+struct setting priority_setting __setting ( SETTING_MISC ) = {
        .name = "priority",
        .description = "Priority of these settings",
        .tag = DHCP_EB_PRIORITY,
index ac844b40837b0d2f0050cea33b00387bf5169a0e..3c30f06c405f70b35fda9b99941677949cd45af1 100644 (file)
@@ -1093,7 +1093,7 @@ struct net80211_wlan
 
 
 /** 802.11 encryption key setting */
-extern struct setting net80211_key_setting __setting;
+extern struct setting net80211_key_setting __setting ( SETTING_NETDEV_EXTRA );
 
 
 /**
index 724877fe40b4b509682fa3d55c7db67150c560eb..0f1ec5bacccaafa11df064355fbdb84208f748be 100644 (file)
@@ -65,7 +65,27 @@ struct setting {
 #define SETTINGS __table ( struct setting, "settings" )
 
 /** Declare a configuration setting */
-#define __setting __table_entry ( SETTINGS, 01 )
+#define __setting( setting_order ) __table_entry ( SETTINGS, setting_order )
+
+/** @defgroup setting_order Setting ordering
+ * @{
+ */
+
+#define SETTING_NETDEV         01 /**< Network device settings */
+#define SETTING_NETDEV_EXTRA   02 /**< Network device additional settings */
+#define SETTING_IPv4           03 /**< IPv4 settings */
+#define SETTING_IPv4_EXTRA     04 /**< IPv4 additional settings */
+#define SETTING_BOOT           05 /**< Generic boot settings */
+#define SETTING_BOOT_EXTRA     06 /**< Generic boot additional settings */
+#define SETTING_SANBOOT                07 /**< SAN boot settings */
+#define SETTING_SANBOOT_EXTRA  08 /**< SAN boot additional settings */
+#define SETTING_HOST           09 /**< Host identity settings */
+#define SETTING_HOST_EXTRA     10 /**< Host identity additional settings */
+#define SETTING_AUTH           11 /**< Authentication settings */
+#define SETTING_AUTH_EXTRA     12 /**< Authentication additional settings */
+#define SETTING_MISC           13 /**< Miscellaneous settings */
+
+/** @} */
 
 /** Settings block operations */
 struct settings_operations {
@@ -273,22 +293,20 @@ extern struct setting_type setting_type_uint32 __setting_type;
 extern struct setting_type setting_type_hex __setting_type;
 extern struct setting_type setting_type_uuid __setting_type;
 
-extern struct setting ip_setting __setting;
-extern struct setting netmask_setting __setting;
-extern struct setting gateway_setting __setting;
-extern struct setting dns_setting __setting;
-extern struct setting domain_setting __setting;
-extern struct setting hostname_setting __setting;
-extern struct setting filename_setting __setting;
-extern struct setting root_path_setting __setting;
-extern struct setting username_setting __setting;
-extern struct setting password_setting __setting;
-extern struct setting priority_setting __setting;
-extern struct setting uuid_setting __setting;
-extern struct setting next_server_setting __setting;
-extern struct setting mac_setting __setting;
-extern struct setting busid_setting __setting;
-extern struct setting user_class_setting __setting;
+extern struct setting ip_setting __setting ( SETTING_IPv4 );
+extern struct setting netmask_setting __setting ( SETTING_IPv4 );
+extern struct setting gateway_setting __setting ( SETTING_IPv4 );
+extern struct setting dns_setting __setting ( SETTING_IPv4_EXTRA );
+extern struct setting hostname_setting __setting ( SETTING_HOST );
+extern struct setting filename_setting __setting ( SETTING_BOOT );
+extern struct setting root_path_setting __setting ( SETTING_SANBOOT );
+extern struct setting username_setting __setting ( SETTING_AUTH );
+extern struct setting password_setting __setting ( SETTING_AUTH );
+extern struct setting priority_setting __setting ( SETTING_MISC );
+extern struct setting uuid_setting __setting ( SETTING_HOST );
+extern struct setting next_server_setting __setting ( SETTING_BOOT );
+extern struct setting mac_setting __setting ( SETTING_NETDEV );
+extern struct setting busid_setting __setting ( SETTING_NETDEV );
 
 /**
  * Initialise a settings block
index 6594c94b605f1847df09457fb85685c3e7d233b9..92dc41272b831e6251e9eb6db7888073e3e13a58 100644 (file)
@@ -165,7 +165,7 @@ struct init_fn smbios_init_fn __init_fn ( INIT_NORMAL ) = {
 };
 
 /** UUID setting obtained via SMBIOS */
-struct setting uuid_setting __setting = {
+struct setting uuid_setting __setting ( SETTING_HOST ) = {
        .name = "uuid",
        .description = "UUID",
        .tag = SMBIOS_RAW_TAG ( SMBIOS_TYPE_SYSTEM_INFORMATION,
@@ -174,7 +174,7 @@ struct setting uuid_setting __setting = {
 };
 
 /** Other SMBIOS named settings */
-struct setting smbios_named_settings[] __setting = {
+struct setting smbios_named_settings[] __setting ( SETTING_HOST_EXTRA ) = {
        {
                .name = "manufacturer",
                .description = "Manufacturer",
index c42928e8a8421bfb6b686e60f12f48f1cf70b511..3bbca197ce342065abe8822e37b0791126accfaf 100644 (file)
@@ -202,7 +202,7 @@ struct settings_applicator net80211_applicator __settings_applicator = {
  * If this is blank, we scan for all networks and use the one with the
  * greatest signal strength.
  */
-struct setting net80211_ssid_setting __setting = {
+struct setting net80211_ssid_setting __setting ( SETTING_NETDEV_EXTRA ) = {
        .name = "ssid",
        .description = "802.11 SSID (network name)",
        .type = &setting_type_string,
@@ -215,7 +215,7 @@ struct setting net80211_ssid_setting __setting = {
  * active scan (send probe packets). If this setting is nonzero, an
  * active scan on the 2.4GHz band will be used to associate.
  */
-struct setting net80211_active_setting __setting = {
+struct setting net80211_active_setting __setting ( SETTING_NETDEV_EXTRA ) = {
        .name = "active-scan",
        .description = "Use an active scan during 802.11 association",
        .type = &setting_type_int8,
@@ -228,7 +228,7 @@ struct setting net80211_active_setting __setting = {
  * normal iPXE method for entering hex settings; an ASCII string of
  * hex characters will not behave as expected.
  */
-struct setting net80211_key_setting __setting = {
+struct setting net80211_key_setting __setting ( SETTING_NETDEV_EXTRA ) = {
        .name = "key",
        .description = "Encryption key for protected 802.11 networks",
        .type = &setting_type_string,
index f6a1e6e0f84d3dc5a2310f4170c0a5fdc25b9b60..3d6d738bed4a1d3b2c682013a7c380626075b926 100644 (file)
@@ -554,7 +554,7 @@ struct arp_net_protocol ipv4_arp_protocol __arp_net_protocol = {
  */
 
 /** IPv4 address setting */
-struct setting ip_setting __setting = {
+struct setting ip_setting __setting ( SETTING_IPv4 ) = {
        .name = "ip",
        .description = "IPv4 address",
        .tag = DHCP_EB_YIADDR,
@@ -562,7 +562,7 @@ struct setting ip_setting __setting = {
 };
 
 /** IPv4 subnet mask setting */
-struct setting netmask_setting __setting = {
+struct setting netmask_setting __setting ( SETTING_IPv4 ) = {
        .name = "netmask",
        .description = "IPv4 subnet mask",
        .tag = DHCP_SUBNET_MASK,
@@ -570,7 +570,7 @@ struct setting netmask_setting __setting = {
 };
 
 /** Default gateway setting */
-struct setting gateway_setting __setting = {
+struct setting gateway_setting __setting ( SETTING_IPv4 ) = {
        .name = "gateway",
        .description = "Default gateway",
        .tag = DHCP_ROUTERS,
index 220ffa9a8bbfc876885c5c02210e31daed717f60..2ef3984d929b6192e6364e3375a16f32dc15fce2 100644 (file)
@@ -34,13 +34,13 @@ FILE_LICENCE ( GPL2_OR_LATER );
  */
 
 /** Network device named settings */
-struct setting mac_setting __setting = {
+struct setting mac_setting __setting ( SETTING_NETDEV ) = {
        .name = "mac",
        .description = "MAC address",
        .type = &setting_type_hex,
        .tag = NETDEV_SETTING_TAG_MAC,
 };
-struct setting busid_setting __setting = {
+struct setting busid_setting __setting ( SETTING_NETDEV ) = {
        .name = "busid",
        .description = "Bus ID",
        .type = &setting_type_hex,
index 6ae0eab35919ed4e720b3b0e564b4cc2bffa696b..cde3ed6db02fdac23bcd2081bb2f0ab7288f77f0 100644 (file)
@@ -1820,7 +1820,7 @@ enum iscsi_root_path_component {
 };
 
 /** iSCSI initiator IQN setting */
-struct setting initiator_iqn_setting __setting = {
+struct setting initiator_iqn_setting __setting ( SETTING_SANBOOT_EXTRA ) = {
        .name = "initiator-iqn",
        .description = "iSCSI initiator name",
        .tag = DHCP_ISCSI_INITIATOR_IQN,
@@ -1828,7 +1828,7 @@ struct setting initiator_iqn_setting __setting = {
 };
 
 /** iSCSI reverse username setting */
-struct setting reverse_username_setting __setting = {
+struct setting reverse_username_setting __setting ( SETTING_AUTH_EXTRA ) = {
        .name = "reverse-username",
        .description = "Reverse user name",
        .tag = DHCP_EB_REVERSE_USERNAME,
@@ -1836,7 +1836,7 @@ struct setting reverse_username_setting __setting = {
 };
 
 /** iSCSI reverse password setting */
-struct setting reverse_password_setting __setting = {
+struct setting reverse_password_setting __setting ( SETTING_AUTH_EXTRA ) = {
        .name = "reverse-password",
        .description = "Reverse password",
        .tag = DHCP_EB_REVERSE_PASSWORD,
index e6d127ab70cb3ab06eca8e08929e29deb5491300..d4f4ede415e4798503e63b04e15268035768ba4e 100644 (file)
@@ -93,7 +93,7 @@ static uint8_t dhcp_request_options_data[] = {
 FEATURE_VERSION ( VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH );
 
 /** DHCP server address setting */
-struct setting dhcp_server_setting __setting = {
+struct setting dhcp_server_setting __setting ( SETTING_MISC ) = {
        .name = "dhcp-server",
        .description = "DHCP server address",
        .tag = DHCP_SERVER_IDENTIFIER,
@@ -101,7 +101,7 @@ struct setting dhcp_server_setting __setting = {
 };
 
 /** DHCP user class setting */
-struct setting user_class_setting __setting = {
+struct setting user_class_setting __setting ( SETTING_HOST_EXTRA ) = {
        .name = "user-class",
        .description = "User class identifier",
        .tag = DHCP_USER_CLASS_ID,
@@ -109,7 +109,7 @@ struct setting user_class_setting __setting = {
 };
 
 /** Use cached network settings */
-struct setting use_cached_setting __setting = {
+struct setting use_cached_setting __setting ( SETTING_MISC ) = {
        .name = "use-cached",
        .description = "Use cached network settings",
        .tag = DHCP_EB_USE_CACHED,
index 2326284bf321d1da704aceb216f774b7cbf88d08..31a355f1b925b7273e36c0a5f3837222c03f1f6d 100644 (file)
@@ -587,7 +587,7 @@ struct resolver dns_resolver __resolver ( RESOLV_NORMAL ) = {
  */
 
 /** DNS server setting */
-struct setting dns_setting __setting = {
+struct setting dns_setting __setting ( SETTING_IPv4_EXTRA ) = {
        .name = "dns",
        .description = "DNS server",
        .tag = DHCP_DNS_SERVERS,
@@ -595,7 +595,7 @@ struct setting dns_setting __setting = {
 };
 
 /** Domain name setting */
-struct setting domain_setting __setting = {
+struct setting domain_setting __setting ( SETTING_IPv4_EXTRA ) = {
        .name = "domain",
        .description = "Local domain",
        .tag = DHCP_DOMAIN_NAME,
index f81ba2f8c75e98e55b6fe90c71cbf07cf3eaa506..6d9fc2165bc09c6986ae488b0a36ad28c16a8425 100644 (file)
@@ -146,7 +146,7 @@ struct console_driver syslog_console __console_driver = {
  */
 
 /** Syslog server setting */
-struct setting syslog_setting __setting = {
+struct setting syslog_setting __setting ( SETTING_MISC ) = {
        .name = "syslog",
        .description = "Syslog server",
        .tag = DHCP_LOG_SERVERS,
index 777632ef9379a676f07167120ec4f4dbdb085838..f4e9f4c616ca3c51a6363075b0131fb6b4002922 100644 (file)
@@ -1215,7 +1215,7 @@ struct uri_opener mtftp_uri_opener __uri_opener = {
  */
 
 /** TFTP server setting */
-struct setting next_server_setting __setting = {
+struct setting next_server_setting __setting ( SETTING_BOOT ) = {
        .name = "next-server",
        .description = "TFTP server",
        .tag = DHCP_EB_SIADDR,
index f8eb71cde8d632b10a13db9080e1de832b1d3bfd..760e91c8b44f6a23bded3b357d7a930cd0ef0949 100644 (file)
@@ -99,7 +99,7 @@ static struct uri * parse_next_server_and_filename ( struct in_addr next_server,
 }
 
 /** The "keep-san" setting */
-struct setting keep_san_setting __setting = {
+struct setting keep_san_setting __setting ( SETTING_SANBOOT_EXTRA ) = {
        .name = "keep-san",
        .description = "Preserve SAN connection",
        .tag = DHCP_EB_KEEP_SAN,
@@ -107,7 +107,7 @@ struct setting keep_san_setting __setting = {
 };
 
 /** The "skip-san-boot" setting */
-struct setting skip_san_boot_setting __setting = {
+struct setting skip_san_boot_setting __setting ( SETTING_SANBOOT_EXTRA ) = {
        .name = "skip-san-boot",
        .description = "Do not boot the SAN drive after connecting",
        .tag = DHCP_EB_SKIP_SAN_BOOT,