4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI DHCP protocol implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RFCs supported are:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RFC 2131: Dynamic Host Configuration Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RFC 2132: DHCP Options and BOOTP Vendor Extensions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RFC 1534: Interoperation Between DHCP and BOOTP
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RFC 3396: Encoding Long Options in DHCP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DHCP_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'H', 'C', 'P')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DHCP_PROTOCOL_SIGNATURE SIGNATURE_32 ('d', 'h', 'c', 'p')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The state of the DHCP service. It starts as UNCONFIGED. If
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// and active child configures the service successfully, it
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// goes to CONFIGED. If the active child configures NULL, it
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// goes back to UNCONFIGED. It becomes DESTORY if it is (partly)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// destoried.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UDP_IO *UdpIo; // The UDP IO used for TransmitReceive.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// DHCP driver is specical in that it is a singleton. Although it
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// has a service binding, there can be only one active child.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INTN ServiceState; // CONFIGED, UNCONFIGED, and DESTORY
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STATUS IoStatus; // the result of last user operation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP4_ADDR ClientAddr; // lease IP or configured client address
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP4_PACKET *LastOffer; // The last received offer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INTN ExtraRefresh; // This refresh is reqested by user
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UDP_IO *UdpIo; // Udp child receiving all DHCP message
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP4_PACKET *LastPacket; // The last sent packet for retransmission
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Timer event and various timer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 PacketToLive; // Retransmission timer for our packets
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 LastTimeout; // Record the init value of PacketToLive every time
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ((Proto), DHCP_PROTOCOL, Dhcp4Protocol, DHCP_PROTOCOL_SIGNATURE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ((Sb), DHCP_SERVICE, ServiceBinding, DHCP_SERVICE_SIGNATURE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Give up the control of the DHCP service to let other child
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync resume. Don't change the service's DHCP state and the Client
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync address and option list configure as required by RFC2131.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DhcpSb The DHCP service instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Complete a Dhcp4 transaction and signal the upper layer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Instance Dhcp4 instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Free the resource related to the configure parameters.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DHCP driver will make a copy of the user's configure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync such as the time out value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Config The DHCP configure data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Set the elapsed time based on the given instance and the pointer to the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync elapsed time option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Elapsed The pointer to the position to append.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to the Dhcp4 instance.