[iscsi] Include both DNS addresses in iBFT, if available

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/1/head
Michael Brown 2010-12-09 15:35:02 +00:00
parent cb838cc419
commit 94cdad9c0e
1 changed files with 17 additions and 9 deletions

View File

@ -103,13 +103,18 @@ static void ibft_set_ipaddr ( struct ibft_ipaddr *ipaddr, struct in_addr in ) {
* *
* @v ipaddr IP address field * @v ipaddr IP address field
* @v setting Configuration setting * @v setting Configuration setting
* @v tag DHCP option tag * @v count Maximum number of IP addresses
*/ */
static void ibft_set_ipaddr_setting ( struct ibft_ipaddr *ipaddr, static void ibft_set_ipaddr_setting ( struct ibft_ipaddr *ipaddr,
struct setting *setting ) { struct setting *setting,
struct in_addr in; unsigned int count ) {
fetch_ipv4_setting ( NULL, setting, &in ); struct in_addr in[count];
ibft_set_ipaddr ( ipaddr, in ); unsigned int i;
fetch_ipv4_array_setting ( NULL, setting, in, count );
for ( i = 0 ; i < count ; i++ ) {
ibft_set_ipaddr ( &ipaddr[i], in[i] );
}
} }
/** /**
@ -233,12 +238,15 @@ static int ibft_fill_nic ( struct ibft_nic *nic,
IBFT_FL_NIC_FIRMWARE_BOOT_SELECTED ); IBFT_FL_NIC_FIRMWARE_BOOT_SELECTED );
/* Extract values from configuration settings */ /* Extract values from configuration settings */
ibft_set_ipaddr_setting ( &nic->ip_address, &ip_setting ); ibft_set_ipaddr_setting ( &nic->ip_address, &ip_setting, 1 );
DBG ( "iBFT NIC IP = %s\n", ibft_ipaddr ( &nic->ip_address ) ); DBG ( "iBFT NIC IP = %s\n", ibft_ipaddr ( &nic->ip_address ) );
ibft_set_ipaddr_setting ( &nic->gateway, &gateway_setting ); ibft_set_ipaddr_setting ( &nic->gateway, &gateway_setting, 1 );
DBG ( "iBFT NIC gateway = %s\n", ibft_ipaddr ( &nic->gateway ) ); DBG ( "iBFT NIC gateway = %s\n", ibft_ipaddr ( &nic->gateway ) );
ibft_set_ipaddr_setting ( &nic->dns[0], &dns_setting ); ibft_set_ipaddr_setting ( &nic->dns[0], &dns_setting,
DBG ( "iBFT NIC DNS = %s\n", ibft_ipaddr ( &nic->dns[0] ) ); ( sizeof ( nic->dns ) /
sizeof ( nic->dns[0] ) ) );
DBG ( "iBFT NIC DNS = %s", ibft_ipaddr ( &nic->dns[0] ) );
DBG ( ", %s\n", ibft_ipaddr ( &nic->dns[1] ) );
if ( ( rc = ibft_set_string_setting ( strings, &nic->hostname, if ( ( rc = ibft_set_string_setting ( strings, &nic->hostname,
&hostname_setting ) ) != 0 ) &hostname_setting ) ) != 0 )
return rc; return rc;