195 lines
3.9 KiB
C
195 lines
3.9 KiB
C
|
|
|
|
#define IPSEC_ISAKMP_PORT 0xf401 // 500 in NBO
|
|
#define IPSEC_KERBEROS_PORT 0x5800 // 88 in NBO
|
|
#define IPSEC_LDAP_PORT 0x8501 // 389 in NBO
|
|
|
|
|
|
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
|
|
);
|
|
|
|
VOID
|
|
IPSecCalcHeaderOverheadFromSA(
|
|
IN PSA_TABLE_ENTRY pSA,
|
|
OUT PULONG pOverhead
|
|
);
|
|
|
|
NTSTATUS
|
|
IPSecParsePacket(
|
|
IN PUCHAR pIPHeader,
|
|
IN PVOID *pData,
|
|
OUT tSPI *pSPI
|
|
);
|
|
|
|
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 UCHAR DestType
|
|
);
|
|
|
|
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
|
|
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
|
|
);
|
|
|
|
|