/// to validate a dhcp message. Refere the comments of the\r
/// DHCP_OPTION_FORMAT structure.\r
///\r
-DHCP_OPTION_FORMAT DhcpOptionFormats[] = {\r
- {DHCP4_TAG_NETMASK, DHCP_OPTION_IP, 1, 1 , TRUE},\r
- {DHCP4_TAG_TIME_OFFSET, DHCP_OPTION_INT32, 1, 1 , FALSE},\r
- {DHCP4_TAG_ROUTER, DHCP_OPTION_IP, 1, -1 , TRUE},\r
- {DHCP4_TAG_TIME_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_NAME_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_DNS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_LOG_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_COOKIE_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_LPR_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_IMPRESS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_RL_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_HOSTNAME, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_BOOTFILE_LEN, DHCP_OPTION_INT16, 1, 1 , FALSE},\r
- {DHCP4_TAG_DUMP, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_DOMAINNAME, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_SWAP_SERVER, DHCP_OPTION_IP, 1, 1 , FALSE},\r
- {DHCP4_TAG_ROOTPATH, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_EXTEND_PATH, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_IPFORWARD, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_NONLOCAL_SRR, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_POLICY_SRR, DHCP_OPTION_IPPAIR, 1, -1 , FALSE},\r
- {DHCP4_TAG_EMTU, DHCP_OPTION_INT16, 1, 1 , FALSE},\r
- {DHCP4_TAG_TTL, DHCP_OPTION_INT8, 1, 1 , FALSE},\r
- {DHCP4_TAG_PATHMTU_AGE, DHCP_OPTION_INT32, 1, 1 , FALSE},\r
- {DHCP4_TAG_PATHMTU_PLATEAU,DHCP_OPTION_INT16, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_IFMTU, DHCP_OPTION_INT16, 1, 1 , FALSE},\r
- {DHCP4_TAG_SUBNET_LOCAL, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_BROADCAST, DHCP_OPTION_IP, 1, 1 , FALSE},\r
- {DHCP4_TAG_DISCOVER_MASK, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_SUPPLY_MASK, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_DISCOVER_ROUTE, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_ROUTER_SOLICIT, DHCP_OPTION_IP, 1, 1 , FALSE},\r
- {DHCP4_TAG_STATIC_ROUTE, DHCP_OPTION_IPPAIR, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_TRAILER, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
- {DHCP4_TAG_ARPAGE, DHCP_OPTION_INT32, 1, 1 , FALSE},\r
- {DHCP4_TAG_ETHER_ENCAP, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
-\r
- {DHCP4_TAG_TCP_TTL, DHCP_OPTION_INT8, 1, 1 , FALSE},\r
- {DHCP4_TAG_KEEP_INTERVAL, DHCP_OPTION_INT32, 1, 1 , FALSE},\r
- {DHCP4_TAG_KEEP_GARBAGE, DHCP_OPTION_SWITCH, 1, 1 , FALSE},\r
-\r
- {DHCP4_TAG_NIS_DOMAIN, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_NIS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_NTP_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_VENDOR, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_NBNS, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_NBDD, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_NBTYPE, DHCP_OPTION_INT8, 1, 1 , FALSE},\r
- {DHCP4_TAG_NBSCOPE, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_XFONT, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_XDM, DHCP_OPTION_IP, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_REQUEST_IP, DHCP_OPTION_IP, 1, 1 , FALSE},\r
- {DHCP4_TAG_LEASE, DHCP_OPTION_INT32, 1, 1 , TRUE},\r
- {DHCP4_TAG_OVERLOAD, DHCP_OPTION_INT8, 1, 1 , TRUE},\r
- {DHCP4_TAG_MSG_TYPE, DHCP_OPTION_INT8, 1, 1 , TRUE},\r
- {DHCP4_TAG_SERVER_ID, DHCP_OPTION_IP, 1, 1 , TRUE},\r
- {DHCP4_TAG_PARA_LIST, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_MESSAGE, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_MAXMSG, DHCP_OPTION_INT16, 1, 1 , FALSE},\r
- {DHCP4_TAG_T1, DHCP_OPTION_INT32, 1, 1 , TRUE},\r
- {DHCP4_TAG_T2, DHCP_OPTION_INT32, 1, 1 , TRUE},\r
- {DHCP4_TAG_VENDOR_CLASS_ID,DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_CLIENT_ID, DHCP_OPTION_INT8, 2, -1 , FALSE},\r
-\r
- {DHCP4_TAG_NISPLUS, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_NISPLUS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_TFTP, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
- {DHCP4_TAG_BOOTFILE, DHCP_OPTION_INT8, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_MOBILEIP, DHCP_OPTION_IP, 0, -1 , FALSE},\r
- {DHCP4_TAG_SMTP, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_POP3, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_NNTP, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_WWW, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_FINGER, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_IRC, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_STTALK, DHCP_OPTION_IP, 1, -1 , FALSE},\r
- {DHCP4_TAG_STDA, DHCP_OPTION_IP, 1, -1 , FALSE},\r
-\r
- {DHCP4_TAG_CLASSLESS_ROUTE,DHCP_OPTION_INT8, 5, -1 , FALSE},\r
+DHCP_OPTION_FORMAT DhcpOptionFormats[] = {\r
+ { DHCP4_TAG_NETMASK, DHCP_OPTION_IP, 1, 1, TRUE },\r
+ { DHCP4_TAG_TIME_OFFSET, DHCP_OPTION_INT32, 1, 1, FALSE },\r
+ { DHCP4_TAG_ROUTER, DHCP_OPTION_IP, 1, -1, TRUE },\r
+ { DHCP4_TAG_TIME_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_NAME_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_DNS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_LOG_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_COOKIE_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_LPR_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_IMPRESS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_RL_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_HOSTNAME, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_BOOTFILE_LEN, DHCP_OPTION_INT16, 1, 1, FALSE },\r
+ { DHCP4_TAG_DUMP, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_DOMAINNAME, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_SWAP_SERVER, DHCP_OPTION_IP, 1, 1, FALSE },\r
+ { DHCP4_TAG_ROOTPATH, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_EXTEND_PATH, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_IPFORWARD, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_NONLOCAL_SRR, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_POLICY_SRR, DHCP_OPTION_IPPAIR, 1, -1, FALSE },\r
+ { DHCP4_TAG_EMTU, DHCP_OPTION_INT16, 1, 1, FALSE },\r
+ { DHCP4_TAG_TTL, DHCP_OPTION_INT8, 1, 1, FALSE },\r
+ { DHCP4_TAG_PATHMTU_AGE, DHCP_OPTION_INT32, 1, 1, FALSE },\r
+ { DHCP4_TAG_PATHMTU_PLATEAU, DHCP_OPTION_INT16, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_IFMTU, DHCP_OPTION_INT16, 1, 1, FALSE },\r
+ { DHCP4_TAG_SUBNET_LOCAL, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_BROADCAST, DHCP_OPTION_IP, 1, 1, FALSE },\r
+ { DHCP4_TAG_DISCOVER_MASK, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_SUPPLY_MASK, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_DISCOVER_ROUTE, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_ROUTER_SOLICIT, DHCP_OPTION_IP, 1, 1, FALSE },\r
+ { DHCP4_TAG_STATIC_ROUTE, DHCP_OPTION_IPPAIR, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_TRAILER, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+ { DHCP4_TAG_ARPAGE, DHCP_OPTION_INT32, 1, 1, FALSE },\r
+ { DHCP4_TAG_ETHER_ENCAP, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+\r
+ { DHCP4_TAG_TCP_TTL, DHCP_OPTION_INT8, 1, 1, FALSE },\r
+ { DHCP4_TAG_KEEP_INTERVAL, DHCP_OPTION_INT32, 1, 1, FALSE },\r
+ { DHCP4_TAG_KEEP_GARBAGE, DHCP_OPTION_SWITCH, 1, 1, FALSE },\r
+\r
+ { DHCP4_TAG_NIS_DOMAIN, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_NIS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_NTP_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_VENDOR, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_NBNS, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_NBDD, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_NBTYPE, DHCP_OPTION_INT8, 1, 1, FALSE },\r
+ { DHCP4_TAG_NBSCOPE, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_XFONT, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_XDM, DHCP_OPTION_IP, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_REQUEST_IP, DHCP_OPTION_IP, 1, 1, FALSE },\r
+ { DHCP4_TAG_LEASE, DHCP_OPTION_INT32, 1, 1, TRUE },\r
+ { DHCP4_TAG_OVERLOAD, DHCP_OPTION_INT8, 1, 1, TRUE },\r
+ { DHCP4_TAG_MSG_TYPE, DHCP_OPTION_INT8, 1, 1, TRUE },\r
+ { DHCP4_TAG_SERVER_ID, DHCP_OPTION_IP, 1, 1, TRUE },\r
+ { DHCP4_TAG_PARA_LIST, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_MESSAGE, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_MAXMSG, DHCP_OPTION_INT16, 1, 1, FALSE },\r
+ { DHCP4_TAG_T1, DHCP_OPTION_INT32, 1, 1, TRUE },\r
+ { DHCP4_TAG_T2, DHCP_OPTION_INT32, 1, 1, TRUE },\r
+ { DHCP4_TAG_VENDOR_CLASS_ID, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_CLIENT_ID, DHCP_OPTION_INT8, 2, -1, FALSE },\r
+\r
+ { DHCP4_TAG_NISPLUS, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_NISPLUS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_TFTP, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+ { DHCP4_TAG_BOOTFILE, DHCP_OPTION_INT8, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_MOBILEIP, DHCP_OPTION_IP, 0, -1, FALSE },\r
+ { DHCP4_TAG_SMTP, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_POP3, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_NNTP, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_WWW, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_FINGER, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_IRC, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_STTALK, DHCP_OPTION_IP, 1, -1, FALSE },\r
+ { DHCP4_TAG_STDA, DHCP_OPTION_IP, 1, -1, FALSE },\r
+\r
+ { DHCP4_TAG_CLASSLESS_ROUTE, DHCP_OPTION_INT8, 5, -1, FALSE },\r
};\r
\r
-\r
/**\r
Binary search the DhcpOptionFormats array to find the format\r
information about a specific option.\r
**/\r
DHCP_OPTION_FORMAT *\r
DhcpFindOptionFormat (\r
- IN UINT8 Tag\r
+ IN UINT8 Tag\r
)\r
{\r
- INTN Left;\r
- INTN Right;\r
- INTN Middle;\r
+ INTN Left;\r
+ INTN Right;\r
+ INTN Middle;\r
\r
Left = 0;\r
Right = sizeof (DhcpOptionFormats) / sizeof (DHCP_OPTION_FORMAT) - 1;\r
if (Tag < DhcpOptionFormats[Middle].Tag) {\r
Right = Middle - 1;\r
} else {\r
- Left = Middle + 1;\r
+ Left = Middle + 1;\r
}\r
}\r
\r
return NULL;\r
}\r
\r
-\r
/**\r
Validate whether a single DHCP option is valid according to its format.\r
\r
**/\r
BOOLEAN\r
DhcpOptionIsValid (\r
- IN DHCP_OPTION_FORMAT *Format,\r
- IN UINT8 *OptValue,\r
- IN INTN Len\r
+ IN DHCP_OPTION_FORMAT *Format,\r
+ IN UINT8 *OptValue,\r
+ IN INTN Len\r
)\r
{\r
- INTN Unit;\r
- INTN Occur;\r
- INTN Index;\r
+ INTN Unit;\r
+ INTN Occur;\r
+ INTN Index;\r
\r
Unit = 0;\r
\r
switch (Format->Type) {\r
- case DHCP_OPTION_SWITCH:\r
- case DHCP_OPTION_INT8:\r
- Unit = 1;\r
- break;\r
+ case DHCP_OPTION_SWITCH:\r
+ case DHCP_OPTION_INT8:\r
+ Unit = 1;\r
+ break;\r
\r
- case DHCP_OPTION_INT16:\r
- Unit = 2;\r
- break;\r
+ case DHCP_OPTION_INT16:\r
+ Unit = 2;\r
+ break;\r
\r
- case DHCP_OPTION_INT32:\r
- case DHCP_OPTION_IP:\r
- Unit = 4;\r
- break;\r
+ case DHCP_OPTION_INT32:\r
+ case DHCP_OPTION_IP:\r
+ Unit = 4;\r
+ break;\r
\r
- case DHCP_OPTION_IPPAIR:\r
- Unit = 8;\r
- break;\r
+ case DHCP_OPTION_IPPAIR:\r
+ Unit = 8;\r
+ break;\r
}\r
\r
ASSERT (Unit != 0);\r
\r
if (((Format->MinOccur != -1) && (Occur < Format->MinOccur)) ||\r
((Format->MaxOccur != -1) && (Occur > Format->MaxOccur))\r
- ) {\r
+ )\r
+ {\r
return FALSE;\r
}\r
\r
return TRUE;\r
}\r
\r
-\r
/**\r
Extract the client interested options, all the parameters are\r
converted to host byte order.\r
**/\r
EFI_STATUS\r
DhcpGetParameter (\r
- IN UINT8 Tag,\r
- IN INTN Len,\r
- IN UINT8 *Data,\r
- OUT DHCP_PARAMETER *Para\r
+ IN UINT8 Tag,\r
+ IN INTN Len,\r
+ IN UINT8 *Data,\r
+ OUT DHCP_PARAMETER *Para\r
)\r
{\r
switch (Tag) {\r
- case DHCP4_TAG_NETMASK:\r
- Para->NetMask = NetGetUint32 (Data);\r
- break;\r
+ case DHCP4_TAG_NETMASK:\r
+ Para->NetMask = NetGetUint32 (Data);\r
+ break;\r
\r
- case DHCP4_TAG_ROUTER:\r
- //\r
- // Return the first router to consumer which is the preferred one\r
- //\r
- Para->Router = NetGetUint32 (Data);\r
- break;\r
+ case DHCP4_TAG_ROUTER:\r
+ //\r
+ // Return the first router to consumer which is the preferred one\r
+ //\r
+ Para->Router = NetGetUint32 (Data);\r
+ break;\r
\r
- case DHCP4_TAG_LEASE:\r
- Para->Lease = NetGetUint32 (Data);\r
- break;\r
+ case DHCP4_TAG_LEASE:\r
+ Para->Lease = NetGetUint32 (Data);\r
+ break;\r
\r
- case DHCP4_TAG_OVERLOAD:\r
- Para->Overload = *Data;\r
+ case DHCP4_TAG_OVERLOAD:\r
+ Para->Overload = *Data;\r
\r
- if ((Para->Overload < 1) || (Para->Overload > 3)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
- break;\r
+ if ((Para->Overload < 1) || (Para->Overload > 3)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
\r
- case DHCP4_TAG_MSG_TYPE:\r
- Para->DhcpType = *Data;\r
+ break;\r
\r
- if ((Para->DhcpType < 1) || (Para->DhcpType > 9)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
- break;\r
+ case DHCP4_TAG_MSG_TYPE:\r
+ Para->DhcpType = *Data;\r
+\r
+ if ((Para->DhcpType < 1) || (Para->DhcpType > 9)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
\r
- case DHCP4_TAG_SERVER_ID:\r
- Para->ServerId = NetGetUint32 (Data);\r
- break;\r
+ break;\r
\r
- case DHCP4_TAG_T1:\r
- Para->T1 = NetGetUint32 (Data);\r
- break;\r
+ case DHCP4_TAG_SERVER_ID:\r
+ Para->ServerId = NetGetUint32 (Data);\r
+ break;\r
\r
- case DHCP4_TAG_T2:\r
- Para->T2 = NetGetUint32 (Data);\r
- break;\r
+ case DHCP4_TAG_T1:\r
+ Para->T1 = NetGetUint32 (Data);\r
+ break;\r
+\r
+ case DHCP4_TAG_T2:\r
+ Para->T2 = NetGetUint32 (Data);\r
+ break;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Inspect all the options in a single buffer. DHCP options may be contained\r
in several buffers, such as the BOOTP options filed, boot file or server\r
**/\r
EFI_STATUS\r
DhcpIterateBufferOptions (\r
- IN UINT8 *Buffer,\r
- IN INTN BufLen,\r
- IN DHCP_CHECK_OPTION Check OPTIONAL,\r
- IN VOID *Context,\r
- OUT UINT8 *Overload OPTIONAL\r
+ IN UINT8 *Buffer,\r
+ IN INTN BufLen,\r
+ IN DHCP_CHECK_OPTION Check OPTIONAL,\r
+ IN VOID *Context,\r
+ OUT UINT8 *Overload OPTIONAL\r
)\r
{\r
- INTN Cur;\r
- UINT8 Tag;\r
- UINT8 Len;\r
+ INTN Cur;\r
+ UINT8 Tag;\r
+ UINT8 Len;\r
\r
Cur = 0;\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
-\r
/**\r
Iterate through a DHCP message to visit each option. First inspect\r
all the options in the OPTION field. Then if overloaded, inspect\r
**/\r
EFI_STATUS\r
DhcpIterateOptions (\r
- IN EFI_DHCP4_PACKET *Packet,\r
- IN DHCP_CHECK_OPTION Check OPTIONAL,\r
- IN VOID *Context\r
+ IN EFI_DHCP4_PACKET *Packet,\r
+ IN DHCP_CHECK_OPTION Check OPTIONAL,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT8 Overload;\r
+ EFI_STATUS Status;\r
+ UINT8 Overload;\r
\r
Overload = 0;\r
\r
- Status = DhcpIterateBufferOptions (\r
- Packet->Dhcp4.Option,\r
- Packet->Length - sizeof (EFI_DHCP4_HEADER) - sizeof (UINT32),\r
- Check,\r
- Context,\r
- &Overload\r
- );\r
+ Status = DhcpIterateBufferOptions (\r
+ Packet->Dhcp4.Option,\r
+ Packet->Length - sizeof (EFI_DHCP4_HEADER) - sizeof (UINT32),\r
+ Check,\r
+ Context,\r
+ &Overload\r
+ );\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
\r
if ((Overload == DHCP_OVERLOAD_FILENAME) || (Overload == DHCP_OVERLOAD_BOTH)) {\r
Status = DhcpIterateBufferOptions (\r
- (UINT8 *) Packet->Dhcp4.Header.BootFileName,\r
+ (UINT8 *)Packet->Dhcp4.Header.BootFileName,\r
128,\r
Check,\r
Context,\r
\r
if ((Overload == DHCP_OVERLOAD_SVRNAME) || (Overload == DHCP_OVERLOAD_BOTH)) {\r
Status = DhcpIterateBufferOptions (\r
- (UINT8 *) Packet->Dhcp4.Header.ServerName,\r
+ (UINT8 *)Packet->Dhcp4.Header.ServerName,\r
64,\r
Check,\r
Context,\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Call back function to DhcpIterateOptions to compute each option's\r
length. It just adds the data length of all the occurrences of this\r
**/\r
EFI_STATUS\r
DhcpGetOptionLen (\r
- IN UINT8 Tag,\r
- IN UINT8 Len,\r
- IN UINT8 *Data,\r
- IN VOID *Context\r
+ IN UINT8 Tag,\r
+ IN UINT8 Len,\r
+ IN UINT8 *Data,\r
+ IN VOID *Context\r
)\r
{\r
- DHCP_OPTION_COUNT *OpCount;\r
+ DHCP_OPTION_COUNT *OpCount;\r
\r
- OpCount = (DHCP_OPTION_COUNT *) Context;\r
- OpCount[Tag].Offset = (UINT16) (OpCount[Tag].Offset + Len);\r
+ OpCount = (DHCP_OPTION_COUNT *)Context;\r
+ OpCount[Tag].Offset = (UINT16)(OpCount[Tag].Offset + Len);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Call back function to DhcpIterateOptions to consolidate each option's\r
data. There are maybe several occurrence of the same option.\r
**/\r
EFI_STATUS\r
DhcpFillOption (\r
- IN UINT8 Tag,\r
- IN UINT8 Len,\r
- IN UINT8 *Data,\r
- IN VOID *Context\r
+ IN UINT8 Tag,\r
+ IN UINT8 Len,\r
+ IN UINT8 *Data,\r
+ IN VOID *Context\r
)\r
{\r
- DHCP_OPTION_CONTEXT *OptContext;\r
- DHCP_OPTION_COUNT *OptCount;\r
- DHCP_OPTION *Options;\r
- UINT8 *Buf;\r
- UINT8 Index;\r
+ DHCP_OPTION_CONTEXT *OptContext;\r
+ DHCP_OPTION_COUNT *OptCount;\r
+ DHCP_OPTION *Options;\r
+ UINT8 *Buf;\r
+ UINT8 Index;\r
\r
- OptContext = (DHCP_OPTION_CONTEXT *) Context;\r
+ OptContext = (DHCP_OPTION_CONTEXT *)Context;\r
\r
- OptCount = OptContext->OpCount;\r
- Index = OptCount[Tag].Index;\r
- Options = OptContext->Options;\r
- Buf = OptContext->Buf;\r
+ OptCount = OptContext->OpCount;\r
+ Index = OptCount[Tag].Index;\r
+ Options = OptContext->Options;\r
+ Buf = OptContext->Buf;\r
\r
if (Options[Index].Data == NULL) {\r
Options[Index].Tag = Tag;\r
\r
CopyMem (Buf + OptCount[Tag].Offset, Data, Len);\r
\r
- OptCount[Tag].Offset = (UINT16) (OptCount[Tag].Offset + Len);\r
- Options[Index].Len = (UINT16) (Options[Index].Len + Len);\r
+ OptCount[Tag].Offset = (UINT16)(OptCount[Tag].Offset + Len);\r
+ Options[Index].Len = (UINT16)(Options[Index].Len + Len);\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Parse the options of a DHCP packet. It supports RFC 3396: Encoding\r
Long Options in DHCP. That is, it will combine all the option value\r
**/\r
EFI_STATUS\r
DhcpParseOption (\r
- IN EFI_DHCP4_PACKET *Packet,\r
- OUT INTN *Count,\r
- OUT DHCP_OPTION **OptionPoint\r
+ IN EFI_DHCP4_PACKET *Packet,\r
+ OUT INTN *Count,\r
+ OUT DHCP_OPTION **OptionPoint\r
)\r
{\r
- DHCP_OPTION_CONTEXT Context;\r
- DHCP_OPTION *Options;\r
- DHCP_OPTION_COUNT *OptCount;\r
- EFI_STATUS Status;\r
- UINT16 TotalLen;\r
- INTN OptNum;\r
- INTN Index;\r
+ DHCP_OPTION_CONTEXT Context;\r
+ DHCP_OPTION *Options;\r
+ DHCP_OPTION_COUNT *OptCount;\r
+ EFI_STATUS Status;\r
+ UINT16 TotalLen;\r
+ INTN OptNum;\r
+ INTN Index;\r
\r
ASSERT ((Count != NULL) && (OptionPoint != NULL));\r
\r
// OptCount[Index].Offset specifies the offset into the continuous\r
// option value buffer to put the data.\r
//\r
- TotalLen = 0;\r
- OptNum = 0;\r
+ TotalLen = 0;\r
+ OptNum = 0;\r
\r
for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) {\r
if (OptCount[Index].Offset != 0) {\r
- OptCount[Index].Index = (UINT8) OptNum;\r
+ OptCount[Index].Index = (UINT8)OptNum;\r
\r
- TotalLen = (UINT16) (TotalLen + OptCount[Index].Offset);\r
- OptCount[Index].Offset = (UINT16) (TotalLen - OptCount[Index].Offset);\r
+ TotalLen = (UINT16)(TotalLen + OptCount[Index].Offset);\r
+ OptCount[Index].Offset = (UINT16)(TotalLen - OptCount[Index].Offset);\r
\r
OptNum++;\r
}\r
}\r
\r
- *Count = OptNum;\r
- *OptionPoint = NULL;\r
+ *Count = OptNum;\r
+ *OptionPoint = NULL;\r
\r
if (OptNum == 0) {\r
goto ON_EXIT;\r
// Allocate a buffer to hold the DHCP options, and after that, a\r
// continuous buffer to put all the options' data.\r
//\r
- Options = AllocateZeroPool ((UINTN) (OptNum * sizeof (DHCP_OPTION)) + TotalLen);\r
+ Options = AllocateZeroPool ((UINTN)(OptNum * sizeof (DHCP_OPTION)) + TotalLen);\r
\r
if (Options == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
\r
Context.OpCount = OptCount;\r
Context.Options = Options;\r
- Context.Buf = (UINT8 *) (Options + OptNum);\r
+ Context.Buf = (UINT8 *)(Options + OptNum);\r
\r
- Status = DhcpIterateOptions (Packet, DhcpFillOption, &Context);\r
+ Status = DhcpIterateOptions (Packet, DhcpFillOption, &Context);\r
\r
if (EFI_ERROR (Status)) {\r
FreePool (Options);\r
return Status;\r
}\r
\r
-\r
/**\r
Validate the packet's options. If necessary, allocate\r
and fill in the interested parameters.\r
**/\r
EFI_STATUS\r
DhcpValidateOptions (\r
- IN EFI_DHCP4_PACKET *Packet,\r
- OUT DHCP_PARAMETER **Para OPTIONAL\r
+ IN EFI_DHCP4_PACKET *Packet,\r
+ OUT DHCP_PARAMETER **Para OPTIONAL\r
)\r
{\r
- DHCP_PARAMETER Parameter;\r
- DHCP_OPTION_FORMAT *Format;\r
- DHCP_OPTION *AllOption;\r
- DHCP_OPTION *Option;\r
- EFI_STATUS Status;\r
- BOOLEAN Updated;\r
- INTN Count;\r
- INTN Index;\r
+ DHCP_PARAMETER Parameter;\r
+ DHCP_OPTION_FORMAT *Format;\r
+ DHCP_OPTION *AllOption;\r
+ DHCP_OPTION *Option;\r
+ EFI_STATUS Status;\r
+ BOOLEAN Updated;\r
+ INTN Count;\r
+ INTN Index;\r
\r
if (Para != NULL) {\r
*Para = NULL;\r
if (EFI_ERROR (Status) || (Count == 0)) {\r
return Status;\r
}\r
+\r
ASSERT (AllOption != NULL);\r
\r
Updated = FALSE;\r
return Status;\r
}\r
\r
-\r
-\r
/**\r
Append an option to the memory, if the option is longer than\r
255 bytes, splits it into several options.\r
**/\r
UINT8 *\r
DhcpAppendOption (\r
- OUT UINT8 *Buf,\r
- IN UINT8 Tag,\r
- IN UINT16 DataLen,\r
- IN UINT8 *Data\r
+ OUT UINT8 *Buf,\r
+ IN UINT8 Tag,\r
+ IN UINT16 DataLen,\r
+ IN UINT8 *Data\r
)\r
{\r
- INTN Index;\r
- INTN Len;\r
+ INTN Index;\r
+ INTN Len;\r
\r
ASSERT (DataLen != 0);\r
\r
for (Index = 0; Index < (DataLen + 254) / 255; Index++) {\r
- Len = MIN (255, DataLen - Index * 255);\r
+ Len = MIN (255, DataLen - Index * 255);\r
\r
*(Buf++) = Tag;\r
- *(Buf++) = (UINT8) Len;\r
- CopyMem (Buf, Data + Index * 255, (UINTN) Len);\r
+ *(Buf++) = (UINT8)Len;\r
+ CopyMem (Buf, Data + Index * 255, (UINTN)Len);\r
\r
- Buf += Len;\r
+ Buf += Len;\r
}\r
\r
return Buf;\r
}\r
\r
-\r
/**\r
Build a new DHCP packet from a seed packet. Options may be deleted or\r
appended. The caller should free the NewPacket when finished using it.\r
**/\r
EFI_STATUS\r
DhcpBuild (\r
- IN EFI_DHCP4_PACKET *SeedPacket,\r
- IN UINT32 DeleteCount,\r
- IN UINT8 *DeleteList OPTIONAL,\r
- IN UINT32 AppendCount,\r
- IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL,\r
- OUT EFI_DHCP4_PACKET **NewPacket\r
+ IN EFI_DHCP4_PACKET *SeedPacket,\r
+ IN UINT32 DeleteCount,\r
+ IN UINT8 *DeleteList OPTIONAL,\r
+ IN UINT32 AppendCount,\r
+ IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL,\r
+ OUT EFI_DHCP4_PACKET **NewPacket\r
)\r
{\r
- DHCP_OPTION *Mark;\r
- DHCP_OPTION *SeedOptions;\r
- EFI_DHCP4_PACKET *Packet;\r
- EFI_STATUS Status;\r
- INTN Count;\r
- UINT32 Index;\r
- UINT32 Len;\r
- UINT8 *Buf;\r
+ DHCP_OPTION *Mark;\r
+ DHCP_OPTION *SeedOptions;\r
+ EFI_DHCP4_PACKET *Packet;\r
+ EFI_STATUS Status;\r
+ INTN Count;\r
+ UINT32 Index;\r
+ UINT32 Len;\r
+ UINT8 *Buf;\r
\r
//\r
// Use an array of DHCP_OPTION to mark the existence\r
}\r
\r
for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) {\r
- Mark[Index].Tag = (UINT8) Index;\r
+ Mark[Index].Tag = (UINT8)Index;\r
Mark[Index].Len = 0;\r
}\r
\r
}\r
\r
if (SeedOptions != NULL) {\r
- for (Index = 0; Index < (UINT32) Count; Index++) {\r
+ for (Index = 0; Index < (UINT32)Count; Index++) {\r
Mark[SeedOptions[Index].Tag] = SeedOptions[Index];\r
}\r
}\r
}\r
}\r
\r
- Status = EFI_OUT_OF_RESOURCES;\r
- Packet = (EFI_DHCP4_PACKET *) AllocatePool (Len);\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ Packet = (EFI_DHCP4_PACKET *)AllocatePool (Len);\r
\r
if (Packet == NULL) {\r
goto ON_ERROR;\r
}\r
\r
- Packet->Size = Len;\r
- Packet->Length = 0;\r
+ Packet->Size = Len;\r
+ Packet->Length = 0;\r
CopyMem (&Packet->Dhcp4.Header, &SeedPacket->Dhcp4.Header, sizeof (Packet->Dhcp4.Header));\r
- Packet->Dhcp4.Magik = DHCP_OPTION_MAGIC;\r
- Buf = Packet->Dhcp4.Option;\r
+ Packet->Dhcp4.Magik = DHCP_OPTION_MAGIC;\r
+ Buf = Packet->Dhcp4.Option;\r
\r
for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) {\r
if (Mark[Index].Len != 0) {\r
}\r
}\r
\r
- *(Buf++) = DHCP4_TAG_EOP;\r
- Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32)\r
- + (UINT32) (Buf - Packet->Dhcp4.Option);\r
+ *(Buf++) = DHCP4_TAG_EOP;\r
+ Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32)\r
+ + (UINT32)(Buf - Packet->Dhcp4.Option);\r
\r
- *NewPacket = Packet;\r
- Status = EFI_SUCCESS;\r
+ *NewPacket = Packet;\r
+ Status = EFI_SUCCESS;\r
\r
ON_ERROR:\r
if (SeedOptions != NULL) {\r