vpnengine/ikeutils/inc/pfkeymsg.h
changeset 0 33413c0669b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/ikeutils/inc/pfkeymsg.h	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Key management daemon PFKEY message module.
+*
+*/
+
+#ifndef PFKEYMSG_H
+#define PFKEYMSG_H
+
+#include <es_sock.h>
+#include <in_sock.h>
+#include <lib_pfkey.h>
+
+#include <networking/pfkeyv2.h>
+#include <networking/pfkeyext.h>
+
+//
+// Classes for handling PFKEY structures.
+//
+
+class TPfkeyBase
+    {
+public:
+    const struct sadb_msg* iMsg;
+    TPfkeyBase();
+
+#ifdef _DEBUG       
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif   
+    };
+
+class TPfkeyAssociation
+    {
+public:
+    const struct sadb_sa* iExt;
+    TPfkeyAssociation();
+
+#ifdef _DEBUG           
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif      
+    };
+
+class TPfkeyLifetime
+    {
+public:
+    const struct sadb_lifetime* iExt;
+    TPfkeyLifetime();
+
+#ifdef _DEBUG           
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif          
+    };
+
+class TPfkeyAddress
+    {
+public:
+    const struct sadb_address* iExt;
+    const TInetAddr* iAddr;
+    TPfkeyAddress();
+    IMPORT_C const TInetAddr& Address() const;
+
+#ifdef _DEBUG               
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif      
+    };
+
+class TPfkeyKey
+    {
+public:
+    const struct sadb_key* iExt;
+    TPtrC8 iData;
+    TPfkeyKey();
+    
+#ifdef _DEBUG                   
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif  
+    };
+
+class TPfkeyIdentity
+    {
+public:
+    const struct sadb_ident* iExt;
+    TPtrC8 iData;
+    TPfkeyIdentity();
+    
+#ifdef _DEBUG                   
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif  
+    };
+
+class TPfkeySensitivity
+    {
+public:
+    const struct sadb_sens* iExt;
+    TPtrC8 iSensBitmap;
+    TPtrC8 iIntegBitmap;
+    TPfkeySensitivity();
+    
+#ifdef _DEBUG                       
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif      
+    };
+
+class TPfkeyProposal
+    {
+public:
+    const struct sadb_prop* iExt;
+    const struct sadb_comb* iComb;
+    TInt iNumComb;
+    TPfkeyProposal();
+
+#ifdef _DEBUG                       
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif			
+    };
+
+class TPfkeySupported
+    {
+public:
+    const struct sadb_supported* iExt;
+    const struct sadb_alg* iAlg;
+    TInt iNumAlg;
+    TPfkeySupported();
+
+#ifdef _DEBUG                       
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif    
+    virtual void AlgString( TDes &aStr,
+                            TUint8 aAlg ) const = 0;
+    };
+
+class TPfkeySupportedAuth : public TPfkeySupported
+    {                           
+public:
+    void AlgString( TDes &aStr,
+                    TUint8 aAlg ) const;
+    static void Alg2String( TDes &aStr,
+                            TUint8 aAlg );          
+    };
+
+class TPfkeySupportedEncrypt : public TPfkeySupported
+    {                  
+public:
+    void AlgString( TDes &aStr,
+                    TUint8 aAlg ) const;
+    static void Alg2String( TDes &aStr,
+                            TUint8 aAlg );  
+    };
+
+class TPfkeySpirange
+    {
+public:
+    const struct sadb_spirange* iExt;
+    TPfkeySpirange();
+    
+#ifdef _DEBUG                   
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif
+    };
+
+class TPfKeySelector: public sadb_x_selector
+    {
+public:
+    TInetAddr iSrc;
+    TInetAddr iDst;    
+    };
+    
+class TPfkeyTs
+    {
+public:
+    const struct sadb_x_ts* iExt;
+    TPfkeyTs();
+    IMPORT_C TInt SelectorCount() const;
+    IMPORT_C const TPfKeySelector& Selector( TInt aIndex ) const;
+    
+#ifdef _DEBUG
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif    
+    };
+    
+
+class TPFkeyPrivExt
+    {
+public:
+    const struct sadb_gen_ext* iExt;
+    TPtrC8 iData;
+    TPFkeyPrivExt();
+    
+#ifdef _DEBUG                   
+    void String( TDes &aStr,
+                 const TDesC &aLabel ) const;
+#endif  
+    };
+
+
+//
+// Internal presentation of the PF_KEY message
+//
+class TPfkeyMessage
+    {
+public:
+    //
+    // Construct internal presentation from the PFKEY bytestream message
+    TPfkeyMessage( TPfkeyRecvMsg& aMsg );
+    TPfkeyMessage();
+    TInt iError;    // == KErrNone, if message format valid.
+    TPfkeyBase iBase;
+    TPfkeyAssociation iSa;
+    TPfkeyLifetime iCurrent;
+    TPfkeyLifetime iHard;
+    TPfkeyLifetime iSoft;
+    TPfkeyAddress iSrcAddr;
+    TPfkeyAddress iDstAddr;
+    TPfkeyAddress iProxyAddr;
+    TPfkeyKey iAuthKey;
+    TPfkeyKey iEncryptKey;
+    TPfkeyIdentity iSrcIdent;
+    TPfkeyIdentity iDstIdent;
+    TPfkeySensitivity iSensitivity;
+    TPfkeyProposal iProposal;
+    TPfkeySupportedAuth iAuthAlgs;
+    TPfkeySupportedEncrypt iEncryptAlgs;
+    TPfkeySpirange iSpirange;
+    TPfkeyTs iTs;
+    TPFkeyPrivExt  iPrivateExtension;  // For ESP UDP encapsulation 
+    };
+
+#endif // PFKEYMSG_H