Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pcap-Net
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Pcap-Net
Commits
274e1c7d
Commit
274e1c7d
authored
Oct 04, 2014
by
Brickner_cp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code coverage 96.33%
parent
40982c0c
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
77 additions
and
36 deletions
+77
-36
WiresharkDatagramComparerIgmp.cs
...src/PcapDotNet.Core.Test/WiresharkDatagramComparerIgmp.cs
+10
-1
IpV4Tests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/IpV4Tests.cs
+1
-0
IpV6Tests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/IpV6Tests.cs
+33
-32
TcpTests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/TcpTests.cs
+12
-0
UdpTests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/UdpTests.cs
+19
-1
IpV4Datagram.cs
PcapDotNet/src/PcapDotNet.Packets/IpV4/IpV4Datagram.cs
+2
-2
No files found.
PcapDotNet/src/PcapDotNet.Core.Test/WiresharkDatagramComparerIgmp.cs
View file @
274e1c7d
...
@@ -24,7 +24,16 @@ namespace PcapDotNet.Core.Test
...
@@ -24,7 +24,16 @@ namespace PcapDotNet.Core.Test
if
(
field
.
Show
()
==
"0"
)
if
(
field
.
Show
()
==
"0"
)
return
false
;
// TODO: support IGMP version 0.
return
false
;
// TODO: support IGMP version 0.
field
.
AssertShowDecimal
(
igmpDatagram
.
Version
);
if
(
field
.
Show
()
==
"3"
&&
igmpDatagram
.
Version
==
1
)
{
// TODO: Fix following https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=10526
Assert
.
AreEqual
(
IgmpMessageType
.
MembershipQuery
,
igmpDatagram
.
MessageType
);
Assert
.
AreEqual
(
8
,
igmpDatagram
.
Length
);
}
else
{
field
.
AssertShowDecimal
(
igmpDatagram
.
Version
);
}
break
;
break
;
case
"igmp.type"
:
case
"igmp.type"
:
...
...
PcapDotNet/src/PcapDotNet.Packets.Test/IpV4Tests.cs
View file @
274e1c7d
...
@@ -517,6 +517,7 @@ namespace PcapDotNet.Packets.Test
...
@@ -517,6 +517,7 @@ namespace PcapDotNet.Packets.Test
byte
[]
badPacketBuffer
=
new
byte
[
packet
.
Length
-
5
];
byte
[]
badPacketBuffer
=
new
byte
[
packet
.
Length
-
5
];
packet
.
Buffer
.
BlockCopy
(
0
,
badPacketBuffer
,
0
,
badPacketBuffer
.
Length
);
packet
.
Buffer
.
BlockCopy
(
0
,
badPacketBuffer
,
0
,
badPacketBuffer
.
Length
);
Packet
badPacket
=
new
Packet
(
badPacketBuffer
,
DateTime
.
Now
,
packet
.
DataLink
);
Packet
badPacket
=
new
Packet
(
badPacketBuffer
,
DateTime
.
Now
,
packet
.
DataLink
);
Assert
.
IsNull
(
badPacket
.
Ethernet
.
IpV4
.
Icmp
);
Assert
.
IsFalse
(
badPacket
.
IsValid
,
"badPacket.IsValid"
);
Assert
.
IsFalse
(
badPacket
.
IsValid
,
"badPacket.IsValid"
);
}
}
...
...
PcapDotNet/src/PcapDotNet.Packets.Test/IpV6Tests.cs
View file @
274e1c7d
...
@@ -250,6 +250,7 @@ namespace PcapDotNet.Packets.Test
...
@@ -250,6 +250,7 @@ namespace PcapDotNet.Packets.Test
Packet
invalidPacket
=
new
Packet
(
packet
.
Buffer
.
Take
(
packet
.
Length
-
1
).
ToArray
(),
DateTime
.
Now
,
DataLinkKind
.
Ethernet
);
Packet
invalidPacket
=
new
Packet
(
packet
.
Buffer
.
Take
(
packet
.
Length
-
1
).
ToArray
(),
DateTime
.
Now
,
DataLinkKind
.
Ethernet
);
Assert
.
AreEqual
(
IpV6ExtensionHeaders
.
Empty
,
invalidPacket
.
Ethernet
.
IpV6
.
ExtensionHeaders
);
Assert
.
AreEqual
(
IpV6ExtensionHeaders
.
Empty
,
invalidPacket
.
Ethernet
.
IpV6
.
ExtensionHeaders
);
Assert
.
AreEqual
(
0
,
invalidPacket
.
Ethernet
.
IpV6
.
RealPayloadLength
);
Assert
.
AreEqual
(
0
,
invalidPacket
.
Ethernet
.
IpV6
.
RealPayloadLength
);
Assert
.
IsNull
(
invalidPacket
.
Ethernet
.
IpV6
.
Icmp
);
Assert
.
IsFalse
(
invalidPacket
.
IsValid
);
Assert
.
IsFalse
(
invalidPacket
.
IsValid
);
}
}
...
@@ -296,38 +297,6 @@ namespace PcapDotNet.Packets.Test
...
@@ -296,38 +297,6 @@ namespace PcapDotNet.Packets.Test
// IpV6ExtensionHeader tests.
// IpV6ExtensionHeader tests.
[
TestMethod
]
public
void
IpV6ExtensionHeadersAutomaticNextHeaderByNextExtensionHeader
()
{
Packet
packet
=
PacketBuilder
.
Build
(
DateTime
.
Now
,
new
EthernetLayer
(),
new
IpV6Layer
{
ExtensionHeaders
=
new
IpV6ExtensionHeaders
(
new
IpV6ExtensionHeaderDestinationOptions
(
null
,
IpV6Options
.
Empty
),
new
IpV6ExtensionHeaderDestinationOptions
(
IpV4Protocol
.
Skip
,
IpV6Options
.
Empty
))
});
Assert
.
IsTrue
(
packet
.
IsValid
);
Assert
.
AreEqual
(
IpV4Protocol
.
IpV6Opts
,
packet
.
Ethernet
.
IpV6
.
ExtensionHeaders
[
0
].
NextHeader
);
}
[
TestMethod
]
[
ExpectedException
(
typeof
(
InvalidOperationException
),
AllowDerivedTypes
=
false
)]
public
void
IpV6ExtensionHeadersAutomaticNextHeaderFailure
()
{
Assert
.
IsNull
(
PacketBuilder
.
Build
(
DateTime
.
Now
,
new
EthernetLayer
(),
new
IpV6Layer
{
ExtensionHeaders
=
new
IpV6ExtensionHeaders
(
new
IpV6ExtensionHeaderDestinationOptions
(
null
,
IpV6Options
.
Empty
))
}));
Assert
.
Fail
();
}
[
TestMethod
]
[
TestMethod
]
public
void
IpV6ExtensionHeaderAuthenticationBadPayloadLength
()
public
void
IpV6ExtensionHeaderAuthenticationBadPayloadLength
()
{
{
...
@@ -559,6 +528,38 @@ namespace PcapDotNet.Packets.Test
...
@@ -559,6 +528,38 @@ namespace PcapDotNet.Packets.Test
// IpV6ExtensionHeaders tests.
// IpV6ExtensionHeaders tests.
[
TestMethod
]
public
void
IpV6ExtensionHeadersAutomaticNextHeaderByNextExtensionHeader
()
{
Packet
packet
=
PacketBuilder
.
Build
(
DateTime
.
Now
,
new
EthernetLayer
(),
new
IpV6Layer
{
ExtensionHeaders
=
new
IpV6ExtensionHeaders
(
new
IpV6ExtensionHeaderDestinationOptions
(
null
,
IpV6Options
.
Empty
),
new
IpV6ExtensionHeaderDestinationOptions
(
IpV4Protocol
.
Skip
,
IpV6Options
.
Empty
))
});
Assert
.
IsTrue
(
packet
.
IsValid
);
Assert
.
AreEqual
(
IpV4Protocol
.
IpV6Opts
,
packet
.
Ethernet
.
IpV6
.
ExtensionHeaders
[
0
].
NextHeader
);
}
[
TestMethod
]
[
ExpectedException
(
typeof
(
InvalidOperationException
),
AllowDerivedTypes
=
false
)]
public
void
IpV6ExtensionHeadersAutomaticNextHeaderFailure
()
{
Assert
.
IsNull
(
PacketBuilder
.
Build
(
DateTime
.
Now
,
new
EthernetLayer
(),
new
IpV6Layer
{
ExtensionHeaders
=
new
IpV6ExtensionHeaders
(
new
IpV6ExtensionHeaderDestinationOptions
(
null
,
IpV6Options
.
Empty
))
}));
Assert
.
Fail
();
}
[
TestMethod
]
[
TestMethod
]
public
void
IpV6ExtensionHeadersConstructors
()
public
void
IpV6ExtensionHeadersConstructors
()
{
{
...
...
PcapDotNet/src/PcapDotNet.Packets.Test/TcpTests.cs
View file @
274e1c7d
using
System
;
using
System
;
using
System.Linq
;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
PcapDotNet.Packets.Ethernet
;
using
PcapDotNet.Packets.Ethernet
;
using
PcapDotNet.Packets.IpV4
;
using
PcapDotNet.Packets.IpV4
;
...
@@ -130,6 +131,17 @@ namespace PcapDotNet.Packets.Test
...
@@ -130,6 +131,17 @@ namespace PcapDotNet.Packets.Test
Assert
.
AreEqual
(
payloadLayer
.
Data
,
packet
.
Ethernet
.
Ip
.
Tcp
.
Payload
,
"Payload"
);
Assert
.
AreEqual
(
payloadLayer
.
Data
,
packet
.
Ethernet
.
Ip
.
Tcp
.
Payload
,
"Payload"
);
}
}
}
}
[
TestMethod
]
public
void
TcpTooShort
()
{
Packet
packet
=
PacketBuilder
.
Build
(
DateTime
.
Now
,
new
EthernetLayer
(),
new
IpV4Layer
(),
new
TcpLayer
());
Assert
.
IsTrue
(
packet
.
IsValid
);
Assert
.
IsNotNull
(
packet
.
Ethernet
.
IpV4
.
Tcp
.
Payload
);
packet
=
new
Packet
(
packet
.
Take
(
packet
.
Length
-
1
).
ToArray
(),
DateTime
.
Now
,
DataLinkKind
.
Ethernet
);
Assert
.
IsFalse
(
packet
.
IsValid
);
Assert
.
IsNull
(
packet
.
Ethernet
.
IpV4
.
Tcp
.
Payload
);
}
[
TestMethod
]
[
TestMethod
]
public
void
TcpOptionSelectiveAcknowledgmentBlockTest
()
public
void
TcpOptionSelectiveAcknowledgmentBlockTest
()
...
...
PcapDotNet/src/PcapDotNet.Packets.Test/UdpTests.cs
View file @
274e1c7d
...
@@ -116,7 +116,7 @@ namespace PcapDotNet.Packets.Test
...
@@ -116,7 +116,7 @@ namespace PcapDotNet.Packets.Test
}
}
[
TestMethod
]
[
TestMethod
]
public
void
UdpZeroChecksumTest
()
public
void
Udp
OverIpV4
ZeroChecksumTest
()
{
{
byte
[]
payload
=
new
byte
[
2
];
byte
[]
payload
=
new
byte
[
2
];
payload
.
Write
(
0
,
(
ushort
)
65498
,
Endianity
.
Big
);
payload
.
Write
(
0
,
(
ushort
)
65498
,
Endianity
.
Big
);
...
@@ -132,5 +132,23 @@ namespace PcapDotNet.Packets.Test
...
@@ -132,5 +132,23 @@ namespace PcapDotNet.Packets.Test
Assert
.
IsTrue
(
packet
.
Ethernet
.
IpV4
.
IsTransportChecksumCorrect
);
Assert
.
IsTrue
(
packet
.
Ethernet
.
IpV4
.
IsTransportChecksumCorrect
);
Assert
.
AreEqual
(
0xFFFF
,
packet
.
Ethernet
.
IpV4
.
Udp
.
Checksum
);
Assert
.
AreEqual
(
0xFFFF
,
packet
.
Ethernet
.
IpV4
.
Udp
.
Checksum
);
}
}
[
TestMethod
]
public
void
UdpOverIpV6ZeroChecksumTest
()
{
byte
[]
payload
=
new
byte
[
2
];
payload
.
Write
(
0
,
(
ushort
)
65498
,
Endianity
.
Big
);
Packet
packet
=
PacketBuilder
.
Build
(
DateTime
.
Now
,
new
EthernetLayer
(),
new
IpV6Layer
(),
new
UdpLayer
{
CalculateChecksumValue
=
true
},
new
PayloadLayer
{
Data
=
new
Datagram
(
payload
)
});
Assert
.
IsTrue
(
packet
.
Ethernet
.
IpV6
.
IsTransportChecksumCorrect
);
Assert
.
AreEqual
(
0xFFFF
,
packet
.
Ethernet
.
IpV6
.
Udp
.
Checksum
);
}
}
}
}
}
\ No newline at end of file
PcapDotNet/src/PcapDotNet.Packets/IpV4/IpV4Datagram.cs
View file @
274e1c7d
...
@@ -329,12 +329,12 @@ namespace PcapDotNet.Packets.IpV4
...
@@ -329,12 +329,12 @@ namespace PcapDotNet.Packets.IpV4
private
static
ushort
CalculateTransportChecksum
(
byte
[]
buffer
,
int
offset
,
int
headerLength
,
ushort
transportLength
,
int
transportChecksumOffset
,
bool
isChecksumOptional
,
IpV4Address
destination
)
private
static
ushort
CalculateTransportChecksum
(
byte
[]
buffer
,
int
offset
,
int
headerLength
,
ushort
transportLength
,
int
transportChecksumOffset
,
bool
isChecksumOptional
,
IpV4Address
destination
)
{
{
int
offsetAfterChecksum
=
offset
+
headerLength
+
transportChecksumOffset
+
2
;
int
offsetAfterChecksum
=
offset
+
headerLength
+
transportChecksumOffset
+
sizeof
(
ushort
)
;
uint
sum
=
Sum16Bits
(
buffer
,
offset
+
Offset
.
Source
,
IpV4Address
.
SizeOf
)
+
uint
sum
=
Sum16Bits
(
buffer
,
offset
+
Offset
.
Source
,
IpV4Address
.
SizeOf
)
+
Sum16Bits
(
destination
)
+
Sum16Bits
(
destination
)
+
buffer
[
offset
+
Offset
.
Protocol
]
+
transportLength
+
buffer
[
offset
+
Offset
.
Protocol
]
+
transportLength
+
Sum16Bits
(
buffer
,
offset
+
headerLength
,
transportChecksumOffset
)
+
Sum16Bits
(
buffer
,
offset
+
headerLength
,
transportChecksumOffset
)
+
Sum16Bits
(
buffer
,
offsetAfterChecksum
,
transportLength
-
transportChecksumOffset
-
2
);
Sum16Bits
(
buffer
,
offsetAfterChecksum
,
transportLength
-
transportChecksumOffset
-
sizeof
(
ushort
)
);
ushort
checksumResult
=
Sum16BitsToChecksum
(
sum
);
ushort
checksumResult
=
Sum16BitsToChecksum
(
sum
);
if
(
checksumResult
==
0
&&
isChecksumOptional
)
if
(
checksumResult
==
0
&&
isChecksumOptional
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment