mirror of https://github.com/acidanthera/audk.git
173 lines
4.0 KiB
C
173 lines
4.0 KiB
C
|
/** @file
|
||
|
Interface of IPsec printing debug information.
|
||
|
|
||
|
Copyright (c) 2009 - 2010, 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
|
||
|
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;
|
||
|
}
|
||
|
|
||
|
}
|