/** @file\r
Dhcp6 internal data structure and definition declaration.\r
\r
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
#include <Uefi.h>\r
\r
+#include <IndustryStandard/Dhcp.h>\r
+\r
#include <Protocol/Dhcp6.h>\r
#include <Protocol/Udp6.h>\r
+#include <Protocol/Ip6Config.h>\r
#include <Protocol/ServiceBinding.h>\r
#include <Protocol/DriverBinding.h>\r
\r
#include <Library/UefiLib.h>\r
#include <Library/BaseLib.h>\r
#include <Library/NetLib.h>\r
+#include <Library/PrintLib.h>\r
+#include <Guid/ZeroGuid.h>\r
\r
\r
typedef struct _DHCP6_IA_CB DHCP6_IA_CB;\r
#define DHCP6_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'H', '6', 'S')\r
#define DHCP6_INSTANCE_SIGNATURE SIGNATURE_32 ('D', 'H', '6', 'I')\r
\r
-//\r
-// Transmit parameters of solicit message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_SOL_MAX_DELAY 1\r
-#define DHCP6_SOL_IRT 1\r
-#define DHCP6_SOL_MRC 0\r
-#define DHCP6_SOL_MRT 120\r
-#define DHCP6_SOL_MRD 0\r
-//\r
-// Transmit parameters of request message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_REQ_IRT 1\r
-#define DHCP6_REQ_MRC 10\r
-#define DHCP6_REQ_MRT 30\r
-#define DHCP6_REQ_MRD 0\r
-//\r
-// Transmit parameters of confirm message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_CNF_MAX_DELAY 1\r
-#define DHCP6_CNF_IRT 1\r
-#define DHCP6_CNF_MRC 0\r
-#define DHCP6_CNF_MRT 4\r
-#define DHCP6_CNF_MRD 10\r
-//\r
-// Transmit parameters of renew message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_REN_IRT 10\r
-#define DHCP6_REN_MRC 0\r
-#define DHCP6_REN_MRT 600\r
-#define DHCP6_REN_MRD 0\r
-//\r
-// Transmit parameters of rebind message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_REB_IRT 10\r
-#define DHCP6_REB_MRC 0\r
-#define DHCP6_REB_MRT 600\r
-#define DHCP6_REB_MRD 0\r
-//\r
-// Transmit parameters of information request message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_INF_MAX_DELAY 1\r
-#define DHCP6_INF_IRT 1\r
-#define DHCP6_INF_MRC 0\r
-#define DHCP6_INF_MRT 120\r
-#define DHCP6_INF_MRD 0\r
-//\r
-// Transmit parameters of release message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_REL_IRT 1\r
-#define DHCP6_REL_MRC 5\r
-#define DHCP6_REL_MRT 0\r
-#define DHCP6_REL_MRD 0\r
-//\r
-// Transmit parameters of decline message, refers to section-5.5 of rfc-3315.\r
-//\r
-#define DHCP6_DEC_IRT 1\r
-#define DHCP6_DEC_MRC 5\r
-#define DHCP6_DEC_MRT 0\r
-#define DHCP6_DEC_MRD 0\r
-\r
#define DHCP6_PACKET_ALL 0\r
#define DHCP6_PACKET_STATEFUL 1\r
#define DHCP6_PACKET_STATELESS 2\r
#define DHCP6_PORT_CLIENT 546\r
#define DHCP6_PORT_SERVER 547\r
\r
+#define DHCP_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20)\r
+\r
#define DHCP6_INSTANCE_FROM_THIS(Instance) CR ((Instance), DHCP6_INSTANCE, Dhcp6, DHCP6_INSTANCE_SIGNATURE)\r
#define DHCP6_SERVICE_FROM_THIS(Service) CR ((Service), DHCP6_SERVICE, ServiceBinding, DHCP6_SERVICE_SIGNATURE)\r
\r
extern EFI_IPv6_ADDRESS mAllDhcpServersAddress;\r
extern EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate;\r
\r
-//\r
-// Enumeration of Dhcp6 message type, refers to section-5.3 of rfc-3315.\r
-//\r
-typedef enum {\r
- Dhcp6MsgSolicit = 1,\r
- Dhcp6MsgAdvertise = 2,\r
- Dhcp6MsgRequest = 3,\r
- Dhcp6MsgConfirm = 4,\r
- Dhcp6MsgRenew = 5,\r
- Dhcp6MsgRebind = 6,\r
- Dhcp6MsgReply = 7,\r
- Dhcp6MsgRelease = 8,\r
- Dhcp6MsgDecline = 9,\r
- Dhcp6MsgReconfigure = 10,\r
- Dhcp6MsgInfoRequest = 11\r
-} DHCP6_MSG_TYPE;\r
-\r
-//\r
-// Enumeration of option code in Dhcp6 packet, refers to section-24.3 of rfc-3315.\r
-//\r
-typedef enum {\r
- Dhcp6OptClientId = 1,\r
- Dhcp6OptServerId = 2,\r
- Dhcp6OptIana = 3,\r
- Dhcp6OptIata = 4,\r
- Dhcp6OptIaAddr = 5,\r
- Dhcp6OptRequestOption = 6,\r
- Dhcp6OptPreference = 7,\r
- Dhcp6OptElapsedTime = 8,\r
- Dhcp6OptReplayMessage = 9,\r
- Dhcp6OptAuthentication = 11,\r
- Dhcp6OptServerUnicast = 12,\r
- Dhcp6OptStatusCode = 13,\r
- Dhcp6OptRapidCommit = 14,\r
- Dhcp6OptUserClass = 15,\r
- Dhcp6OptVendorClass = 16,\r
- Dhcp6OptVendorInfo = 17,\r
- Dhcp6OptInterfaceId = 18,\r
- Dhcp6OptReconfigMessage = 19,\r
- Dhcp6OptReconfigureAccept = 20\r
-} DHCP6_OPT_CODE;\r
-\r
-//\r
-// Enumeration of status code recorded by IANA, refers to section-24.4 of rfc-3315.\r
-//\r
-typedef enum {\r
- Dhcp6StsSuccess = 0,\r
- Dhcp6StsUnspecFail = 1,\r
- Dhcp6StsNoAddrsAvail = 2,\r
- Dhcp6StsNoBinding = 3,\r
- Dhcp6StsNotOnLink = 4,\r
- Dhcp6StsUseMulticast = 5\r
-} DHCP6_STS_CODE;\r
-\r
-//\r
-// Enumeration of Duid type recorded by IANA, refers to section-24.5 of rfc-3315.\r
-//\r
-typedef enum {\r
- Dhcp6DuidTypeLlt = 1,\r
- Dhcp6DuidTypeEn = 2,\r
- Dhcp6DuidTypeLl = 3,\r
- Dhcp6DuidTypeUuid = 4\r
-} DHCP6_DUID_TYPE;\r
-\r
//\r
// Control block for each IA.\r
//\r
EFI_DHCP6_PACKET *AdSelect;\r
UINT8 AdPref;\r
EFI_IPv6_ADDRESS *Unicast;\r
- EFI_STATUS UdpSts;\r
- BOOLEAN InDestory;\r
+ volatile EFI_STATUS UdpSts;\r
+ BOOLEAN InDestroy;\r
BOOLEAN MediaPresent;\r
+ //\r
+ // StartTime is used to calculate the 'elapsed-time' option. Refer to RFC3315,\r
+ // the elapsed-time is amount of time since the client began its current DHCP transaction.\r
+ //\r
UINT64 StartTime;\r
};\r
\r
EFI_HANDLE Image;\r
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;\r
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
+ EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg;\r
EFI_DHCP6_DUID *ClientId;\r
UDP_IO *UdpIo;\r
UINT32 Xid;\r
LIST_ENTRY Child;\r
UINTN NumOfChild;\r
- BOOLEAN InDestory;\r
};\r
\r
/**\r