summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/fw_context.h11
-rw-r--r--utils/fwparam_ibft/fw_entry.c5
-rw-r--r--utils/fwparam_ibft/fwparam_sysfs.c3
3 files changed, 14 insertions, 5 deletions
diff --git a/include/fw_context.h b/include/fw_context.h
index 295b54d..6a7ec1a 100644
--- a/include/fw_context.h
+++ b/include/fw_context.h
@@ -28,6 +28,15 @@
#include "list.h"
#include "auth.h"
+enum ibft_ip_prefix_origin {
+ IBFT_IP_PREFIX_ORIGIN_OTHER = 0,
+ IBFT_IP_PREFIX_ORIGIN_MANUAL,
+ IBFT_IP_PREFIX_ORIGIN_WELL_KNOWN,
+ IBFT_IP_PREFIX_ORIGIN_DHCP,
+ IBFT_IP_PREFIX_ORIGIN_ROUTER_ADVERTISEMENT,
+ IBFT_IP_PREFIX_ORIGIN_UNCHANGED = 16
+};
+
struct boot_context {
struct list_head list;
char boot_root[BOOT_NAME_MAXLEN];
@@ -48,7 +57,7 @@ struct boot_context {
char initiatorname[TARGET_NAME_MAXLEN + 1];
/* network settings */
- char origin[2];
+ enum ibft_ip_prefix_origin origin;
char dhcp[NI_MAXHOST];
char iface[IF_NAMESIZE];
char mac[18];
diff --git a/utils/fwparam_ibft/fw_entry.c b/utils/fwparam_ibft/fw_entry.c
index 9f0797f..f94a035 100644
--- a/utils/fwparam_ibft/fw_entry.c
+++ b/utils/fwparam_ibft/fw_entry.c
@@ -192,11 +192,12 @@ static void dump_network(struct boot_context *context)
if (strlen(context->mac))
printf("%s = %s\n", IFACE_HWADDR, context->mac);
/*
- * If the 'origin' field is '3' then DHCP is used.
+ * If the 'origin' field is 3 (IBFT_IP_PREFIX_ORIGIN_DHCP),
+ * then DHCP is used.
* Otherwise evaluate the 'dhcp' field, if this has a valid
* address then DHCP was used (broadcom sends 0.0.0.0).
*/
- if ((strlen(context->origin) && !strcmp(context->origin, "3")) ||
+ if ((context->origin == IBFT_IP_PREFIX_ORIGIN_DHCP) ||
(strlen(context->dhcp) && strcmp(context->dhcp, "0.0.0.0")))
printf("%s = DHCP\n", IFACE_BOOT_PROTO);
else
diff --git a/utils/fwparam_ibft/fwparam_sysfs.c b/utils/fwparam_ibft/fwparam_sysfs.c
index b531906..cd87b68 100644
--- a/utils/fwparam_ibft/fwparam_sysfs.c
+++ b/utils/fwparam_ibft/fwparam_sysfs.c
@@ -217,8 +217,7 @@ static int fill_nic_context(char *subsys, char *id,
sizeof(context->secondary_dns));
sysfs_get_str(id, subsys, "dhcp", context->dhcp,
sizeof(context->dhcp));
- sysfs_get_str(id, subsys, "origin", context->origin,
- sizeof(context->origin));
+ sysfs_get_int(id, subsys, "origin", (int *)&context->origin);
return 0;
}