You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
282 lines
6.3 KiB
282 lines
6.3 KiB
|
|
|
|
#define IPSEC_ISAKMP_PORT2 0x9411 // 4500 in NBO
|
|
#define IPSEC_ISAKMP_PORT 0xf401 // 500 in NBO
|
|
#define IPSEC_KERBEROS_PORT 0x5800 // 88 in NBO
|
|
#define IPSEC_LDAP_PORT 0x8501 // 389 in NBO
|
|
#define IPSEC_L2TP_PORT 0xa506
|
|
|
|
IPSEC_ACTION
|
|
IPSecHandlePacket(
|
|
IN PUCHAR pIPHeader,
|
|
IN PVOID pData,
|
|
IN PVOID IPContext,
|
|
IN PNDIS_PACKET Packet,
|
|
IN OUT PULONG pExtraBytes,
|
|
IN OUT PULONG pMTU,
|
|
OUT PVOID *pNewData,
|
|
IN OUT PULONG pIpsecFlags,
|
|
IN UCHAR DestType
|
|
);
|
|
|
|
IPSEC_ACTION
|
|
IPSecSendPacket(
|
|
IN PUCHAR pIPHeader,
|
|
IN PVOID pData,
|
|
IN PVOID IPContext,
|
|
IN PNDIS_PACKET Packet,
|
|
IN OUT PULONG pExtraBytes,
|
|
IN OUT PULONG pMTU,
|
|
OUT PVOID *pNewData,
|
|
IN OUT PULONG pIpsecFlags,
|
|
OUT PIPSEC_DROP_STATUS pDropStatus,
|
|
IN UCHAR DestType
|
|
);
|
|
|
|
IPSEC_ACTION
|
|
IPSecRecvPacket(
|
|
IN PUCHAR *pIPHeader,
|
|
IN PVOID pData,
|
|
IN PVOID IPContext,
|
|
IN PNDIS_PACKET Packet,
|
|
IN OUT PULONG pExtraBytes,
|
|
IN OUT PULONG pIpsecFlags,
|
|
OUT PIPSEC_DROP_STATUS pDropStatus,
|
|
IN UCHAR DestType
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
IPSecVerifyIncomingFilterSA(IN PUCHAR * pIPHeader,
|
|
IN PVOID pData,
|
|
IN PSA_TABLE_ENTRY pSA,
|
|
IN UCHAR DestType,
|
|
BOOLEAN fLoopback,
|
|
BOOLEAN fReinject,
|
|
IN PIPSEC_UDP_ENCAP_CONTEXT pNatContext
|
|
);
|
|
|
|
VOID
|
|
IPSecCalcHeaderOverheadFromSA(
|
|
IN PSA_TABLE_ENTRY pSA,
|
|
OUT PULONG pOverhead
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecParsePacket(
|
|
IN PUCHAR pIPHeader,
|
|
IN PVOID *pData,
|
|
OUT tSPI *pSPI,
|
|
OUT BOOLEAN *bNatEncap,
|
|
OUT IPSEC_UDP_ENCAP_CONTEXT *pNatContext
|
|
);
|
|
|
|
PSA_TABLE_ENTRY
|
|
IPSecLookupSAInLarval(
|
|
IN ULARGE_INTEGER uliSrcDstAddr,
|
|
IN ULARGE_INTEGER uliProtoSrcDstPort
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecClassifyPacket(
|
|
IN PUCHAR pHeader,
|
|
IN PVOID pData,
|
|
OUT PSA_TABLE_ENTRY *ppSA,
|
|
OUT PSA_TABLE_ENTRY *ppNextSA,
|
|
OUT USHORT *pFilterFlags,
|
|
#if GPC
|
|
IN CLASSIFICATION_HANDLE GpcHandle,
|
|
#endif
|
|
IN BOOLEAN fOutbound,
|
|
IN BOOLEAN fFWPacket,
|
|
IN BOOLEAN fDoBypassCheck,
|
|
IN BOOLEAN fRecvReinject,
|
|
IN BOOLEAN fVerify,
|
|
IN UCHAR DestType,
|
|
IN PIPSEC_UDP_ENCAP_CONTEXT pNatContext
|
|
);
|
|
|
|
VOID
|
|
IPSecSendComplete(
|
|
IN PNDIS_PACKET Packet,
|
|
IN PVOID pData,
|
|
IN PIPSEC_SEND_COMPLETE_CONTEXT pContext,
|
|
IN IP_STATUS Status,
|
|
OUT PVOID *ppNewData
|
|
);
|
|
|
|
VOID
|
|
IPSecProtocolSendComplete (
|
|
IN PVOID pContext,
|
|
IN PNDIS_BUFFER pMdl,
|
|
IN IP_STATUS Status
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecChkReplayWindow(
|
|
IN ULONG Seq,
|
|
IN PSA_TABLE_ENTRY pSA,
|
|
IN ULONG Index
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
IPSecPrepareReinjectPacket(
|
|
IN PVOID pData,
|
|
IN PNDIS_PACKET_EXTENSION pPktExt,
|
|
OUT PNDIS_BUFFER * ppHdrMdl,
|
|
OUT PUCHAR * ppIPH,
|
|
OUT PNDIS_BUFFER * ppOptMdl,
|
|
OUT PNDIS_BUFFER * ppDataMdl,
|
|
OUT PIPSEC_SEND_COMPLETE_CONTEXT * ppContext,
|
|
OUT PULONG pLen
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecReinjectPreparedPacket(
|
|
IN PNDIS_BUFFER pHdrMdl,
|
|
IN PIPSEC_SEND_COMPLETE_CONTEXT pContext,
|
|
IN ULONG len,
|
|
IN PUCHAR pIPHeader
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecReinjectPacket(
|
|
IN PVOID pData,
|
|
IN PNDIS_PACKET_EXTENSION pPktExt
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecQueuePacket(
|
|
IN PSA_TABLE_ENTRY pSA,
|
|
IN PVOID pDataBuf
|
|
);
|
|
|
|
VOID
|
|
IPSecIPAddrToUnicodeString(
|
|
IN IPAddr Addr,
|
|
OUT PWCHAR UCIPAddrBuffer
|
|
);
|
|
|
|
VOID
|
|
IPSecCountToUnicodeString(
|
|
IN ULONG Count,
|
|
OUT PWCHAR UCCountBuffer
|
|
);
|
|
|
|
VOID
|
|
IPSecESPStatus(
|
|
IN UCHAR StatusType,
|
|
IN IP_STATUS StatusCode,
|
|
IN IPAddr OrigDest,
|
|
IN IPAddr OrigSrc,
|
|
IN IPAddr Src,
|
|
IN ULONG Param,
|
|
IN PVOID Data
|
|
);
|
|
|
|
VOID
|
|
IPSecAHStatus(
|
|
IN UCHAR StatusType,
|
|
IN IP_STATUS StatusCode,
|
|
IN IPAddr OrigDest,
|
|
IN IPAddr OrigSrc,
|
|
IN IPAddr Src,
|
|
IN ULONG Param,
|
|
IN PVOID Data
|
|
);
|
|
|
|
VOID
|
|
IPSecProcessPMTU(
|
|
IN IPAddr OrigDest,
|
|
IN IPAddr OrigSrc,
|
|
IN tSPI SPI,
|
|
IN OPERATION_E Operation,
|
|
IN ULONG NewMTU
|
|
);
|
|
|
|
IPSEC_ACTION
|
|
IPSecRcvFWPacket(
|
|
IN PCHAR pIPHeader,
|
|
IN PVOID pData,
|
|
IN UINT DataLength,
|
|
IN UCHAR DestType
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
IPSecRekeyInboundSA(
|
|
IN PSA_TABLE_ENTRY pSA
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecRekeyOutboundSA(
|
|
IN PSA_TABLE_ENTRY pSA
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecPuntInboundSA(
|
|
IN PSA_TABLE_ENTRY pSA
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecPuntOutboundSA(
|
|
IN PSA_TABLE_ENTRY pSA
|
|
);
|
|
|
|
BOOLEAN
|
|
IPSecQueryStatus(
|
|
IN CLASSIFICATION_HANDLE GpcHandle
|
|
);
|
|
|
|
NTSTATUS IPSecDisableUdpXsum(
|
|
IN IPRcvBuf *pData
|
|
);
|
|
|
|
|
|
NTSTATUS AddShimContext(IN PUCHAR *pIpHeader,
|
|
IN PVOID pData,
|
|
IPSEC_UDP_ENCAP_CONTEXT *pNatContext);
|
|
|
|
NTSTATUS
|
|
GetIpBufferForICMP(
|
|
PUCHAR pucIPHeader,
|
|
PVOID pvData,
|
|
PUCHAR * ppucIpBuffer,
|
|
PUCHAR * ppucStorage
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecGetSendBuffer(
|
|
PMDL * ppMdlChain,
|
|
ULONG uOffset,
|
|
ULONG uBytesNeeded,
|
|
PVOID pvStorage,
|
|
PULONG puLastWalkedMdlOffset,
|
|
PUCHAR * ppucReturnBuf
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecCopyMdlToBuffer(
|
|
PMDL * ppMdlChain,
|
|
ULONG uOffset,
|
|
PVOID pvBuffer,
|
|
ULONG uBytesToCopy,
|
|
PULONG puLastWalkedMdlOffset,
|
|
PULONG puBytesCopied
|
|
);
|
|
|
|
IPSEC_ACTION IPSecProcessBoottime(IN PUCHAR pIPHeader,
|
|
IN PVOID pData,
|
|
IN PNDIS_PACKET Packet,
|
|
IN ULONG IpsecFlags,
|
|
IN UCHAR DestType);
|
|
|
|
|
|
BOOLEAN
|
|
IPSecIsGenericPortsProtocolOf(
|
|
ULARGE_INTEGER uliGenericPortProtocol,
|
|
ULARGE_INTEGER uliSpecificPortProtocol
|
|
);
|
|
|
|
|