summaryrefslogtreecommitdiffstats
path: root/src/drivers/block
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/block')
-rw-r--r--src/drivers/block/ibft.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/drivers/block/ibft.c b/src/drivers/block/ibft.c
index f61add321..6aabd766a 100644
--- a/src/drivers/block/ibft.c
+++ b/src/drivers/block/ibft.c
@@ -236,6 +236,7 @@ static int ibft_fill_nic ( struct ibft_nic *nic,
struct in_addr netmask_addr = { 0 };
unsigned int netmask_count = 0;
struct settings *parent = netdev_settings ( netdev );
+ struct settings *origin;
int rc;
/* Fill in common header */
@@ -245,6 +246,12 @@ static int ibft_fill_nic ( struct ibft_nic *nic,
nic->header.flags = ( IBFT_FL_NIC_BLOCK_VALID |
IBFT_FL_NIC_FIRMWARE_BOOT_SELECTED );
+ /* Determine origin of IP address */
+ fetch_setting ( parent, &ip_setting, &origin, NULL, NULL, 0 );
+ nic->origin = ( ( origin == parent ) ?
+ IBFT_NIC_ORIGIN_MANUAL : IBFT_NIC_ORIGIN_DHCP );
+ DBG ( "iBFT NIC origin = %d\n", nic->origin );
+
/* Extract values from configuration settings */
ibft_set_ipaddr_setting ( parent, &nic->ip_address, &ip_setting, 1 );
DBG ( "iBFT NIC IP = %s\n", ibft_ipaddr ( &nic->ip_address ) );