VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/Mtftp6Dxe/Mtftp6Option.h@ 80721

Last change on this file since 80721 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • Property svn:eol-style set to native
File size: 4.9 KB
Line 
1/** @file
2 Mtftp6 option parse functions declaration.
3
4 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8**/
9
10#ifndef __EFI_MTFTP6_OPTION_H__
11#define __EFI_MTFTP6_OPTION_H__
12
13#include <Uefi.h>
14
15#include <Protocol/ServiceBinding.h>
16
17#include <Library/NetLib.h>
18#include <Library/UdpIoLib.h>
19#include <Library/BaseMemoryLib.h>
20#include <Library/MemoryAllocationLib.h>
21#include <Library/UefiRuntimeServicesTableLib.h>
22
23#define MTFTP6_SUPPORTED_OPTIONS_NUM 5
24#define MTFTP6_OPCODE_LEN 2
25#define MTFTP6_ERRCODE_LEN 2
26#define MTFTP6_BLKNO_LEN 2
27#define MTFTP6_DATA_HEAD_LEN 4
28
29//
30// The bit map definition for Mtftp6 extension options.
31//
32#define MTFTP6_OPT_BLKSIZE_BIT 0x01
33#define MTFTP6_OPT_TIMEOUT_BIT 0x02
34#define MTFTP6_OPT_TSIZE_BIT 0x04
35#define MTFTP6_OPT_MCAST_BIT 0x08
36#define MTFTP6_OPT_WINDOWSIZE_BIT 0X10
37
38extern CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM];
39
40typedef struct {
41 UINT16 BlkSize;
42 UINT16 WindowSize;
43 UINT8 Timeout;
44 UINT32 Tsize;
45 EFI_IPv6_ADDRESS McastIp;
46 UINT16 McastPort;
47 BOOLEAN IsMaster;
48 UINT32 BitMap;
49} MTFTP6_EXT_OPTION_INFO;
50
51/**
52 Parse the Ascii string of multi-cast option.
53
54 @param[in] Str The pointer to the Ascii string of multi-cast option.
55 @param[in] ExtInfo The pointer to the option information to be filled.
56
57 @retval EFI_SUCCESS Parse the multicast option successfully.
58 @retval EFI_INVALID_PARAMETER The string is malformatted.
59
60**/
61EFI_STATUS
62Mtftp6ParseMcastOption (
63 IN UINT8 *Str,
64 IN MTFTP6_EXT_OPTION_INFO *ExtInfo
65 );
66
67
68/**
69 Parse the MTFTP6 extesion options.
70
71 @param[in] Options The pointer to the extension options list.
72 @param[in] Count The num of the extension options.
73 @param[in] IsRequest If FALSE, the extension options is included
74 by a request packet.
75 @param[in] Operation The current performed operation.
76 @param[in] ExtInfo The pointer to the option information to be filled.
77
78 @retval EFI_SUCCESS Parse the multicast option successfully.
79 @retval EFI_INVALID_PARAMETER There is one option is malformatted at least.
80 @retval EFI_UNSUPPORTED There is one option is not supported at least.
81
82**/
83EFI_STATUS
84Mtftp6ParseExtensionOption (
85 IN EFI_MTFTP6_OPTION *Options,
86 IN UINT32 Count,
87 IN BOOLEAN IsRequest,
88 IN UINT16 Operation,
89 IN MTFTP6_EXT_OPTION_INFO *ExtInfo
90 );
91
92
93/**
94 Go through the packet to fill the options array with the start
95 addresses of each MTFTP option name/value pair.
96
97 @param[in] Packet The packet to be checked.
98 @param[in] PacketLen The length of the packet.
99 @param[in, out] Count The num of the Options on input.
100 The actual one on output.
101 @param[in] Options The option array to be filled
102 it's optional.
103
104 @retval EFI_SUCCESS The packet has been parsed successfully.
105 @retval EFI_INVALID_PARAMETER The packet is malformatted
106 @retval EFI_BUFFER_TOO_SMALL The Options array is too small
107 @retval EFI_PROTOCOL_ERROR An unexpected MTFTPv6 packet was received.
108
109**/
110EFI_STATUS
111Mtftp6ParsePacketOption (
112 IN EFI_MTFTP6_PACKET *Packet,
113 IN UINT32 PacketLen,
114 IN OUT UINT32 *Count,
115 IN EFI_MTFTP6_OPTION *Options OPTIONAL
116 );
117
118
119/**
120 Go through the packet, generate option list array and fill it
121 by the result of parse options.
122
123 @param[in] Packet The packet to be checked.
124 @param[in] PacketLen The length of the packet.
125 @param[in, out] OptionCount The num of the Options on input.
126 The actual one on output.
127 @param[out] OptionList The option list array to be generated
128 and filled. It is optional.
129
130 @retval EFI_SUCCESS The packet has been parsed successfully.
131 @retval EFI_INVALID_PARAMETER The packet is malformatted.
132 @retval EFI_PROTOCOL_ERROR An option is malformatted.
133 @retval EFI_NOT_FOUND The packet has no options.
134 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory for the array.
135 @retval EFI_BUFFER_TOO_SMALL The size of option list array is too small.
136
137**/
138EFI_STATUS
139Mtftp6ParseStart (
140 IN EFI_MTFTP6_PACKET *Packet,
141 IN UINT32 PacketLen,
142 IN OUT UINT32 *OptionCount,
143 OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL
144 );
145
146#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette