From 558b99a6a31ac883539779ffc112c64ada32aaee Mon Sep 17 00:00:00 2001 From: Ghazi Belaam Date: Sat, 5 Mar 2016 06:07:49 +0800 Subject: ModulePkg/DxeHttpLib: Adding Functions to HttpLib There some usefull functions in edk2 private modules that could be used, so we added them to the httpLib Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ghazi Belaam Reviewed-by: Jiaxin Wu Reviewed-by: Samer EL-Haj-Mahmoud Reviewed-by: Fu Siyuan --- MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h | 89 ++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h (limited to 'MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h') diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h new file mode 100644 index 0000000000..0d0ad3d8ff --- /dev/null +++ b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h @@ -0,0 +1,89 @@ +/** @file +Header file for HttpLib. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP
+ + 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. + +**/ + +#ifndef _DXE_HTTP_LIB_H_ +#define _DXE_HTTP_LIB_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BIT(x) (1 << x) + +#define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n" +#define EMPTY_SPACE " " + +#define NET_IS_HEX_CHAR(Ch) \ + ((('0' <= (Ch)) && ((Ch) <= '9')) || \ + (('A' <= (Ch)) && ((Ch) <= 'F')) || \ + (('a' <= (Ch)) && ((Ch) <= 'f'))) + +// +// Field index of the HTTP URL parse result. +// +#define HTTP_URI_FIELD_SCHEME 0 +#define HTTP_URI_FIELD_AUTHORITY 1 +#define HTTP_URI_FIELD_PATH 2 +#define HTTP_URI_FIELD_QUERY 3 +#define HTTP_URI_FIELD_FRAGMENT 4 +#define HTTP_URI_FIELD_USERINFO 5 +#define HTTP_URI_FIELD_HOST 6 +#define HTTP_URI_FIELD_PORT 7 +#define HTTP_URI_FIELD_MAX 8 + +// +// Structure to store the parse result of a HTTP URL. +// +typedef struct { + UINT32 Offset; + UINT32 Length; +} HTTP_URL_FILED_DATA; + +typedef struct { + UINT16 FieldBitMap; + HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX]; +} HTTP_URL_PARSER; + +typedef enum { + UrlParserUrlStart, + UrlParserScheme, + UrlParserSchemeColon, // ":" + UrlParserSchemeColonSlash, // ":/" + UrlParserSchemeColonSlashSlash, // "://" + UrlParserAuthority, + UrlParserAtInAuthority, + UrlParserPath, + UrlParserQueryStart, // "?" + UrlParserQuery, + UrlParserFragmentStart, // "#" + UrlParserFragment, + UrlParserUserInfo, + UrlParserHostStart, // "@" + UrlParserHost, + UrlParserHostIpv6, // "["(Ipv6 address) "]" + UrlParserPortStart, // ":" + UrlParserPort, + UrlParserStateMax +} HTTP_URL_PARSE_STATE; + +#endif + -- cgit v1.2.3