Leaked source code of windows server 2003
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

#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
);