]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h
MdePkg/UefiDevicePathLib: Refine the DevPathFromTextiSCSI protocol parsing
[mirror_edk2.git] / MdeModulePkg / Library / DxeHttpLib / DxeHttpLib.h
CommitLineData
558b99a6
GB
1/** @file\r
2Header file for HttpLib.\r
3\r
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
5 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
6\r
7 This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11\r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
17#ifndef _DXE_HTTP_LIB_H_\r
18#define _DXE_HTTP_LIB_H_\r
19\r
20#include <Uefi.h>\r
21#include <Library/NetLib.h>\r
22#include <Library/HttpLib.h>\r
23#include <Library/BaseLib.h>\r
24#include <Library/DebugLib.h>\r
25#include <Library/MemoryAllocationLib.h>\r
26#include <Library/UefiBootServicesTableLib.h>\r
27#include <IndustryStandard/Http11.h>\r
28#include <Protocol/HttpUtilities.h>\r
29\r
30#define BIT(x) (1 << x)\r
31\r
32#define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n"\r
33#define EMPTY_SPACE " "\r
34\r
35#define NET_IS_HEX_CHAR(Ch) \\r
36 ((('0' <= (Ch)) && ((Ch) <= '9')) || \\r
37 (('A' <= (Ch)) && ((Ch) <= 'F')) || \\r
38 (('a' <= (Ch)) && ((Ch) <= 'f')))\r
39\r
40//\r
41// Field index of the HTTP URL parse result.\r
42//\r
43#define HTTP_URI_FIELD_SCHEME 0\r
44#define HTTP_URI_FIELD_AUTHORITY 1\r
45#define HTTP_URI_FIELD_PATH 2\r
46#define HTTP_URI_FIELD_QUERY 3\r
47#define HTTP_URI_FIELD_FRAGMENT 4\r
48#define HTTP_URI_FIELD_USERINFO 5\r
49#define HTTP_URI_FIELD_HOST 6\r
50#define HTTP_URI_FIELD_PORT 7\r
51#define HTTP_URI_FIELD_MAX 8\r
52\r
53//\r
54// Structure to store the parse result of a HTTP URL.\r
55//\r
56typedef struct {\r
57 UINT32 Offset;\r
58 UINT32 Length;\r
59} HTTP_URL_FILED_DATA;\r
60\r
61typedef struct {\r
62 UINT16 FieldBitMap;\r
63 HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX];\r
64} HTTP_URL_PARSER;\r
65\r
66typedef enum {\r
67 UrlParserUrlStart,\r
68 UrlParserScheme,\r
69 UrlParserSchemeColon, // ":"\r
70 UrlParserSchemeColonSlash, // ":/"\r
71 UrlParserSchemeColonSlashSlash, // "://"\r
72 UrlParserAuthority,\r
73 UrlParserAtInAuthority,\r
74 UrlParserPath,\r
75 UrlParserQueryStart, // "?"\r
76 UrlParserQuery,\r
77 UrlParserFragmentStart, // "#"\r
78 UrlParserFragment,\r
79 UrlParserUserInfo,\r
80 UrlParserHostStart, // "@"\r
81 UrlParserHost,\r
82 UrlParserHostIpv6, // "["(Ipv6 address) "]"\r
83 UrlParserPortStart, // ":"\r
84 UrlParserPort,\r
85 UrlParserStateMax\r
86} HTTP_URL_PARSE_STATE;\r
87\r
88#endif\r
89\r