1 /** @file
2   IKE Packet related definitions and function declarations.
3 
4   Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
5 
6   This program and the accompanying materials
7   are licensed and made available under the terms and conditions of the BSD License
8   which accompanies this distribution.  The full text of the license may be found at
9   http://opensource.org/licenses/bsd-license.php.
10 
11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 
14 **/
15 
16 #ifndef _IKE_V1_PACKET_H_
17 #define _IKE_V1_PACKET_H_
18 
19 #include "Ike.h"
20 
21 #define IKE_PACKET_REF(p) ((p)->RefCount++)
22 
23 /**
24   Allocate a buffer for the IKE_PACKET and intitalize its Header and payloadlist.
25 
26   @return The pointer of the IKE_PACKET.
27 
28 **/
29 IKE_PACKET *
30 IkePacketAlloc (
31   VOID
32   );
33 
34 
35 /**
36   Free the IkePacket by the specified IKE_PACKET pointer.
37 
38   @param[in]  IkePacket  The pointer of the IKE_PACKET to be freed.
39 
40 **/
41 VOID
42 IkePacketFree (
43   IN IKE_PACKET *IkePacket
44   );
45 
46 
47 /**
48   Copy the NetBuf into a IKE_PACKET sturcture.
49 
50   Create a IKE_PACKET and fill the received IKE header into the header of IKE_PACKET
51   and copy the recieved packet without IKE HEADER to the PayloadBuf of IKE_PACKET.
52 
53   @param[in]  Netbuf      The pointer of the Netbuf which contains the whole received
54                           IKE packet.
55 
56   @return The pointer of the IKE_PACKET which contains the received packet.
57 
58 **/
59 IKE_PACKET *
60 IkePacketFromNetbuf (
61   IN NET_BUF *Netbuf
62   );
63 
64 /**
65   Convert the format from IKE_PACKET to NetBuf.
66 
67   @param[in]  SessionCommon  Pointer of related IKE_COMMON_SESSION
68   @param[in]  IkePacket      Pointer of IKE_PACKET to be copy to NetBuf
69   @param[in]  IkeType        The IKE type to pointer the packet is for which IKE
70                              phase. Now it supports IKE_SA_TYPE, IKE_CHILDSA_TYPE,
71                              IKE_INFO_TYPE.
72 
73   @return A pointer of Netbuff which contains the contents of the IKE_PACKE in network order.
74 **/
75 NET_BUF *
76 IkeNetbufFromPacket (
77   IN UINT8               *SessionCommon,
78   IN IKE_PACKET          *IkePacket,
79   IN UINTN               IkeType
80   );
81 
82 #endif
83