NetworkPkg/IScsiDxe/IScsiDhcp.c File Reference


Functions

EFI_STATUS IScsiDhcpExtractRootPath (IN CHAR8 *RootPath, IN UINT8 Length, IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData)
EFI_STATUS EFIAPI IScsiDhcpSelectOffer (IN EFI_DHCP4_PROTOCOL *This, IN VOID *Context, IN EFI_DHCP4_STATE CurrentState, IN EFI_DHCP4_EVENT Dhcp4Event, IN EFI_DHCP4_PACKET *Packet, OUT EFI_DHCP4_PACKET **NewPacket)
EFI_STATUS IScsiParseDhcpAck (IN EFI_DHCP4_PROTOCOL *Dhcp4, IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData)
EFI_STATUS IScsiDoDhcp (IN EFI_HANDLE Image, IN EFI_HANDLE Controller, IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData)

Detailed Description

iSCSI DHCP4 related configuration routines.

Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.


Function Documentation

EFI_STATUS IScsiDhcpExtractRootPath ( IN CHAR8 *  RootPath,
IN UINT8  Length,
IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA ConfigData 
)

Extract the Root Path option and get the required target information.

Parameters:
[in] RootPath The RootPath.
[in] Length Length of the RootPath option payload.
[in,out] ConfigData The iSCSI attempt configuration data read from a nonvolatile device.
Return values:
EFI_SUCCESS All required information is extracted from the RootPath option.
EFI_NOT_FOUND The RootPath is not an iSCSI RootPath.
EFI_OUT_OF_RESOURCES Failed to allocate memory.
EFI_INVALID_PARAMETER The RootPath is malformatted.

References _ISCSI_SESSION_CONFIG_NVDATA::BootLun, IP_MODE_AUTOCONFIG, _ISCSI_SESSION_CONFIG_NVDATA::IpMode, IpMode, ISCSI_NAME_MAX_SIZE, ISCSI_ROOT_PATH_FIELD_DELIMITER, ISCSI_ROOT_PATH_ID, ISCSI_WELL_KNOWN_PORT, IScsiAsciiStrToIp(), IScsiAsciiStrToLun(), IScsiNormalizeName(), _ISCSI_ROOT_PATH_FIELD::Len, RP_FIELD_IDX_LUN, RP_FIELD_IDX_MAX, RP_FIELD_IDX_PORT, RP_FIELD_IDX_PROTOCOL, RP_FIELD_IDX_SERVERNAME, RP_FIELD_IDX_TARGETNAME, _ISCSI_ROOT_PATH_FIELD::Str, _ISCSI_SESSION_CONFIG_NVDATA::TargetIp, _ISCSI_SESSION_CONFIG_NVDATA::TargetName, and _ISCSI_SESSION_CONFIG_NVDATA::TargetPort.

Referenced by IScsiDhcpSelectOffer().

EFI_STATUS EFIAPI IScsiDhcpSelectOffer ( IN EFI_DHCP4_PROTOCOL *  This,
IN VOID *  Context,
IN EFI_DHCP4_STATE  CurrentState,
IN EFI_DHCP4_EVENT  Dhcp4Event,
IN EFI_DHCP4_PACKET *  Packet,
OUT EFI_DHCP4_PACKET **  NewPacket 
)

The callback function registerd to the DHCP4 instance that is used to select the qualified DHCP OFFER.

Parameters:
[in] This The DHCP4 protocol.
[in] Context The context set when configuring the DHCP4 protocol.
[in] CurrentState The current state of the DHCP4 protocol.
[in] Dhcp4Event The event occurs in the current state.
[in] Packet The DHCP packet that is to be sent or was already received.
[out] NewPacket The packet used to replace the above Packet.
Return values:
EFI_SUCCESS Either the DHCP OFFER is qualified or we're not intereseted in the Dhcp4Event.
EFI_NOT_READY The DHCP OFFER packet doesn't match our requirements.
Others Other errors as indicated.

References DHCP4_TAG_ROOT_PATH, and IScsiDhcpExtractRootPath().

Referenced by IScsiDoDhcp().

EFI_STATUS IScsiDoDhcp ( IN EFI_HANDLE  Image,
IN EFI_HANDLE  Controller,
IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA ConfigData 
)

Parse the DHCP ACK to get the address configuration and DNS information.

Parameters:
[in] Image The handle of the driver image.
[in] Controller The handle of the controller.
[in,out] ConfigData The attempt configuration data.
Return values:
EFI_SUCCESS The DNS information is got from the DHCP ACK.
EFI_OUT_OF_RESOURCES Failed to allocate memory.
EFI_NO_MEDIA There was a media error.
Others Other errors as indicated.

References DHCP4_TAG_DNS, DHCP4_TAG_NETMASK, DHCP4_TAG_PARA_LIST, DHCP4_TAG_ROOT_PATH, DHCP4_TAG_ROUTER, IScsiDhcpSelectOffer(), IScsiParseDhcpAck(), and _ISCSI_SESSION_CONFIG_NVDATA::TargetInfoFromDhcp.

Referenced by IScsiGetConfigData().

EFI_STATUS IScsiParseDhcpAck ( IN EFI_DHCP4_PROTOCOL *  Dhcp4,
IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA ConfigData 
)

Parse the DHCP ACK to get the address configuration and DNS information.

Parameters:
[in] Dhcp4 The DHCP4 protocol.
[in,out] ConfigData The session configuration data.
Return values:
EFI_SUCCESS The DNS information is got from the DHCP ACK.
EFI_NO_MAPPING DHCP failed to acquire address and other information.
EFI_INVALID_PARAMETER The DHCP ACK's DNS option is malformatted.
EFI_DEVICE_ERROR Other errors as indicated.
EFI_OUT_OF_RESOURCES Failed to allocate memory.

References DHCP4_TAG_DNS, DHCP4_TAG_SERVER_ID, _ISCSI_SESSION_CONFIG_NVDATA::Gateway, _ISCSI_SESSION_CONFIG_NVDATA::LocalIp, and _ISCSI_SESSION_CONFIG_NVDATA::SubnetMask.

Referenced by IScsiDoDhcp().


Generated on Mon Sep 28 08:49:06 2015 for NetworkPkg[ALL] by  doxygen 1.5.7.1