4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The Interfaces of IPsec debug information printing.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "IpSecImpl.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "IpSecDebug.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The print title for IKEv1 variety phase.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR8 *mIkev1StateStr[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_MAIN_1",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_MAIN_2",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_MAIN_3",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_MAIN_ESTABLISHED",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_QUICK_1",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_QUICK_2",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1_QUICK_ESTABLISHED"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The print title for IKEv2 variety phase.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR8 *mIkev2StateStr[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_INIT",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_AUTH",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_SA_ESTABLISH",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_CREATE_CHILD",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_SA_REKEYING",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_CHILD_SA_ESTABLISHED",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2_STATE_SA_DELETING"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The print title for IKEv1 variety Exchagne.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR8 *mExchangeStr[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Main Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Info Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Quick Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Initial Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Auth Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Create Child Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Info Exchange",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKE Unknow Exchange"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The print title for IKEv1 variety Payload.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR8 *mIkev1PayloadStr[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 None Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 SA Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Proposal Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Transform Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 KE Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 ID Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Certificate Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Certificate Request Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Hash Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Signature Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Nonce Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Notify Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Delete Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv1 Vendor Payload"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The print title for IKEv2 variety Payload.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR8* mIkev2PayloadStr[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 SA Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Key Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Identity Initial Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Identity Respond Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Certificate Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Certificate Request Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Auth Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Nonce Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Notify Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Delet Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Vendor Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Traffic Selector Initiator Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Traffic Selector Respond Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Encrypt Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Configuration Payload",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "IKEv2 Extensible Authentication Payload"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print the IP address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Level Debug print error level. Pass to DEBUG().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Ip Point to a specified IP address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IpVersion The IP Version.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIpSecDumpAddress (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Level,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_IP_ADDRESS *Ip,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 IpVersion
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (IpVersion == IP_VERSION_6) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Level,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "%x%x:%x%x:%x%x:%x%x",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[3],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[4],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[5],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[6],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[7])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Level,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ":%x%x:%x%x:%x%x:%x%x\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[8],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[9],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[10],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[11],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[12],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[13],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[14],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v6.Addr[15])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Level,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "%d.%d.%d.%d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v4.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v4.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v4.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip->v4.Addr[3])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print IKE Current states.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Previous The Previous state of IKE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Current The current state of IKE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IkeVersion The version of IKE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIkeDumpState (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 Previous,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 Current,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 IkeVersion
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Previous == Current) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (IkeVersion == 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n****Current state is %a\n", mIkev1StateStr[Previous]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (IkeVersion == 2) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n****Current state is %a\n", mIkev2StateStr[Previous]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (IkeVersion == 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n****Change state from %a to %a\n", mIkev1StateStr[Previous], mIkev1StateStr[Current]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n****Change state from %a to %a\n", mIkev2StateStr[Previous], mIkev2StateStr[Current]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print the IKE Packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Packet Point to IKE packet to be printed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Direction Point to the IKE packet is inbound or outbound.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IpVersion Specified IP Version.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIpSecDumpPacket (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN IKE_PACKET *Packet,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_IPSEC_TRAFFIC_DIR Direction,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 IpVersion
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *TypeStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN PacketSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 InitCookie;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 RespCookie;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ASSERT (Packet != NULL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PacketSize = Packet->PayloadTotalSize + sizeof (IKE_HEADER);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InitCookie = (Direction == EfiIPsecOutBound) ? HTONLL (Packet->Header->InitiatorCookie) : Packet->Header->InitiatorCookie;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RespCookie = (Direction == EfiIPsecOutBound) ? HTONLL (Packet->Header->ResponderCookie) : Packet->Header->ResponderCookie;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (Packet->Header->ExchangeType) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_IDENTITY_PROTECT:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[0];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_INFO:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_QM:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[2];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_SA_INIT:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[3];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_AUTH:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[4];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_CREATE_CHILD_SA:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[5];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case IKE_XCG_TYPE_INFO2:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[6];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TypeStr = mExchangeStr[7];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Direction == EfiIPsecOutBound) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n>>>Sending %d bytes %a to ", PacketSize, TypeStr));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n>>>Receiving %d bytes %a from ", PacketSize, TypeStr));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpSecDumpAddress (DEBUG_INFO, &Packet->RemotePeerIp, IpVersion);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, " InitiatorCookie:0x%lx ResponderCookie:0x%lx\n", InitCookie, RespCookie));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (DEBUG_INFO,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync " Version: 0x%x Flags:0x%x ExchangeType:0x%x\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Packet->Header->Version,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Packet->Header->Flags,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Packet->Header->ExchangeType)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (DEBUG_INFO,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync " MessageId:0x%x NextPayload:0x%x\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Packet->Header->MessageId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Packet->Header->NextPayload)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print the IKE Paylolad.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IkePayload Point to payload to be printed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IkeVersion The specified version of IKE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIpSecDumpPayload (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN IKE_PAYLOAD *IkePayload,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 IkeVersion
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (IkeVersion == 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "+%a\n", mIkev1PayloadStr[IkePayload->PayloadType]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // For IKEV2 the first Payload type is started from 33.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "+%a\n", mIkev2PayloadStr[IkePayload->PayloadType - 33]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpSecDumpBuf ("Payload data", IkePayload->PayloadBuf, IkePayload->PayloadSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print the buffer in form of Hex.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Title The strings to be printed before the data of the buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Data Points to buffer to be printed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DataSize The size of the buffer to be printed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIpSecDumpBuf (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *Title,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Data,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DataSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN DataIndex;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN BytesRemaining;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN BytesToPrint;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DataIndex = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BytesRemaining = DataSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "==%a %d bytes==\n", Title, DataSize));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while (BytesRemaining > 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BytesToPrint = (BytesRemaining > IPSEC_DEBUG_BYTE_PER_LINE) ? IPSEC_DEBUG_BYTE_PER_LINE : BytesRemaining;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < BytesToPrint; Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, " 0x%02x,", Data[DataIndex++]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEBUG ((DEBUG_INFO, "\n"));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BytesRemaining -= BytesToPrint;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}