Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
Fixes #9
Fixies #7
  • Loading branch information
Jesse Nicholson committed Jun 27, 2016
1 parent 957b3b4 commit 08639c5
Show file tree
Hide file tree
Showing 12 changed files with 187 additions and 81 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -206,3 +206,4 @@ FakesAssemblies/
*.opt
examples/FilteringHttpsCapableProxy/FilteringHttpsCapableProxy/NLog.xsd
ide/Divert.Net/Divert.Net.VC.db
*.opendb
6 changes: 5 additions & 1 deletion examples/NetDump/NetDump/Program.cs
Expand Up @@ -106,6 +106,8 @@ static void Main(string[] args)
ipHeader.SourceAddress.ToString(), tcpHeader.SourcePort.ToString(),
address.Direction == DivertDirection.Inbound ? string.Format("to process {0}", processName) : string.Format("from process {0}", processName)
);

Console.WriteLine(string.Format("ack: {0}, syn: {1}, len: {2}, seq: {3}", tcpHeader.Ack, tcpHeader.Syn, ipHeader.Length, tcpHeader.SequenceNumber));
}
else if(ipHeader.Valid && udpHeader.Valid)
{
Expand Down Expand Up @@ -139,7 +141,9 @@ static void Main(string[] args)
ipHeader.DestinationAddress.ToString(), tcpHeader.DestinationPort.ToString(),
ipHeader.SourceAddress.ToString(), tcpHeader.SourcePort.ToString(),
address.Direction == DivertDirection.Inbound ? string.Format("to process {0}", processName) : string.Format("from process {0}", processName)
);
);

