summaryrefslogtreecommitdiff
path: root/NetworkPkg/Ip6Dxe/Ip6Common.c
diff options
context:
space:
mode:
Diffstat (limited to 'NetworkPkg/Ip6Dxe/Ip6Common.c')
-rw-r--r--NetworkPkg/Ip6Dxe/Ip6Common.c142
1 files changed, 1 insertions, 141 deletions
diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.c b/NetworkPkg/Ip6Dxe/Ip6Common.c
index 18ec012..4f71d05 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.