From a3bcde70e6dc69000f85cc5deee98101d2ae200a Mon Sep 17 00:00:00 2001 From: hhtian Date: Mon, 1 Nov 2010 06:13:54 +0000 Subject: Add NetworkPkg (P.UDK2010.UP3.Network.P1) git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10986 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/IpSecDxe/IpSecDebug.c | 172 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 NetworkPkg/IpSecDxe/IpSecDebug.c (limited to 'NetworkPkg/IpSecDxe/IpSecDebug.c') diff --git a/NetworkPkg/IpSecDxe/IpSecDebug.c b/NetworkPkg/IpSecDxe/IpSecDebug.c new file mode 100644 index 0000000000..8a5811b960 --- /dev/null +++ b/NetworkPkg/IpSecDxe/IpSecDebug.c @@ -0,0 +1,172 @@ +/** @file + Interface of IPsec printing debug information. + + Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+ + 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. + +**/ + +#include "IpSecImpl.h" +#include "IpSecDebug.h" + +// +// The print title for IKEv1 variety phase. +// +CHAR8 *mStateStr[] = { + "IKEv1_MAIN_1", + "IKEv1_MAIN_2", + "IKEv1_MAIN_3", + "IKEv1_MAIN_ESTABLISHED", + "IKEv1_QUICK_1", + "IKEv1_QUICK_2", + "IKEv1_QUICK_ESTABLISHED" +}; +// +// The print title for IKEv1 variety Exchagne. +// +CHAR8 *mExchangeStr[] = { + "IKEv1 Main Exchange", + "IKEv1 Info Exchange", + "IKEv1 Quick Exchange", + "IKEv1 Unknown Exchange" +}; + +// +// The print title for IKEv1 variety Payload. +// +CHAR8 *mPayloadStr[] = { + "IKEv1 None Payload", + "IKEv1 SA Payload", + "IKEv1 Proposal Payload", + "IKEv1 Transform Payload", + "IKEv1 KE Payload", + "IKEv1 ID Payload", + "IKEv1 Certificate Payload", + "IKEv1 Certificate Request Payload", + "IKEv1 Hash Payload", + "IKEv1 Signature Payload", + "IKEv1 Nonce Payload", + "IKEv1 Notify Payload", + "IKEv1 Delete Payload", + "IKEv1 Vendor Payload" +}; + +/** + Print the IP address. + + @param[in] Level Debug print error level. Pass to DEBUG(). + @param[in] Ip Point to a specified IP address. + @param[in] IpVersion The IP Version. + +**/ +VOID +IpSecDumpAddress ( + IN UINTN Level, + IN EFI_IP_ADDRESS *Ip, + IN UINT8 IpVersion + ) +{ + if (IpVersion == IP_VERSION_6) { + DEBUG ( + (Level, + "%x%x:%x%x:%x%x:%x%x", + Ip->v6.Addr[0], + Ip->v6.Addr[1], + Ip->v6.Addr[2], + Ip->v6.Addr[3], + Ip->v6.Addr[4], + Ip->v6.Addr[5], + Ip->v6.Addr[6], + Ip->v6.Addr[7]) + ); + DEBUG ( + (Level, + ":%x%x:%x%x:%x%x:%x%x\n", + Ip->v6.Addr[8], + Ip->v6.Addr[9], + Ip->v6.Addr[10], + Ip->v6.Addr[11], + Ip->v6.Addr[12], + Ip->v6.Addr[13], + Ip->v6.Addr[14], + Ip->v6.Addr[15]) + ); + } else { + DEBUG ( + (Level, + "%d.%d.%d.%d\n", + Ip->v4.Addr[0], + Ip->v4.Addr[1], + Ip->v4.Addr[2], + Ip->v4.Addr[3]) + ); + } + +} + +/** + Print IKEv1 Current states. + + @param[in] Previous The Previous state of IKEv1. + @param[in] Current The current state of IKEv1. + +**/ +VOID +IpSecDumpState ( + IN UINT32 Previous, + IN UINT32 Current + ) +{ + if (Previous == Current) { + DEBUG ((DEBUG_INFO, "\n****Current state is %a\n", mStateStr[Previous])); + } else { + DEBUG ((DEBUG_INFO, "\n****Change state from %a to %a\n", mStateStr[Previous], mStateStr[Current])); + } + +} + +/** + Print the buffer in form of Hex. + + @param[in] Title The strings to be printed before the data of the buffer. + @param[in] Data Points to buffer to be printed. + @param[in] DataSize The size of the buffer to be printed. + +**/ +VOID +IpSecDumpBuf ( + IN CHAR8 *Title, + IN UINT8 *Data, + IN UINTN DataSize + ) +{ + UINTN Index; + UINTN DataIndex; + UINTN BytesRemaining; + UINTN BytesToPrint; + + DataIndex = 0; + BytesRemaining = DataSize; + + DEBUG ((DEBUG_INFO, "==%a %d bytes==\n", Title, DataSize)); + + while (BytesRemaining > 0) { + + BytesToPrint = (BytesRemaining > IPSEC_DEBUG_BYTE_PER_LINE) ? IPSEC_DEBUG_BYTE_PER_LINE : BytesRemaining; + + for (Index = 0; Index < BytesToPrint; Index++) { + DEBUG ((DEBUG_INFO, " 0x%02x,", Data[DataIndex++])); + } + + DEBUG ((DEBUG_INFO, "\n")); + BytesRemaining -= BytesToPrint; + } + +} -- cgit v1.2.3