X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=NetworkPkg%2FIp6Dxe%2FIp6Input.c;h=57a52326e1bf89fba4d2ab7edfa02060f4875108;hp=cf88884e381b20f088b1b791d9540051143ba1f2;hb=ecf98fbcf858b9cb09ff0ac1c2a09c0111b4026b;hpb=cc0b145e0f828a26715d4b483abee9b0a56ad6f7 diff --git a/NetworkPkg/Ip6Dxe/Ip6Input.c b/NetworkPkg/Ip6Dxe/Ip6Input.c index cf88884e38..57a52326e1 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Input.c +++ b/NetworkPkg/Ip6Dxe/Ip6Input.c @@ -1,15 +1,10 @@ /** @file IP6 internal functions to process the incoming packets. - Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett-Packard Development Company, L.P.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -525,6 +520,12 @@ Ip6IpSecProcessPacket ( EFI_IP6_HEADER ZeroHead; Status = EFI_SUCCESS; + + if (!mIpSec2Installed) { + goto ON_EXIT; + } + ASSERT (mIpSec != NULL); + Packet = *Netbuf; RecycleEvent = NULL; IpSecWrap = NULL; @@ -535,17 +536,6 @@ Ip6IpSecProcessPacket ( FragmentCount = Packet->BlockOpNum; ZeroMem (&ZeroHead, sizeof (EFI_IP6_HEADER)); - if (mIpSec == NULL) { - gBS->LocateProtocol (&gEfiIpSec2ProtocolGuid, NULL, (VOID **) &mIpSec); - - // - // Check whether the ipsec protocol is available. - // - if (mIpSec == NULL) { - goto ON_EXIT; - } - } - // // Check whether the ipsec enable variable is set. // @@ -651,7 +641,7 @@ Ip6IpSecProcessPacket ( IP6_GET_CLIP_INFO (Packet), sizeof (IP6_CLIP_INFO) ); - + NetIpSecNetbufFree(Packet); *Netbuf = TxWrap->Packet; @@ -728,13 +718,13 @@ ON_EXIT: @param[in, out] Packet The received IP6 packet to be processed. @param[in] Flag The link layer flag for the packet received, such as multicast. - @param[out] Payload The pointer to the payload of the recieved packet. - it starts from the first byte of the extension header. + @param[out] Payload The pointer to the payload of the recieved packet. + it starts from the first byte of the extension header. @param[out] LastHead The pointer of NextHeader of the last extension header processed by IP6. @param[out] ExtHdrsLen The length of the whole option. @param[out] UnFragmentLen The length of unfragmented length of extension headers. - @param[out] Fragmented Indicate whether the packet is fragmented. + @param[out] Fragmented Indicate whether the packet is fragmented. @param[out] Head The pointer to the EFI_IP6_Header. @retval EFI_SUCCESS The received packet is well format. @@ -750,7 +740,7 @@ Ip6PreProcessPacket ( OUT UINT8 **LastHead, OUT UINT32 *ExtHdrsLen, OUT UINT32 *UnFragmentLen, - OUT BOOLEAN *Fragmented, + OUT BOOLEAN *Fragmented, OUT EFI_IP6_HEADER **Head ) { @@ -968,7 +958,7 @@ Ip6PreProcessPacket ( // and Packet->TotalLen == Info->Length. // NetbufTrim (*Packet, sizeof (EFI_IP6_HEADER) + *ExtHdrsLen, TRUE); - + return EFI_SUCCESS; } @@ -1013,18 +1003,18 @@ Ip6AcceptFrame ( if (EFI_ERROR (IoStatus) || (IpSb->State == IP6_SERVICE_DESTROY)) { goto Drop; } - + // // Pre-Process the Ipv6 Packet and then reassemble if it is necessary. // Status = Ip6PreProcessPacket ( - IpSb, - &Packet, - Flag, - &Payload, - &LastHead, - &ExtHdrsLen, - &UnFragmentLen, + IpSb, + &Packet, + Flag, + &Payload, + &LastHead, + &ExtHdrsLen, + &UnFragmentLen, &Fragmented, &Head ); @@ -1056,14 +1046,14 @@ Ip6AcceptFrame ( ZeroMem (&ZeroHead, sizeof (EFI_IP6_HEADER)); if (0 == CompareMem (Head, &ZeroHead, sizeof (EFI_IP6_HEADER))) { Status = Ip6PreProcessPacket ( - IpSb, - &Packet, - Flag, - &Payload, - &LastHead, - &ExtHdrsLen, - &UnFragmentLen, - &Fragmented, + IpSb, + &Packet, + Flag, + &Payload, + &LastHead, + &ExtHdrsLen, + &UnFragmentLen, + &Fragmented, &Head ); if (EFI_ERROR (Status)) { @@ -1077,7 +1067,7 @@ Ip6AcceptFrame ( if (Packet == NULL) { goto Restart; } - + // // Packet may have been changed. The ownership of the packet // is transfered to the packet process logic.