Documentation on Windows Filtering Platform

Kenneth Ramstedt 0 Reputation points
2023-04-27T09:39:17.95+00:00

Hello,

I have not been able to find documentation on the function

FwpmIPsecTunnelAdd3() and structures

FWPM_PROVIDER_CONTEXT3

IPSEC_TUNNEL_POLICY3

IPSEC_TRAFFIC_SELECTOR_POLICY0

IPSEC_TRAFFIC_SELECTOR0

Does it exist?

regards

Kenneth Ramstedt

Windows development Windows API - Win32
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Castorix31 90,521 Reputation points
    2023-04-28T11:43:08.32+00:00

    You can find the definitions in SDK headers

    It is the same API as FwpmIPsecTunnelAdd2 with FWPM_PROVIDER_CONTEXT3

    #if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
    typedef struct FWPM_PROVIDER_CONTEXT3_
        {
        GUID providerContextKey;
        FWPM_DISPLAY_DATA0 displayData;
        UINT32 flags;
        /* [unique] */ GUID *providerKey;
        FWP_BYTE_BLOB providerData;
        FWPM_PROVIDER_CONTEXT_TYPE type;
        /* [switch_is][switch_type] */ union 
            {
            /* [case()][unique] */ IPSEC_KEYING_POLICY1 *keyingPolicy;
            /* [case()][unique] */ IPSEC_TRANSPORT_POLICY2 *ikeQmTransportPolicy;
            /* [case()][unique] */ IPSEC_TUNNEL_POLICY3 *ikeQmTunnelPolicy;
            /* [case()][unique] */ IPSEC_TRANSPORT_POLICY2 *authipQmTransportPolicy;
            /* [case()][unique] */ IPSEC_TUNNEL_POLICY3 *authipQmTunnelPolicy;
            /* [case()][unique] */ IKEEXT_POLICY2 *ikeMmPolicy;
            /* [case()][unique] */ IKEEXT_POLICY2 *authIpMmPolicy;
            /* [case()][unique] */ FWP_BYTE_BLOB *dataBuffer;
            /* [case()][unique] */ FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
            /* [case()][unique] */ IPSEC_TUNNEL_POLICY3 *ikeV2QmTunnelPolicy;
            /* [case()][unique] */ IPSEC_TRANSPORT_POLICY2 *ikeV2QmTransportPolicy;
            /* [case()][unique] */ IKEEXT_POLICY2 *ikeV2MmPolicy;
            /* [case()][unique] */ IPSEC_DOSP_OPTIONS0 *idpOptions;
            } 	;
        UINT64 providerContextId;
        } 	FWPM_PROVIDER_CONTEXT3;
    #endif // (NTDDI_VERSION >= NTDDI_WIN10_RS3)
    
    #if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
    typedef struct IPSEC_TUNNEL_POLICY3_
        {
        UINT32 flags;
        UINT32 numIpsecProposals;
        /* [ref][size_is] */ IPSEC_PROPOSAL0 *ipsecProposals;
        IPSEC_TUNNEL_ENDPOINTS2 tunnelEndpoints;
        IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
        /* [unique] */ IKEEXT_EM_POLICY2 *emPolicy;
        UINT32 fwdPathSaLifetime;
        UINT32 compartmentId;
        UINT32 numTrafficSelectorPolicy;
        /* [unique][size_is] */ IPSEC_TRAFFIC_SELECTOR_POLICY0 *trafficSelectorPolicies;
        } 	IPSEC_TUNNEL_POLICY3;
    
    #endif // (NTDDI_VERSION >= NTDDI_WIN10_RS3)
    
    
    typedef struct IPSEC_TRAFFIC_SELECTOR_POLICY0_
        {
        UINT32 flags;
        UINT32 numLocalTrafficSelectors;
        /* [unique][size_is] */ IPSEC_TRAFFIC_SELECTOR0 *localTrafficSelectors;
        UINT32 numRemoteTrafficSelectors;
        /* [unique][size_is] */ IPSEC_TRAFFIC_SELECTOR0 *remoteTrafficSelectors;
        } 	IPSEC_TRAFFIC_SELECTOR_POLICY0;
    
    
    typedef struct IPSEC_TRAFFIC_SELECTOR0_
        {
        UINT8 protocolId;
        UINT16 portStart;
        UINT16 portEnd;
        FWP_IP_VERSION ipVersion;
        /* [switch_is][switch_type] */ union 
            {
            /* [case()] */ UINT32 startV4Address;
            /* [case()] */ UINT8 startV6Address[ 16 ];
            } 	;
        /* [switch_is][switch_type] */ union 
            {
            /* [case()] */ UINT32 endV4Address;
            /* [case()] */ UINT8 endV6Address[ 16 ];
            } 	;
        } 	IPSEC_TRAFFIC_SELECTOR0;
    
    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.