mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-06-28 20:05:08 +03:00
spelling: fragment
This commit is contained in:
parent
8b8934a3cc
commit
a452469738
@ -206,7 +206,7 @@ void IPsecSendPacketByIPsecSa(IKE_SERVER *ike, IPSECSA *sa, UCHAR *data, UINT da
|
|||||||
IPV4_SET_HEADER_LEN(&h, sizeof(IPV4_HEADER) / 4);
|
IPV4_SET_HEADER_LEN(&h, sizeof(IPV4_HEADER) / 4);
|
||||||
h.TotalLength = Endian16((USHORT)(data_size + sizeof(IPV4_HEADER)));
|
h.TotalLength = Endian16((USHORT)(data_size + sizeof(IPV4_HEADER)));
|
||||||
h.Identification = Endian16(c->TunnelSendIpId++);
|
h.Identification = Endian16(c->TunnelSendIpId++);
|
||||||
h.FlagsAndFlagmentOffset[0] = h.FlagsAndFlagmentOffset[1] = 0;
|
h.FlagsAndFragmentOffset[0] = h.FlagsAndFragmentOffset[1] = 0;
|
||||||
h.TimeToLive = DEFAULT_IP_TTL;
|
h.TimeToLive = DEFAULT_IP_TTL;
|
||||||
h.Protocol = protocol_id;
|
h.Protocol = protocol_id;
|
||||||
h.SrcIP = IPToUINT(&c->TunnelModeServerIP);
|
h.SrcIP = IPToUINT(&c->TunnelModeServerIP);
|
||||||
|
@ -302,7 +302,7 @@ void L3RecvIp(L3IF *f, PKT *p, bool self)
|
|||||||
ip->TimeToLive = 0xff;
|
ip->TimeToLive = 0xff;
|
||||||
|
|
||||||
// Recalculates the checksum
|
// Recalculates the checksum
|
||||||
ip->FlagsAndFlagmentOffset[0] = ip->FlagsAndFlagmentOffset[1] = 0;
|
ip->FlagsAndFragmentOffset[0] = ip->FlagsAndFragmentOffset[1] = 0;
|
||||||
icmp->Checksum = 0;
|
icmp->Checksum = 0;
|
||||||
icmp->Type = ICMP_TYPE_ECHO_RESPONSE;
|
icmp->Type = ICMP_TYPE_ECHO_RESPONSE;
|
||||||
icmp->Checksum = IpChecksum(icmp, p->PacketSize - sizeof(MAC_HEADER) - header_size);
|
icmp->Checksum = IpChecksum(icmp, p->PacketSize - sizeof(MAC_HEADER) - header_size);
|
||||||
|
@ -436,7 +436,7 @@ void NnCombineIp(NATIVE_NAT *t, IP_COMBINE *c, UINT offset, void *data, UINT siz
|
|||||||
|
|
||||||
if (last_packet)
|
if (last_packet)
|
||||||
{
|
{
|
||||||
// If No More Flagment packet arrives, the size of this datagram is finalized
|
// If No More Fragment packet arrives, the size of this datagram is finalized
|
||||||
c->Size = offset + size;
|
c->Size = offset + size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1178,7 +1178,7 @@ void NnIpSendFragmentedForInternet(NATIVE_NAT *t, UCHAR ip_protocol, UINT src_ip
|
|||||||
ip->TypeOfService = DEFAULT_IP_TOS;
|
ip->TypeOfService = DEFAULT_IP_TOS;
|
||||||
ip->TotalLength = Endian16((USHORT)(size + IP_HEADER_SIZE));
|
ip->TotalLength = Endian16((USHORT)(size + IP_HEADER_SIZE));
|
||||||
ip->Identification = Endian16(id);
|
ip->Identification = Endian16(id);
|
||||||
ip->FlagsAndFlagmentOffset[0] = ip->FlagsAndFlagmentOffset[1] = 0;
|
ip->FlagsAndFragmentOffset[0] = ip->FlagsAndFragmentOffset[1] = 0;
|
||||||
IPV4_SET_OFFSET(ip, (offset / 8));
|
IPV4_SET_OFFSET(ip, (offset / 8));
|
||||||
if ((offset + size) >= total_size)
|
if ((offset + size) >= total_size)
|
||||||
{
|
{
|
||||||
@ -7637,7 +7637,7 @@ void CombineIp(VH *v, IP_COMBINE *c, UINT offset, void *data, UINT size, bool la
|
|||||||
|
|
||||||
if (last_packet)
|
if (last_packet)
|
||||||
{
|
{
|
||||||
// If No More Flagment packet arrives, the size of this datagram is finalized
|
// If No More Fragment packet arrives, the size of this datagram is finalized
|
||||||
c->Size = offset + size;
|
c->Size = offset + size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8847,7 +8847,7 @@ void SendFragmentedIp(VH *v, UINT dest_ip, UINT src_ip, USHORT id, USHORT total_
|
|||||||
ip->TypeOfService = DEFAULT_IP_TOS;
|
ip->TypeOfService = DEFAULT_IP_TOS;
|
||||||
ip->TotalLength = Endian16((USHORT)(size + IP_HEADER_SIZE));
|
ip->TotalLength = Endian16((USHORT)(size + IP_HEADER_SIZE));
|
||||||
ip->Identification = Endian16(id);
|
ip->Identification = Endian16(id);
|
||||||
ip->FlagsAndFlagmentOffset[0] = ip->FlagsAndFlagmentOffset[1] = 0;
|
ip->FlagsAndFragmentOffset[0] = ip->FlagsAndFragmentOffset[1] = 0;
|
||||||
IPV4_SET_OFFSET(ip, (offset / 8));
|
IPV4_SET_OFFSET(ip, (offset / 8));
|
||||||
if ((offset + size) >= total_size)
|
if ((offset + size) >= total_size)
|
||||||
{
|
{
|
||||||
|
@ -200,7 +200,7 @@ struct IPV4_HEADER
|
|||||||
UCHAR TypeOfService; // Service Type
|
UCHAR TypeOfService; // Service Type
|
||||||
USHORT TotalLength; // Total size
|
USHORT TotalLength; // Total size
|
||||||
USHORT Identification; // Identifier
|
USHORT Identification; // Identifier
|
||||||
UCHAR FlagsAndFlagmentOffset[2]; // Flag and Fragment offset
|
UCHAR FlagsAndFragmentOffset[2]; // Flag and Fragment offset
|
||||||
UCHAR TimeToLive; // TTL
|
UCHAR TimeToLive; // TTL
|
||||||
UCHAR Protocol; // Protocol
|
UCHAR Protocol; // Protocol
|
||||||
USHORT Checksum; // Checksum
|
USHORT Checksum; // Checksum
|
||||||
@ -215,10 +215,10 @@ struct IPV4_HEADER
|
|||||||
#define IPV4_SET_HEADER_LEN(h, v) ((h)->VersionAndHeaderLength |= ((v) & 0x0f))
|
#define IPV4_SET_HEADER_LEN(h, v) ((h)->VersionAndHeaderLength |= ((v) & 0x0f))
|
||||||
|
|
||||||
// Macro for IPv4 fragment related operation
|
// Macro for IPv4 fragment related operation
|
||||||
#define IPV4_GET_FLAGS(h) (((h)->FlagsAndFlagmentOffset[0] >> 5) & 0x07)
|
#define IPV4_GET_FLAGS(h) (((h)->FlagsAndFragmentOffset[0] >> 5) & 0x07)
|
||||||
#define IPV4_SET_FLAGS(h, v) ((h)->FlagsAndFlagmentOffset[0] |= (((v) & 0x07) << 5))
|
#define IPV4_SET_FLAGS(h, v) ((h)->FlagsAndFragmentOffset[0] |= (((v) & 0x07) << 5))
|
||||||
#define IPV4_GET_OFFSET(h) (((h)->FlagsAndFlagmentOffset[0] & 0x1f) * 256 + ((h)->FlagsAndFlagmentOffset[1]))
|
#define IPV4_GET_OFFSET(h) (((h)->FlagsAndFragmentOffset[0] & 0x1f) * 256 + ((h)->FlagsAndFragmentOffset[1]))
|
||||||
#define IPV4_SET_OFFSET(h, v) {(h)->FlagsAndFlagmentOffset[0] |= (UCHAR)((v) / 256); (h)->FlagsAndFlagmentOffset[1] = (UCHAR)((v) % 256);}
|
#define IPV4_SET_OFFSET(h, v) {(h)->FlagsAndFragmentOffset[0] |= (UCHAR)((v) / 256); (h)->FlagsAndFragmentOffset[1] = (UCHAR)((v) % 256);}
|
||||||
|
|
||||||
// IPv4 / IPv6 common protocol
|
// IPv4 / IPv6 common protocol
|
||||||
#define IP_PROTO_TCP 0x06 // TCP protocol
|
#define IP_PROTO_TCP 0x06 // TCP protocol
|
||||||
@ -359,7 +359,7 @@ struct DNSV4_HEADER
|
|||||||
struct NBTDG_HEADER
|
struct NBTDG_HEADER
|
||||||
{
|
{
|
||||||
UCHAR MessageType;
|
UCHAR MessageType;
|
||||||
UCHAR MoreFlagments;
|
UCHAR MoreFragments;
|
||||||
USHORT DatagramId;
|
USHORT DatagramId;
|
||||||
UINT SrcIP;
|
UINT SrcIP;
|
||||||
USHORT SrcPort;
|
USHORT SrcPort;
|
||||||
@ -441,17 +441,17 @@ struct IPV6_FRAGMENT_HEADER
|
|||||||
{
|
{
|
||||||
UCHAR NextHeader; // Next header
|
UCHAR NextHeader; // Next header
|
||||||
UCHAR Reserved; // Reserved
|
UCHAR Reserved; // Reserved
|
||||||
UCHAR FlagmentOffset1; // Fragment offset 1 (/8, 8 bit)
|
UCHAR FragmentOffset1; // Fragment offset 1 (/8, 8 bit)
|
||||||
UCHAR FlagmentOffset2AndFlags; // Fragment offset 2 (/8, 5 bit) + Reserved (2 bit) + More flag (1 bit)
|
UCHAR FragmentOffset2AndFlags; // Fragment offset 2 (/8, 5 bit) + Reserved (2 bit) + More flag (1 bit)
|
||||||
UINT Identification; // ID
|
UINT Identification; // ID
|
||||||
} GCC_PACKED;
|
} GCC_PACKED;
|
||||||
|
|
||||||
// Macro for IPv6 fragment header operation
|
// Macro for IPv6 fragment header operation
|
||||||
#define IPV6_GET_FRAGMENT_OFFSET(h) (((((h)->FlagmentOffset1) << 5) & 0x1fe0) | (((h)->FlagmentOffset2AndFlags >> 3) & 0x1f))
|
#define IPV6_GET_FRAGMENT_OFFSET(h) (((((h)->FragmentOffset1) << 5) & 0x1fe0) | (((h)->FragmentOffset2AndFlags >> 3) & 0x1f))
|
||||||
#define IPV6_SET_FRAGMENT_OFFSET(h, v) ((h)->FlagmentOffset1 = (v / 32) & 0xff, \
|
#define IPV6_SET_FRAGMENT_OFFSET(h, v) ((h)->FragmentOffset1 = (v / 32) & 0xff, \
|
||||||
((h)->FlagmentOffset2AndFlags = ((v % 256) << 3) & 0xf8) | ((h)->FlagmentOffset2AndFlags & 0x07))
|
((h)->FragmentOffset2AndFlags = ((v % 256) << 3) & 0xf8) | ((h)->FragmentOffset2AndFlags & 0x07))
|
||||||
#define IPV6_GET_FLAGS(h) ((h)->FlagmentOffset2AndFlags & 0x0f)
|
#define IPV6_GET_FLAGS(h) ((h)->FragmentOffset2AndFlags & 0x0f)
|
||||||
#define IPV6_SET_FLAGS(h, v) ((h)->FlagmentOffset2AndFlags = (((h)->FlagmentOffset2AndFlags & 0xf8) | (v & 0x07)))
|
#define IPV6_SET_FLAGS(h, v) ((h)->FragmentOffset2AndFlags = (((h)->FragmentOffset2AndFlags & 0xf8) | (v & 0x07)))
|
||||||
|
|
||||||
// Flag
|
// Flag
|
||||||
#define IPV6_FRAGMENT_HEADER_FLAG_MORE_FRAGMENTS 0x01 // There are more fragments
|
#define IPV6_FRAGMENT_HEADER_FLAG_MORE_FRAGMENTS 0x01 // There are more fragments
|
||||||
|
@ -244,7 +244,7 @@ typedef struct WFP_IPV4_HEADER
|
|||||||
UCHAR TypeOfService; // Service Type
|
UCHAR TypeOfService; // Service Type
|
||||||
USHORT TotalLength; // Total size
|
USHORT TotalLength; // Total size
|
||||||
USHORT Identification; // Identifier
|
USHORT Identification; // Identifier
|
||||||
UCHAR FlagsAndFlagmentOffset[2]; // The flag and fragment offset
|
UCHAR FlagsAndFragmentOffset[2]; // The flag and fragment offset
|
||||||
UCHAR TimeToLive; // TTL
|
UCHAR TimeToLive; // TTL
|
||||||
UCHAR Protocol; // Protocol
|
UCHAR Protocol; // Protocol
|
||||||
USHORT Checksum; // Checksum
|
USHORT Checksum; // Checksum
|
||||||
|
Loading…
Reference in New Issue
Block a user