Console.WriteLine(string.Format("ack: {0}, syn: {1}, len: {2}, seq: {3}", tcpHeader.Ack, tcpHeader.Syn, ipv6Header.Length, tcpHeader.SequenceNumber));
}
else if (ipv6Header.Valid && udpHeader.Valid)
{
Expand Down
1 change: 1 addition & 0 deletions ide/Divert.Net/Divert.Net/Divert.Net.vcxproj
Expand Up @@ -382,6 +382,7 @@ xcopy /Y "$(ProjectDir)..\..\..\deps\windivert\$(PlatformTarget)\*.sys" "$(OutDi
<ClInclude Include="..\..\..\src\DivertIpv6Header.hpp" />
<ClInclude Include="..\..\..\src\DivertTCPHeader.hpp" />
<ClInclude Include="..\..\..\src\DivertUDPHeader.hpp" />
<ClInclude Include="..\..\..\src\Util.hpp" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
Expand Down
3 changes: 3 additions & 0 deletions ide/Divert.Net/Divert.Net/Divert.Net.vcxproj.filters
Expand Up @@ -48,6 +48,9 @@
<ClInclude Include="..\..\..\src\DivertAsyncResult.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\Util.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="AssemblyInfo.cpp">
Expand Down
12 changes: 7 additions & 5 deletions src/DivertICMPHeader.cpp
Expand Up @@ -24,6 +24,8 @@

#include "DivertICMPHeader.hpp"

#include "Util.hpp"

namespace Divert
{
namespace Net
Expand Down Expand Up @@ -96,8 +98,8 @@ namespace Divert
uint16_t ICMPHeader::Checksum::get()
{
if (m_icmpHeader != nullptr)
{
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(m_icmpHeader->Checksum));
{
return ByteSwap(m_icmpHeader->Checksum);
}

return 0;
Expand All @@ -107,15 +109,15 @@ namespace Divert
{
if (m_icmpHeader != nullptr)
{
m_icmpHeader->Checksum = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
m_icmpHeader->Checksum = ByteSwap(value);
}
}

uint32_t ICMPHeader::Body::get()
{
if (m_icmpHeader != nullptr)
{
return static_cast<uint32_t>(System::Net::IPAddress::NetworkToHostOrder(static_cast<long long>(m_icmpHeader->Body)));
return ByteSwap(m_icmpHeader->Body);
}

return 0;
Expand All @@ -125,7 +127,7 @@ namespace Divert
{
if (m_icmpHeader != nullptr)
{
m_icmpHeader->Body = static_cast<uint32_t>(System::Net::IPAddress::HostToNetworkOrder(static_cast<long long>(value)));
m_icmpHeader->Body = ByteSwap(value);
}
}

Expand Down
10 changes: 6 additions & 4 deletions src/DivertICMPv6Header.cpp
Expand Up @@ -24,6 +24,8 @@

#include "DivertICMPv6Header.hpp"

#include "Util.hpp"

namespace Divert
{
namespace Net
Expand Down Expand Up @@ -97,7 +99,7 @@ namespace Divert
{
if (m_icmpv6Header != nullptr)
{
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(m_icmpv6Header->Checksum));
return ByteSwap(m_icmpv6Header->Checksum);
}

return 0;
Expand All @@ -107,15 +109,15 @@ namespace Divert
{
if (m_icmpv6Header != nullptr)
{
m_icmpv6Header->Checksum = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
m_icmpv6Header->Checksum = ByteSwap(value);
}
}

uint32_t ICMPv6Header::Body::get()
{
if (m_icmpv6Header != nullptr)
{
return static_cast<uint32_t>(System::Net::IPAddress::NetworkToHostOrder(static_cast<long long>(m_icmpv6Header->Body)));
return ByteSwap(m_icmpv6Header->Body);
}

return 0;
Expand All @@ -125,7 +127,7 @@ namespace Divert
{
if (m_icmpv6Header != nullptr)
{
m_icmpv6Header->Body = static_cast<uint32_t>(System::Net::IPAddress::HostToNetworkOrder(static_cast<long long>(value)));
m_icmpv6Header->Body = ByteSwap(value);
}
}

Expand Down
38 changes: 20 additions & 18 deletions src/DivertIpHeader.cpp
Expand Up @@ -24,6 +24,8 @@

#include "DivertIPHeader.hpp"

#include "Util.hpp"

namespace Divert
{
namespace Net
Expand Down Expand Up @@ -117,7 +119,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(m_ipHeader->Length));
return ByteSwap(m_ipHeader->Length);
}

return 0;
Expand All @@ -127,15 +129,15 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
m_ipHeader->Length = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
m_ipHeader->Length = ByteSwap(value);
}
}

uint16_t IPHeader::Id::get()
{
if (m_ipHeader != nullptr)
{
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(m_ipHeader->Id));
return ByteSwap(m_ipHeader->Id);
}

return 0;
Expand All @@ -145,16 +147,16 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
m_ipHeader->Id = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
m_ipHeader->Id = ByteSwap(value);
}
}

uint16_t IPHeader::FragOff::get()
{
if (m_ipHeader != nullptr)
{
auto value = WINDIVERT_IPHDR_GET_FRAGOFF(m_ipHeader);
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(value));
uint16_t value = WINDIVERT_IPHDR_GET_FRAGOFF(m_ipHeader);
return ByteSwap(value);
}

return 0;
Expand All @@ -164,7 +166,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto modifiedValue = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
uint16_t modifiedValue = ByteSwap(value);
WINDIVERT_IPHDR_SET_FRAGOFF(m_ipHeader, modifiedValue);
}
}
Expand All @@ -173,8 +175,8 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto value = WINDIVERT_IPHDR_GET_MF(m_ipHeader);
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(value));
uint16_t value = WINDIVERT_IPHDR_GET_MF(m_ipHeader);
return ByteSwap(value);
}

return 0;
Expand All @@ -184,7 +186,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto modifiedValue = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
auto modifiedValue = ByteSwap(value);
WINDIVERT_IPHDR_SET_MF(m_ipHeader, modifiedValue);
}
}
Expand All @@ -193,8 +195,8 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto value = WINDIVERT_IPHDR_GET_DF(m_ipHeader);
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(value));
uint16_t value = WINDIVERT_IPHDR_GET_DF(m_ipHeader);
return ByteSwap(value);
}

return 0;
Expand All @@ -204,7 +206,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto modifiedValue = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
uint16_t modifiedValue = ByteSwap(value);
WINDIVERT_IPHDR_SET_DF(m_ipHeader, modifiedValue);
}
}
Expand All @@ -213,8 +215,8 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto value = WINDIVERT_IPHDR_GET_RESERVED(m_ipHeader);
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(value));
uint16_t value = WINDIVERT_IPHDR_GET_RESERVED(m_ipHeader);
return ByteSwap(value);
}

return 0;
Expand All @@ -224,7 +226,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
auto modifiedValue = static_cast<uint16_t>(System::Net::IPAddress::HostToNetworkOrder(value));
uint16_t modifiedValue = ByteSwap(value);
WINDIVERT_IPHDR_SET_RESERVED(m_ipHeader, modifiedValue);
}
}
Expand Down Expand Up @@ -269,7 +271,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
return static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(m_ipHeader->Checksum));
return ByteSwap(m_ipHeader->Checksum);
}

