diff options
Diffstat (limited to 'NetworkPkg')
-rw-r--r-- | NetworkPkg/Ip6Dxe/Ip6Common.c | 142 | ||||
-rw-r--r-- | NetworkPkg/Ip6Dxe/Ip6Common.h | 27 | ||||
-rw-r--r-- | NetworkPkg/Ip6Dxe/Ip6Driver.c | 12 | ||||
-rw-r--r-- | NetworkPkg/Ip6Dxe/Ip6Impl.c | 7 | ||||
-rw-r--r-- | NetworkPkg/TcpDxe/TcpDispatcher.c | 4 | ||||
-rw-r--r-- | NetworkPkg/TcpDxe/TcpDriver.c | 9 | ||||
-rw-r--r-- | NetworkPkg/TcpDxe/TcpDriver.h | 3 | ||||
-rw-r--r-- | NetworkPkg/TcpDxe/TcpFunc.h | 27 | ||||
-rw-r--r-- | NetworkPkg/TcpDxe/TcpMisc.c | 263 | ||||
-rw-r--r-- | NetworkPkg/Udp6Dxe/Udp6Driver.c | 8 | ||||
-rw-r--r-- | NetworkPkg/Udp6Dxe/Udp6Impl.c | 174 | ||||
-rw-r--r-- | NetworkPkg/Udp6Dxe/Udp6Impl.h | 35 | ||||
-rw-r--r-- | NetworkPkg/Udp6Dxe/Udp6Main.c | 8 |
13 files changed, 20 insertions, 699 deletions
diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.c b/NetworkPkg/Ip6Dxe/Ip6Common.c index 18ec012a1e..4f71d052bf 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Common.c +++ b/NetworkPkg/Ip6Dxe/Ip6Common.c @@ -1,7 +1,7 @@ /** @file
The implementation of common functions shared by IP6 driver.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -651,146 +651,6 @@ Ip6GetMulticastMac ( }
/**
- Set the Ip6 variable data.
-
- @param[in] IpSb Points to an IP6 service binding instance.
-
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable.
- @retval other Set variable failed.
-
-**/
-EFI_STATUS
-Ip6SetVariableData (
- IN IP6_SERVICE *IpSb
- )
-{
- UINT32 NumConfiguredInstance;
- LIST_ENTRY *Entry;
- UINTN VariableDataSize;
- EFI_IP6_VARIABLE_DATA *Ip6VariableData;
- EFI_IP6_ADDRESS_PAIR *Ip6AddressPair;
- IP6_PROTOCOL *IpInstance;
- CHAR16 *NewMacString;
- EFI_STATUS Status;
-
- NumConfiguredInstance = 0;
-
- //
- // Go through the children list to count the configured children.
- //
- NET_LIST_FOR_EACH (Entry, &IpSb->Children) {
- IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE);
-
- if (IpInstance->State == IP6_STATE_CONFIGED) {
- NumConfiguredInstance++;
- }
- }
-
- //
- // Calculate the size of the Ip6VariableData. As there may be no IP child,
- // we should add extra buffer for the address paris only if the number of configured
- // children is more than 1.
- //
- VariableDataSize = sizeof (EFI_IP6_VARIABLE_DATA);
-
- if (NumConfiguredInstance > 1) {
- VariableDataSize += sizeof (EFI_IP6_ADDRESS_PAIR) * (NumConfiguredInstance - 1);
- }
-
- Ip6VariableData = AllocatePool (VariableDataSize);
- if (Ip6VariableData == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- Ip6VariableData->DriverHandle = IpSb->Image;
- Ip6VariableData->AddressCount = NumConfiguredInstance;
-
- Ip6AddressPair = &Ip6VariableData->AddressPairs[0];
-
- //
- // Go through the children list to fill the configured children's address pairs.
- //
- NET_LIST_FOR_EACH (Entry, &IpSb->Children) {
- IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE);
-
- if (IpInstance->State == IP6_STATE_CONFIGED) {
- Ip6AddressPair->InstanceHandle = IpInstance->Handle;
- Ip6AddressPair->PrefixLength = IpInstance->PrefixLength;
- IP6_COPY_ADDRESS (&Ip6AddressPair->Ip6Address, &IpInstance->ConfigData.StationAddress);
-
- Ip6AddressPair++;
- }
- }
-
- //
- // Get the mac string.
- //
- Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &NewMacString);
- if (EFI_ERROR (Status)) {
- goto Exit;
- }
-
- if (IpSb->MacString != NULL) {
- //
- // The variable is set already, we're going to update it.
- //
- if (StrCmp (IpSb->MacString, NewMacString) != 0) {
- //
- // The mac address is changed, delete the previous variable first.
- //
- gRT->SetVariable (
- IpSb->MacString,
- &gEfiIp6ServiceBindingProtocolGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- 0,
- NULL
- );
- }
-
- FreePool (IpSb->MacString);
- }
-
- IpSb->MacString = NewMacString;
-
- Status = gRT->SetVariable (
- IpSb->MacString,
- &gEfiIp6ServiceBindingProtocolGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- VariableDataSize,
- (VOID *) Ip6VariableData
- );
-
-Exit:
- FreePool (Ip6VariableData);
- return Status;
-}
-
-/**
- Clear the variable and free the resource.
-
- @param[in] IpSb Ip6 service binding instance.
-
-**/
-VOID
-Ip6ClearVariableData (
- IN IP6_SERVICE *IpSb
- )
-{
- ASSERT (IpSb->MacString != NULL);
-
- gRT->SetVariable (
- IpSb->MacString,
- &gEfiIp6ServiceBindingProtocolGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- 0,
- NULL
- );
-
- FreePool (IpSb->MacString);
- IpSb->MacString = NULL;
-}
-
-/**
Convert the multibyte field in IP header's byter order.
In spite of its name, it can also be used to convert from
host to network byte order.
diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.h b/NetworkPkg/Ip6Dxe/Ip6Common.h index 9c2ddf4d4e..488c5b23b7 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Common.h +++ b/NetworkPkg/Ip6Dxe/Ip6Common.h @@ -1,7 +1,7 @@ /** @file
Common definition and functions for IP6 driver.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -280,31 +280,6 @@ Ip6RemoveAddr ( );
/**
- Set the Ip6 variable data.
-
- @param[in] IpSb Points to an IP6 service binding instance
-
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable.
- @retval other Set variable failed.
-
-**/
-EFI_STATUS
-Ip6SetVariableData (
- IN IP6_SERVICE *IpSb
- );
-
-/**
- Clear the variable and free the resource.
-
- @param[in] IpSb Ip6 service binding instance.
-
-**/
-VOID
-Ip6ClearVariableData (
- IN IP6_SERVICE *IpSb
- );
-
-/**
Get the MAC address for a multicast IP address. Call
Mnp's McastIpToMac to find the MAC address instead of
hard-coding the NIC to be Ethernet.
diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c index b9a64a80f8..69587849cc 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Driver.c +++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c @@ -1,7 +1,7 @@ /** @file
The driver binding and service binding protocol for IP6 driver.
- Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -573,8 +573,6 @@ Ip6DriverBindingStart ( //
mIp6Id = NET_RANDOM (NetRandomInitSeed ());
- Ip6SetVariableData (IpSb);
-
return EFI_SUCCESS;
}
@@ -701,11 +699,6 @@ Ip6DriverBindingStop ( State = IpSb->State;
IpSb->State = IP6_SERVICE_DESTROY;
- //
- // Clear the variable data.
- //
- Ip6ClearVariableData (IpSb);
-
Status = Ip6CleanService (IpSb);
if (EFI_ERROR (Status)) {
IpSb->State = State;
@@ -943,9 +936,6 @@ Ip6ServiceBindingDestroyChild ( }
Status = Ip6CleanProtocol (IpInstance);
-
- Ip6SetVariableData (IpSb);
-
if (EFI_ERROR (Status)) {
gBS->InstallMultipleProtocolInterfaces (
&ChildHandle,
diff --git a/NetworkPkg/Ip6Dxe/Ip6Impl.c b/NetworkPkg/Ip6Dxe/Ip6Impl.c index 365495a5e4..621879b1ea 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Impl.c +++ b/NetworkPkg/Ip6Dxe/Ip6Impl.c @@ -1,7 +1,7 @@ /** @file
Implementation of EFI_IP6_PROTOCOL protocol interfaces.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -705,11 +705,6 @@ EfiIp6Configure ( //
Ip6ServiceConfigMnp (IpInstance->Service, FALSE);
- //
- // Update the variable data.
- //
- Ip6SetVariableData (IpInstance->Service);
-
Exit:
gBS->RestoreTPL (OldTpl);
return Status;
diff --git a/NetworkPkg/TcpDxe/TcpDispatcher.c b/NetworkPkg/TcpDxe/TcpDispatcher.c index d3d2cb1c3a..9fe93f6e8b 100644 --- a/NetworkPkg/TcpDxe/TcpDispatcher.c +++ b/NetworkPkg/TcpDxe/TcpDispatcher.c @@ -1,7 +1,7 @@ /** @file
The implementation of a dispatch routine for processing TCP requests.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -327,8 +327,6 @@ TcpFlushPcb ( FreePool (Sock->DevicePath);
Sock->DevicePath = NULL;
}
-
- TcpSetVariableData (TcpProto->TcpService);
}
NetbufFreeList (&Tcb->SndQue);
diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c index 1f0d371654..ce3dd0be63 100644 --- a/NetworkPkg/TcpDxe/TcpDriver.c +++ b/NetworkPkg/TcpDxe/TcpDriver.c @@ -1,7 +1,7 @@ /** @file
The driver binding and service binding protocol for the TCP driver.
- Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -349,8 +349,6 @@ TcpCreateService ( goto ON_ERROR;
}
- TcpSetVariableData (TcpServiceData);
-
return EFI_SUCCESS;
ON_ERROR:
@@ -500,11 +498,6 @@ TcpDestroyService ( TcpDestroyTimer ();
//
- // Clear the variable.
- //
- TcpClearVariableData (TcpServiceData);
-
- //
// Release the TCP service data
//
FreePool (TcpServiceData);
diff --git a/NetworkPkg/TcpDxe/TcpDriver.h b/NetworkPkg/TcpDxe/TcpDriver.h index 5208048edf..19dd168e89 100644 --- a/NetworkPkg/TcpDxe/TcpDriver.h +++ b/NetworkPkg/TcpDxe/TcpDriver.h @@ -1,7 +1,7 @@ /** @file
The prototype of driver binding and service binding protocol for TCP driver.
- Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -33,7 +33,6 @@ typedef struct _TCP_SERVICE_DATA { UINT8 IpVersion;
IP_IO *IpIo;
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
- CHAR16 *MacString;
LIST_ENTRY SocketList;
} TCP_SERVICE_DATA;
diff --git a/NetworkPkg/TcpDxe/TcpFunc.h b/NetworkPkg/TcpDxe/TcpFunc.h index c23ba94e44..2076109254 100644 --- a/NetworkPkg/TcpDxe/TcpFunc.h +++ b/NetworkPkg/TcpDxe/TcpFunc.h @@ -1,7 +1,7 @@ /** @file
Declaration of external functions shared in TCP driver.
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -277,31 +277,6 @@ TcpResetConnection ( );
/**
- Set the Tcp variable data.
-
- @param[in] TcpService Tcp service data.
-
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable.
- @retval other Set variable failed.
-
-**/
-EFI_STATUS
-TcpSetVariableData (
- IN TCP_SERVICE_DATA *TcpService
- );
-
-/**
- Clear the variable and free the resource.
-
- @param[in] TcpService Tcp service data.
-
-**/
-VOID
-TcpClearVariableData (
- IN TCP_SERVICE_DATA *TcpService
- );
-
-/**
Install the device path protocol on the TCP instance.
@param[in] Sock Pointer to the socket representing the TCP instance.
diff --git a/NetworkPkg/TcpDxe/TcpMisc.c b/NetworkPkg/TcpDxe/TcpMisc.c index 21bd9dfec1..5394f7d1ca 100644 --- a/NetworkPkg/TcpDxe/TcpMisc.c +++ b/NetworkPkg/TcpDxe/TcpMisc.c @@ -1,7 +1,7 @@ /** @file
Misc support routines for TCP driver.
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -467,7 +467,6 @@ TcpInsertTcb ( InsertHeadList (Head, &Tcb->List);
TcpProto = (TCP_PROTO_DATA *) Tcb->Sk->ProtoReserved;
- TcpSetVariableData (TcpProto->TcpService);
return 0;
}
@@ -944,266 +943,6 @@ TcpResetConnection ( }
/**
- Set the Tcp variable data.
-
- @param[in] TcpService Tcp service data.
-
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable.
- @retval other Set variable failed.
-
-**/
-EFI_STATUS
-TcpSetVariableData (
- IN TCP_SERVICE_DATA *TcpService
- )
-{
- EFI_GUID *ServiceBindingGuid;
- UINT32 NumConfiguredInstance;
- LIST_ENTRY *Entry;
- TCP_CB *TcpPcb;
- TCP_PROTO_DATA *TcpProto;
- UINTN VariableDataSize;
- EFI_TCP4_VARIABLE_DATA *Tcp4VariableData;
- EFI_TCP4_SERVICE_POINT *Tcp4ServicePoint;
- EFI_TCP6_VARIABLE_DATA *Tcp6VariableData;
- EFI_TCP6_SERVICE_POINT *Tcp6ServicePoint;
- VOID *VariableData;
- CHAR16 *NewMacString;
- EFI_STATUS Status;
-
- if (TcpService->IpVersion == IP_VERSION_4) {
- ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid;
- } else {
- ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid;
- }
-
- NumConfiguredInstance = 0;
- Tcp4VariableData = NULL;
- Tcp6VariableData = NULL;
-
- //
- // Go through the running queue to count the instances.
- //
- NET_LIST_FOR_EACH (Entry, &mTcpRunQue) {
- TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
-
- TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;
-
- if (TcpProto->TcpService == TcpService) {
- //
- // This tcp instance belongs to the TcpService.
- //
- NumConfiguredInstance++;
- }
- }
-
- //
- // Go through the listening queue to count the instances.
- //
- NET_LIST_FOR_EACH (Entry, &mTcpListenQue) {
- TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
-
- TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;
-
- if (TcpProto->TcpService == TcpService) {
- //
- // This tcp instance belongs to the TcpService.
- //
- NumConfiguredInstance++;
- }
- }
-
- Tcp4ServicePoint = NULL;
- Tcp6ServicePoint = NULL;
-
- //
- // Calculate the size of the Tcp4VariableData. As there may be no Tcp4 child,
- // we should add extra buffers for the service points only if the number of configured
- // children is more than one.
- //
- if (TcpService->IpVersion == IP_VERSION_4) {
- VariableDataSize = sizeof (EFI_TCP4_VARIABLE_DATA);
-
- if (NumConfiguredInstance > 1) {
- VariableDataSize += sizeof (EFI_TCP4_SERVICE_POINT) * (NumConfiguredInstance - 1);
- }
-
- Tcp4VariableData = AllocateZeroPool (VariableDataSize);
- if (Tcp4VariableData == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- Tcp4VariableData->DriverHandle = TcpService->DriverBindingHandle;
- Tcp4VariableData->ServiceCount = NumConfiguredInstance;
-
- Tcp4ServicePoint = &Tcp4VariableData->Services[0];
- VariableData = Tcp4VariableData;
- } else {
- VariableDataSize = sizeof (EFI_TCP6_VARIABLE_DATA);
-
- if (NumConfiguredInstance > 1) {
- VariableDataSize += sizeof (EFI_TCP6_SERVICE_POINT) * (NumConfiguredInstance - 1);
- }
-
- Tcp6VariableData = AllocateZeroPool (VariableDataSize);
- if (Tcp6VariableData == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- Tcp6VariableData->DriverHandle = TcpService->DriverBindingHandle;
- Tcp6VariableData->ServiceCount = NumConfiguredInstance;
-
- Tcp6ServicePoint = &Tcp6VariableData->Services[0];
- VariableData = Tcp6VariableData;
- }
-
- //
- // Go through the running queue to fill the service points.
- //
- NET_LIST_FOR_EACH (Entry, &mTcpRunQue) {
- TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
-
- TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;
-
- if (TcpProto->TcpService == TcpService) {
- //
- // This tcp instance belongs to the TcpService.
- //
- if (TcpService->IpVersion == IP_VERSION_4) {
- Tcp4ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle;
- CopyMem (&Tcp4ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS));
- Tcp4ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port);
- CopyMem (&Tcp4ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS));
- Tcp4ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port);
-
- Tcp4ServicePoint++;
- } else {
- Tcp6ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle;
- IP6_COPY_ADDRESS (&Tcp6ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip);
- Tcp6ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port);
- IP6_COPY_ADDRESS (&Tcp6ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip);
- Tcp6ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port);
-
- Tcp6ServicePoint++;
- }
- }
- }
-
- //
- // Go through the listening queue to fill the service points.
- //
- NET_LIST_FOR_EACH (Entry, &mTcpListenQue) {
- TcpPcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
-
- TcpProto = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;
-
- if (TcpProto->TcpService == TcpService) {
- //
- // This tcp instance belongs to the TcpService.
- //
- if (TcpService->IpVersion == IP_VERSION_4) {
- Tcp4ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle;
- CopyMem (&Tcp4ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS));
- Tcp4ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port);
- CopyMem (&Tcp4ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS));
- Tcp4ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port);
-
- Tcp4ServicePoint++;
- } else {
- Tcp6ServicePoint->InstanceHandle = TcpPcb->Sk->SockHandle;
- IP6_COPY_ADDRESS (&Tcp6ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip);
- Tcp6ServicePoint->LocalPort = NTOHS (TcpPcb->LocalEnd.Port);
- IP6_COPY_ADDRESS (&Tcp6ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip);
- Tcp6ServicePoint->RemotePort = NTOHS (TcpPcb->RemoteEnd.Port);
-
- Tcp6ServicePoint++;
- }
- }
- }
-
- //
- // Get the mac string.
- //
- Status = NetLibGetMacString (
- TcpService->ControllerHandle,
- TcpService->DriverBindingHandle,
- &NewMacString
- );
- if (EFI_ERROR (Status)) {
- goto ON_ERROR;
- }
-
- if (TcpService->MacString != NULL) {
- //
- // The variable is set already. We're going to update it.
- //
- if (StrCmp (TcpService->MacString, NewMacString) != 0) {
- //
- // The mac address is changed. Delete the previous variable first.
- //
- gRT->SetVariable (
- TcpService->MacString,
- ServiceBindingGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- 0,
- NULL
- );
- }
-
- FreePool (TcpService->MacString);
- }
-
- TcpService->MacString = NewMacString;
-
- Status = gRT->SetVariable (
- TcpService->MacString,
- ServiceBindingGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- VariableDataSize,
- VariableData
- );
-
-ON_ERROR:
-
- FreePool (VariableData);
-
- return Status;
-}
-
-/**
- Clear the variable and free the resource.
-
- @param[in] TcpService Tcp service data.
-
-**/
-VOID
-TcpClearVariableData (
- IN TCP_SERVICE_DATA *TcpService
- )
-{
- EFI_GUID *ServiceBindingGuid;
-
- ASSERT (TcpService->MacString != NULL);
-
- if (TcpService->IpVersion == IP_VERSION_4) {
- ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid;
- } else {
- ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid;
- }
-
- gRT->SetVariable (
- TcpService->MacString,
- ServiceBindingGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- 0,
- NULL
- );
-
- FreePool (TcpService->MacString);
- TcpService->MacString = NULL;
-}
-
-/**
Install the device path protocol on the TCP instance.
@param[in] Sock Pointer to the socket representing the TCP instance.
diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.c b/NetworkPkg/Udp6Dxe/Udp6Driver.c index 1c2c33336e..da2093962a 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Driver.c +++ b/NetworkPkg/Udp6Dxe/Udp6Driver.c @@ -1,7 +1,7 @@ /** @file
Driver Binding functions and Service Binding functions for the Network driver module.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -165,8 +165,6 @@ Udp6DriverBindingStart ( if (EFI_ERROR (Status)) {
Udp6CleanService (Udp6Service);
goto EXIT;
- } else {
- Status = Udp6SetVariableData (Udp6Service);
}
EXIT:
@@ -298,9 +296,7 @@ Udp6DriverBindingStop ( &Udp6Service->ServiceBinding,
NULL
);
-
- Udp6ClearVariableData (Udp6Service);
-
+
Udp6CleanService (Udp6Service);
FreePool (Udp6Service);
diff --git a/NetworkPkg/Udp6Dxe/Udp6Impl.c b/NetworkPkg/Udp6Dxe/Udp6Impl.c index 3830b14415..40e3aff069 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Impl.c +++ b/NetworkPkg/Udp6Dxe/Udp6Impl.c @@ -1,7 +1,7 @@ /** @file
Udp6 driver's whole implementation.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -1623,8 +1623,6 @@ Udp6Demultiplex ( }
}
- gRT->GetTime (&RxData.TimeStamp, NULL);
-
Udp6Session = &RxData.UdpSession;
Udp6Session->SourcePort = NTOHS (Udp6Header->SrcPort);
Udp6Session->DestinationPort = NTOHS (Udp6Header->DstPort);
@@ -1933,175 +1931,7 @@ Udp6NetVectorExtFree ( IN VOID *Context
)
{
-}
-
-
-/**
- Set the Udp6 variable data.
-
- @param[in] Udp6Service Udp6 service data.
-
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the
- variable.
- @retval other Set variable failed.
-
-**/
-EFI_STATUS
-Udp6SetVariableData (
- IN UDP6_SERVICE_DATA *Udp6Service
- )
-{
- UINT32 NumConfiguredInstance;
- LIST_ENTRY *Entry;
- UINTN VariableDataSize;
- EFI_UDP6_VARIABLE_DATA *Udp6VariableData;
- EFI_UDP6_SERVICE_POINT *Udp6ServicePoint;
- UDP6_INSTANCE_DATA *Udp6Instance;
- CHAR16 *NewMacString;
- EFI_STATUS Status;
-
- NumConfiguredInstance = 0;
-
- //
- // Go through the children list to count the configured children.
- //
- NET_LIST_FOR_EACH (Entry, &Udp6Service->ChildrenList) {
- Udp6Instance = NET_LIST_USER_STRUCT_S (
- Entry,
- UDP6_INSTANCE_DATA,
- Link,
- UDP6_INSTANCE_DATA_SIGNATURE
- );
-
- if (Udp6Instance->Configured) {
- NumConfiguredInstance++;
- }
- }
-
- //
- // Calculate the size of the Udp6VariableData. As there may be no Udp6 child,
- // we should add extra buffer for the service points only if the number of configured
- // children is more than 1.
- //
- VariableDataSize = sizeof (EFI_UDP6_VARIABLE_DATA);
-
- if (NumConfiguredInstance > 1) {
- VariableDataSize += sizeof (EFI_UDP6_SERVICE_POINT) * (NumConfiguredInstance - 1);
- }
-
- Udp6VariableData = AllocateZeroPool (VariableDataSize);
- if (Udp6VariableData == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- Udp6VariableData->DriverHandle = Udp6Service->ImageHandle;
- Udp6VariableData->ServiceCount = NumConfiguredInstance;
-
- Udp6ServicePoint = &Udp6VariableData->Services[0];
-
- //
- // Go through the children list to fill the configured children's address pairs.
- //
- NET_LIST_FOR_EACH (Entry, &Udp6Service->ChildrenList) {
- Udp6Instance = NET_LIST_USER_STRUCT_S (
- Entry,
- UDP6_INSTANCE_DATA,
- Link,
- UDP6_INSTANCE_DATA_SIGNATURE
- );
-
- if (Udp6Instance->Configured) {
- Udp6ServicePoint->InstanceHandle = Udp6Instance->ChildHandle;
- Udp6ServicePoint->LocalPort = Udp6Instance->ConfigData.StationPort;
- Udp6ServicePoint->RemotePort = Udp6Instance->ConfigData.RemotePort;
-
- IP6_COPY_ADDRESS (
- &Udp6ServicePoint->LocalAddress,
- &Udp6Instance->ConfigData.StationAddress
- );
- IP6_COPY_ADDRESS (
- &Udp6ServicePoint->RemoteAddress,
- &Udp6Instance->ConfigData.RemoteAddress
- );
- Udp6ServicePoint++;
- }
- }
-
- //
- // Get the MAC string.
- //
- Status = NetLibGetMacString (
- Udp6Service->ControllerHandle,
- Udp6Service->ImageHandle,
- &NewMacString
- );
- if (EFI_ERROR (Status)) {
- goto EXIT;
- }
-
- if (Udp6Service->MacString != NULL) {
- //
- // The variable is set already, we're going to update it.
- //
- if (StrCmp (Udp6Service->MacString, NewMacString) != 0) {
- //
- // The MAC address is changed, delete the previous variable first.
- //
- gRT->SetVariable (
- Udp6Service->MacString,
- &gEfiUdp6ServiceBindingProtocolGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- 0,
- NULL
- );
- }
-
- FreePool (Udp6Service->MacString);
- }
-
- Udp6Service->MacString = NewMacString;
-
- Status = gRT->SetVariable (
- Udp6Service->MacString,
- &gEfiUdp6ServiceBindingProtocolGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- VariableDataSize,
- (VOID *) Udp6VariableData
- );
-
-EXIT:
-
- FreePool (Udp6VariableData);
-
- return Status;
-}
-
-
-/**
- Clear the variable and free the resource.
-
- @param[in, out] Udp6Service Udp6 service data.
-
-**/
-VOID
-Udp6ClearVariableData (
- IN OUT UDP6_SERVICE_DATA *Udp6Service
- )
-{
- ASSERT (Udp6Service->MacString != NULL);
-
- gRT->SetVariable (
- Udp6Service->MacString,
- &gEfiUdp6ServiceBindingProtocolGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS,
- 0,
- NULL
- );
-
- FreePool (Udp6Service->MacString);
- Udp6Service->MacString = NULL;
-}
-
+}
/**
Find the key in the netmap.
diff --git a/NetworkPkg/Udp6Dxe/Udp6Impl.h b/NetworkPkg/Udp6Dxe/Udp6Impl.h index 9ca4f4a011..09f315f50b 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Impl.h +++ b/NetworkPkg/Udp6Dxe/Udp6Impl.h @@ -1,7 +1,7 @@ /** @file
Udp6 driver's whole implementation and internal data structures.
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -79,8 +79,7 @@ typedef struct _UDP6_SERVICE_DATA { UINTN ChildrenNumber;
IP_IO *IpIo;
EFI_EVENT TimeoutEvent;
- CHAR16 *MacString;
-} UDP6_SERVICE_DATA;
+ } UDP6_SERVICE_DATA;
typedef struct _UDP6_INSTANCE_DATA {
UINT32 Signature;
@@ -145,22 +144,7 @@ Udp6CreateService ( IN EFI_HANDLE ImageHandle,
IN EFI_HANDLE ControllerHandle
);
-
-/**
- Set the Udp6 variable data.
-
- @param[in] Udp6Service Udp6 service data.
-
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the
- variable.
- @retval other Set variable failed.
-
-**/
-EFI_STATUS
-Udp6SetVariableData (
- IN UDP6_SERVICE_DATA *Udp6Service
- );
-
+
/**
This function cleans the udp instance.
@@ -171,18 +155,7 @@ VOID Udp6CleanInstance (
IN OUT UDP6_INSTANCE_DATA *Instance
);
-
-/**
- Clear the variable and free the resource.
-
- @param[in, out] Udp6Service Udp6 service data.
-
-**/
-VOID
-Udp6ClearVariableData (
- IN OUT UDP6_SERVICE_DATA *Udp6Service
- );
-
+
/**
This function intializes the new created udp instance.
diff --git a/NetworkPkg/Udp6Dxe/Udp6Main.c b/NetworkPkg/Udp6Dxe/Udp6Main.c index 0cad596276..f3e99255f9 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Main.c +++ b/NetworkPkg/Udp6Dxe/Udp6Main.c @@ -1,7 +1,7 @@ /** @file
Contains all EFI_UDP6_PROTOCOL interfaces.
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -275,7 +275,7 @@ Udp6Configure ( //
// Cancel all the user tokens.
//
- Status = Instance->Udp6Proto.Cancel (&Instance->Udp6Proto, NULL);
+ Instance->Udp6Proto.Cancel (&Instance->Udp6Proto, NULL);
//
// Remove the buffered RxData for this instance.
@@ -284,9 +284,7 @@ Udp6Configure ( ASSERT (IsListEmpty (&Instance->DeliveredDgramQue));
}
-
- Status = Udp6SetVariableData (Instance->Udp6Service);
-
+
ON_EXIT:
gBS->RestoreTPL (OldTpl);
|