Merger network tackers 9307, 9338, 9339, 9397
[people/mcb30/edk2.git] / edk2 / MdePkg / Include / Protocol / IP4Config.h
1 /** @file\r
2   Copyright (c) 2006, Intel Corporation\r
3   All rights reserved. This program and the accompanying materials\r
4   are licensed and made available under the terms and conditions of the BSD License\r
5   which accompanies this distribution.  The full text of the license may be found at\r
6   http://opensource.org/licenses/bsd-license.php\r
7 \r
8   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
9   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
10 \r
11 **/\r
12 \r
13 #ifndef __EFI_IP4CONFIG_PROTOCOL_H__\r
14 #define __EFI_IP4CONFIG_PROTOCOL_H__\r
15 \r
16 #include <Protocol/Ip4.h>\r
17 \r
18 #define EFI_IP4_CONFIG_PROTOCOL_GUID \\r
19   { \\r
20     0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e } \\r
21   }\r
22 \r
23 typedef struct _EFI_IP4_CONFIG_PROTOCOL EFI_IP4_CONFIG_PROTOCOL;\r
24 \r
25 #define IP4_CONFIG_VARIABLE_ATTRIBUTES \\r
26         (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | \\r
27          EFI_VARIABLE_RUNTIME_ACCESS)\r
28 \r
29 typedef struct {\r
30   EFI_IPv4_ADDRESS             StationAddress;\r
31   EFI_IPv4_ADDRESS             SubnetMask;\r
32   UINT32                       RouteTableSize;\r
33   EFI_IP4_ROUTE_TABLE          *RouteTable;    //OPTIONAL\r
34 } EFI_IP4_IPCONFIG_DATA;\r
35 \r
36 \r
37 /**\r
38   Starts running the configuration policy for the EFI IPv4 Protocol driver.\r
39 \r
40   @param  This          Pointer to the EFI_IP4_CONFIG_PROTOCOL instance.\r
41   @param  DoneEvent     Event that will be signaled when the EFI IPv4 Protocol driver\r
42                         configuration policy completes execution. This event must be of\r
43                         type EVT_NOTIFY_SIGNAL.\r
44   @param  ReconfigEvent Event that will be signaled when the EFI IPv4 Protocol driver\r
45                         configuration needs to be updated. This event must be of type\r
46                         EVT_NOTIFY_SIGNAL.\r
47 \r
48   @retval EFI_SUCCESS           The configuration policy for the EFI IPv4 Protocol driver is now\r
49                                 running.\r
50   @retval EFI_INVALID_PARAMETER This, DoneEvent, or ReconfigEvent is NULL.\r
51   @retval EFI_OUT_OF_RESOURCES  Required system resources could not be allocated.\r
52   @retval EFI_ALREADY_STARTED   The configuration policy for the EFI IPv4 Protocol driver was\r
53                                 already started.\r
54   @retval EFI_DEVICE_ERROR      An unexpected system error or network error occurred.\r
55   @retval EFI_UNSUPPORTED       This interface does not support the EFI IPv4 Protocol driver\r
56                                  configuration.\r
57 \r
58 **/\r
59 typedef\r
60 EFI_STATUS\r
61 (EFIAPI *EFI_IP4_CONFIG_START) (\r
62   IN EFI_IP4_CONFIG_PROTOCOL   *This,\r
63   IN EFI_EVENT                 DoneEvent,\r
64   IN EFI_EVENT                 ReconfigEvent\r
65   )\r
66 ;\r
67 \r
68 /**\r
69   Stops running the configuration policy for the EFI IPv4 Protocol driver.\r
70 \r
71   @param  This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance.\r
72 \r
73   @retval EFI_SUCCESS           The configuration policy for the EFI IPv4 Protocol driver has been stopped.\r
74   @retval EFI_INVALID_PARAMETER This is NULL.\r
75   @retval EFI_NOT_STARTED       The configuration policy for the EFI IPv4 Protocol driver was not started.\r
76 \r
77 **/\r
78 typedef\r
79 EFI_STATUS\r
80 (EFIAPI *EFI_IP4_CONFIG_STOP) (\r
81   IN EFI_IP4_CONFIG_PROTOCOL   *This\r
82   )\r
83 ;\r
84 \r
85 /**\r
86   Returns the default configuration data (if any) for the EFI IPv4 Protocol driver.\r
87 \r
88   @param  This             Pointer to the EFI_IP4_CONFIG_PROTOCOL instance.\r
89   @param  IpConfigDataSize On input, the size of the IpConfigData buffer.\r
90                            On output, the count of bytes that were written into the IpConfigData buffer.\r
91   @param  IpConfigData     Pointer to the EFI IPv4 Configuration Protocol driver\r
92                            configuration data structure.\r
93 \r
94   @retval EFI_SUCCESS           The EFI IPv4 Protocol driver configuration has been returned.\r
95   @retval EFI_INVALID_PARAMETER This is NULL.\r
96   @retval EFI_NOT_STARTED       The configuration policy for the EFI IPv4 Protocol driver is not\r
97                                 running.\r
98   @retval EFI_NOT_READY         EFI IPv4 Protocol driver configuration is still running.\r
99   @retval EFI_ABORTED           EFI IPv4 Protocol driver configuration could not complete.\r
100   @retval EFI_BUFFER_TOO_SMALL  *IpConfigDataSize is smaller than the configuration data\r
101                                 buffer or IpConfigData is NULL.\r
102 \r
103 **/\r
104 typedef\r
105 EFI_STATUS\r
106 (EFIAPI *EFI_IP4_CONFIG_GET_DATA) (\r
107   IN EFI_IP4_CONFIG_PROTOCOL   *This,\r
108   IN OUT UINTN                 *IpConfigDataSize,\r
109   OUT EFI_IP4_IPCONFIG_DATA    *IpConfigData    OPTIONAL\r
110   )\r
111 ;\r
112 \r
113 struct _EFI_IP4_CONFIG_PROTOCOL {\r
114   EFI_IP4_CONFIG_START         Start;\r
115   EFI_IP4_CONFIG_STOP          Stop;\r
116   EFI_IP4_CONFIG_GET_DATA      GetData;\r
117 };\r
118 \r
119 extern EFI_GUID gEfiIp4ConfigProtocolGuid;\r
120 \r
121 #endif\r