return 0;
Expand All @@ -279,7 +281,7 @@ namespace Divert
{
if (m_ipHeader != nullptr)
{
m_ipHeader->Checksum = static_cast<uint16_t>(System::Net::IPAddress::NetworkToHostOrder(value));
m_ipHeader->Checksum = ByteSwap(value);
}
}

Expand Down
41 changes: 31 additions & 10 deletions src/DivertIpv6Header.cpp
Expand Up @@ -24,6 +24,8 @@

#include "DivertIPv6Header.hpp"

#include "Util.hpp"

namespace Divert
{
namespace Net
Expand Down Expand Up @@ -68,30 +70,49 @@ namespace Divert
m_ipv6Header = ipv6Header;
}

uint32_t IPv6Header::Version::get()
uint16_t IPv6Header::Length::get()
{
if (m_ipv6Header != nullptr)
{
return ByteSwap(m_ipv6Header->Length);
}

return 0;
}

void IPv6Header::Length::set(uint16_t value)
{
if (m_ipv6Header != nullptr)
{
return static_cast<uint32_t>(System::Net::IPAddress::NetworkToHostOrder(static_cast<long long>(m_ipv6Header->Version)));
m_ipv6Header->Length = ByteSwap(value);
}
}

System::Byte IPv6Header::Version::get()
{
if (m_ipv6Header != nullptr)
{

return m_ipv6Header->Version;
}

return 0;
}

void IPv6Header::Version::set(uint32_t value)
void IPv6Header::Version::set(System::Byte value)
{
if (m_ipv6Header != nullptr)
{
m_ipv6Header->Version = static_cast<uint32_t>(System::Net::IPAddress::HostToNetworkOrder(static_cast<long long>(value)));
m_ipv6Header->Version = value;
}
}

uint32_t IPv6Header::TrafficClass::get()
{
if (m_ipv6Header != nullptr)
{
auto value = WINDIVERT_IPV6HDR_GET_TRAFFICCLASS(m_ipv6Header);
return static_cast<uint32_t>(System::Net::IPAddress::NetworkToHostOrder(static_cast<long long>(value)));
uint32_t value = WINDIVERT_IPV6HDR_GET_TRAFFICCLASS(m_ipv6Header);
return ByteSwap(value);
}

return 0;
Expand All @@ -101,7 +122,7 @@ namespace Divert
{
if (m_ipv6Header != nullptr)
{
auto modifiedValue = static_cast<uint32_t>(System::Net::IPAddress::HostToNetworkOrder(static_cast<long long>(value)));
uint32_t modifiedValue = ByteSwap(value);
WINDIVERT_IPV6HDR_SET_TRAFFICCLASS(m_ipv6Header, modifiedValue);
}
}
Expand All @@ -110,8 +131,8 @@ namespace Divert
{
if (m_ipv6Header != nullptr)
{
auto value = WINDIVERT_IPV6HDR_GET_FLOWLABEL(m_ipv6Header);
return static_cast<uint32_t>(System::Net::IPAddress::NetworkToHostOrder(static_cast<long long>(value)));
uint32_t value = WINDIVERT_IPV6HDR_GET_FLOWLABEL(m_ipv6Header);
return ByteSwap(value);
}

return 0;
Expand All @@ -121,7 +142,7 @@ namespace Divert
{
if (m_ipv6Header != nullptr)
{
auto modifiedValue = static_cast<uint32_t>(System::Net::IPAddress::HostToNetworkOrder(static_cast<long long>(value)));
uint32_t modifiedValue = ByteSwap(value);
WINDIVERT_IPV6HDR_SET_FLOWLABEL(m_ipv6Header, modifiedValue);
}
}
Expand Down
12 changes: 9 additions & 3 deletions src/DivertIpv6Header.hpp
Expand Up @@ -64,10 +64,16 @@ namespace Divert
/// </summary>
!IPv6Header();

property uint32_t Version
property uint16_t Length
{
uint32_t get();
void set(uint32_t value);
uint16_t get();
void set(uint16_t value);
}

property System::Byte Version
{
System::Byte get();
void set(System::Byte value);
}

property uint32_t TrafficClass
Expand Down

0 comments on commit 08639c5

Please sign in to comment.