2 UEFI Component Name(2) protocol implementation for Tcp4Dxe driver.
4 Copyright (c) 2005 - 2013, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php<BR>
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Retrieves a Unicode string that is the user readable name of the driver.
20 This function retrieves the user readable name of a driver in the form of a
21 Unicode string. If the driver specified by This has a user readable name in
22 the language specified by Language, then a pointer to the driver name is
23 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
24 by This does not support the language specified by Language,
25 then EFI_UNSUPPORTED is returned.
27 @param[in] This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
28 EFI_COMPONENT_NAME_PROTOCOL instance.
30 @param[in] Language A pointer to a Null-terminated ASCII string
31 array indicating the language. This is the
32 language of the driver name that the caller is
33 requesting, and it must match one of the
34 languages specified in SupportedLanguages. The
35 number of languages supported by a driver is up
36 to the driver writer. Language is specified
37 in RFC 4646 or ISO 639-2 language code format.
39 @param[out] DriverName A pointer to the Unicode string to return.
40 This Unicode string is the name of the
41 driver specified by This in the language
42 specified by Language.
44 @retval EFI_SUCCESS The Unicode string for the Driver specified by
45 This and the language specified by Language was
46 returned in DriverName.
48 @retval EFI_INVALID_PARAMETER Language is NULL.
50 @retval EFI_INVALID_PARAMETER DriverName is NULL.
52 @retval EFI_UNSUPPORTED The driver specified by This does not support
53 the language specified by Language.
58 TcpComponentNameGetDriverName (
59 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
61 OUT CHAR16
**DriverName
66 Retrieves a Unicode string that is the user readable name of the controller
67 that is being managed by a driver.
69 This function retrieves the user readable name of the controller specified by
70 ControllerHandle and ChildHandle in the form of a Unicode string. If the
71 driver specified by This has a user readable name in the language specified by
72 Language, then a pointer to the controller name is returned in ControllerName,
73 and EFI_SUCCESS is returned. If the driver specified by This is not currently
74 managing the controller specified by ControllerHandle and ChildHandle,
75 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
76 support the language specified by Language, then EFI_UNSUPPORTED is returned.
78 @param[in] This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
79 EFI_COMPONENT_NAME_PROTOCOL instance.
81 @param[in] ControllerHandle The handle of a controller that the driver
82 specified by This is managing. This handle
83 specifies the controller whose name is to be
86 @param[in] ChildHandle The handle of the child controller to retrieve
87 the name of. This is an optional parameter that
88 may be NULL. It will be NULL for device
89 drivers. It will also be NULL for a bus drivers
90 that wish to retrieve the name of the bus
91 controller. It will not be NULL for a bus
92 driver that wishes to retrieve the name of a
95 @param[in] Language A pointer to a Null-terminated ASCII string
96 array indicating the language. This is the
97 language of the driver name that the caller is
98 requesting, and it must match one of the
99 languages specified in SupportedLanguages. The
100 number of languages supported by a driver is up
101 to the driver writer. Language is specified in
102 RFC 4646 or ISO 639-2 language code format.
104 @param[out] ControllerName A pointer to the Unicode string to return.
105 This Unicode string is the name of the
106 controller specified by ControllerHandle and
107 ChildHandle in the language specified by
108 Language from the point of view of the driver
111 @retval EFI_SUCCESS The Unicode string for the user readable name in
112 the language specified by Language for the
113 driver specified by This was returned in
116 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
118 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
121 @retval EFI_INVALID_PARAMETER Language is NULL.
123 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
125 @retval EFI_UNSUPPORTED The driver specified by This is not currently
126 managing the controller specified by
127 ControllerHandle and ChildHandle.
129 @retval EFI_UNSUPPORTED The driver specified by This does not support
130 the language specified by Language.
135 TcpComponentNameGetControllerName (
136 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
137 IN EFI_HANDLE ControllerHandle
,
138 IN EFI_HANDLE ChildHandle OPTIONAL
,
140 OUT CHAR16
**ControllerName
145 /// EFI Component Name Protocol
147 GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gTcp4ComponentName
= {
148 TcpComponentNameGetDriverName
,
149 TcpComponentNameGetControllerName
,
154 /// EFI Component Name 2 Protocol
156 GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gTcp4ComponentName2
= {
157 (EFI_COMPONENT_NAME2_GET_DRIVER_NAME
) TcpComponentNameGetDriverName
,
158 (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME
) TcpComponentNameGetControllerName
,
163 GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mTcpDriverNameTable
[] = {
166 L
"Tcp Network Service Driver"
174 GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE
*gTcpControllerNameTable
= NULL
;
177 Retrieves a Unicode string that is the user readable name of the driver.
179 This function retrieves the user readable name of a driver in the form of a
180 Unicode string. If the driver specified by This has a user readable name in
181 the language specified by Language, then a pointer to the driver name is
182 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
183 by This does not support the language specified by Language,
184 then EFI_UNSUPPORTED is returned.
186 @param[in] This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
187 EFI_COMPONENT_NAME_PROTOCOL instance.
189 @param[in] Language A pointer to a Null-terminated ASCII string
190 array indicating the language. This is the
191 language of the driver name that the caller is
192 requesting, and it must match one of the
193 languages specified in SupportedLanguages. The
194 number of languages supported by a driver is up
195 to the driver writer. Language is specified
196 in RFC 4646 or ISO 639-2 language code format.
198 @param[out] DriverName A pointer to the Unicode string to return.
199 This Unicode string is the name of the
200 driver specified by This in the language
201 specified by Language.
203 @retval EFI_SUCCESS The Unicode string for the Driver specified by
204 This and the language specified by Language was
205 returned in DriverName.
207 @retval EFI_INVALID_PARAMETER Language is NULL.
209 @retval EFI_INVALID_PARAMETER DriverName is NULL.
211 @retval EFI_UNSUPPORTED The driver specified by This does not support
212 the language specified by Language.
217 TcpComponentNameGetDriverName (
218 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
220 OUT CHAR16
**DriverName
223 return LookupUnicodeString2 (
225 This
->SupportedLanguages
,
228 (BOOLEAN
) (This
== &gTcp4ComponentName
)
233 Update the component name for the Tcp4 child handle.
235 @param Tcp4[in] A pointer to the EFI_TCP4_PROTOCOL.
238 @retval EFI_SUCCESS Update the ControllerNameTable of this instance successfully.
239 @retval EFI_INVALID_PARAMETER The input parameter is invalid.
244 IN EFI_TCP4_PROTOCOL
*Tcp4
248 CHAR16 HandleName
[80];
249 EFI_TCP4_CONFIG_DATA Tcp4ConfigData
;
252 return EFI_INVALID_PARAMETER
;
256 // Format the child name into the string buffer as:
257 // TCPv4 (SrcPort=59, DestPort=60, ActiveFlag=TRUE)
259 Status
= Tcp4
->GetModeData (Tcp4
, NULL
, &Tcp4ConfigData
, NULL
, NULL
, NULL
);
260 if (!EFI_ERROR (Status
)) {
261 UnicodeSPrint (HandleName
, sizeof (HandleName
),
262 L
"TCPv4 (SrcPort=%d, DestPort=%d, ActiveFlag=%s)",
263 Tcp4ConfigData
.AccessPoint
.StationPort
,
264 Tcp4ConfigData
.AccessPoint
.RemotePort
,
265 (Tcp4ConfigData
.AccessPoint
.ActiveFlag
? L
"TRUE" : L
"FALSE")
267 } if (Status
== EFI_NOT_STARTED
) {
271 L
"TCPv4 (Not started)"
277 if (gTcpControllerNameTable
!= NULL
) {
278 FreeUnicodeStringTable (gTcpControllerNameTable
);
279 gTcpControllerNameTable
= NULL
;
282 Status
= AddUnicodeString2 (
284 gTcp4ComponentName
.SupportedLanguages
,
285 &gTcpControllerNameTable
,
289 if (EFI_ERROR (Status
)) {
293 return AddUnicodeString2 (
295 gTcp4ComponentName2
.SupportedLanguages
,
296 &gTcpControllerNameTable
,
303 Retrieves a Unicode string that is the user readable name of the controller
304 that is being managed by a driver.
306 This function retrieves the user readable name of the controller specified by
307 ControllerHandle and ChildHandle in the form of a Unicode string. If the
308 driver specified by This has a user readable name in the language specified by
309 Language, then a pointer to the controller name is returned in ControllerName,
310 and EFI_SUCCESS is returned. If the driver specified by This is not currently
311 managing the controller specified by ControllerHandle and ChildHandle,
312 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
313 support the language specified by Language, then EFI_UNSUPPORTED is returned.
315 @param[in] This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
316 EFI_COMPONENT_NAME_PROTOCOL instance.
318 @param[in] ControllerHandle The handle of a controller that the driver
319 specified by This is managing. This handle
320 specifies the controller whose name is to be
323 @param[in] ChildHandle The handle of the child controller to retrieve
324 the name of. This is an optional parameter that
325 may be NULL. It will be NULL for device
326 drivers. It will also be NULL for a bus drivers
327 that wish to retrieve the name of the bus
328 controller. It will not be NULL for a bus
329 driver that wishes to retrieve the name of a
332 @param[in] Language A pointer to a Null-terminated ASCII string
333 array indicating the language. This is the
334 language of the driver name that the caller is
335 requesting, and it must match one of the
336 languages specified in SupportedLanguages. The
337 number of languages supported by a driver is up
338 to the driver writer. Language is specified in
339 RFC 4646 or ISO 639-2 language code format.
341 @param[out] ControllerName A pointer to the Unicode string to return.
342 This Unicode string is the name of the
343 controller specified by ControllerHandle and
344 ChildHandle in the language specified by
345 Language from the point of view of the driver
348 @retval EFI_SUCCESS The Unicode string for the user readable name in
349 the language specified by Language for the
350 driver specified by This was returned in
353 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
355 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
358 @retval EFI_INVALID_PARAMETER Language is NULL.
360 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
362 @retval EFI_UNSUPPORTED The driver specified by This is not currently
363 managing the controller specified by
364 ControllerHandle and ChildHandle.
366 @retval EFI_UNSUPPORTED The driver specified by This does not support
367 the language specified by Language.
372 TcpComponentNameGetControllerName (
373 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
374 IN EFI_HANDLE ControllerHandle
,
375 IN EFI_HANDLE ChildHandle OPTIONAL
,
377 OUT CHAR16
**ControllerName
381 EFI_TCP4_PROTOCOL
*Tcp4
;
384 // Only provide names for child handles.
386 if (ChildHandle
== NULL
) {
387 return EFI_UNSUPPORTED
;
391 // Make sure this driver produced ChildHandle
393 Status
= EfiTestChildHandle (
398 if (EFI_ERROR (Status
)) {
403 // Retrieve an instance of a produced protocol from ChildHandle
405 Status
= gBS
->OpenProtocol (
407 &gEfiTcp4ProtocolGuid
,
411 EFI_OPEN_PROTOCOL_GET_PROTOCOL
413 if (EFI_ERROR (Status
)) {
418 // Update the component name for this child handle.
420 Status
= UpdateName (Tcp4
);
421 if (EFI_ERROR (Status
)) {
425 return LookupUnicodeString2 (
427 This
->SupportedLanguages
,
428 gTcpControllerNameTable
,
430 (BOOLEAN
)(This
== &gTcp4ComponentName
)