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
e3457d59
Commit
e3457d59
authored
Apr 24, 2010
by
Brickner_cp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GRE
Improved resharper configuration
parent
2824a1b4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
139 additions
and
17 deletions
+139
-17
PcapDotNet.4.5.resharper
PcapDotNet/src/PcapDotNet.4.5.resharper
+1
-0
GreTests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/GreTests.cs
+101
-0
RandomPacketsExtensions.cs
...c/PcapDotNet.Packets.TestUtils/RandomPacketsExtensions.cs
+11
-2
GreDatagram.cs
PcapDotNet/src/PcapDotNet.Packets/Gre/GreDatagram.cs
+26
-15
No files found.
PcapDotNet/src/PcapDotNet.4.5.resharper
View file @
e3457d59
...
...
@@ -8,6 +8,7 @@
<ANONYMOUS_METHOD_DECLARATION_BRACES>NEXT_LINE</ANONYMOUS_METHOD_DECLARATION_BRACES>
<CASE_BLOCK_BRACES>NEXT_LINE</CASE_BLOCK_BRACES>
<INDENT_SIZE>4</INDENT_SIZE>
<INITIALIZER_BRACES>NEXT_LINE</INITIALIZER_BRACES>
<MODIFIERS_ORDER IsNull="False">
<Item>public</Item>
<Item>protected</Item>
...
...
PcapDotNet/src/PcapDotNet.Packets.Test/GreTests.cs
View file @
e3457d59
using
System
;
using
System.Collections.Generic
;
using
System.Collections.ObjectModel
;
using
System.Linq
;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
PcapDotNet.Base
;
using
PcapDotNet.Packets.Ethernet
;
using
PcapDotNet.Packets.Gre
;
using
PcapDotNet.Packets.Icmp
;
...
...
@@ -111,8 +113,107 @@ namespace PcapDotNet.Packets.Test
Assert
.
IsNotNull
(
actualGre
.
ActiveSourceRouteEntryIndex
);
if
(
actualGre
.
ActiveSourceRouteEntryIndex
<
actualGre
.
Routing
.
Count
)
Assert
.
IsNotNull
(
actualGre
.
ActiveSourceRouteEntry
);
foreach
(
GreSourceRouteEntry
entry
in
actualGre
.
Routing
)
{
Assert
.
AreNotEqual
(
entry
,
2
);
switch
(
entry
.
AddressFamily
)
{
case
GreSourceRouteEntryAddressFamily
.
AsSourceRoute
:
GreSourceRouteEntryAs
asEntry
=
(
GreSourceRouteEntryAs
)
entry
;
MoreAssert
.
IsInRange
(
0
,
asEntry
.
AsNumbers
.
Count
,
asEntry
.
NextAsNumberIndex
);
if
(
asEntry
.
NextAsNumberIndex
!=
asEntry
.
AsNumbers
.
Count
)
Assert
.
AreEqual
(
asEntry
.
AsNumbers
[
asEntry
.
NextAsNumberIndex
],
asEntry
.
NextAsNumber
);
break
;
case
GreSourceRouteEntryAddressFamily
.
IpSourceRoute
:
GreSourceRouteEntryIp
ipEntry
=
(
GreSourceRouteEntryIp
)
entry
;
MoreAssert
.
IsInRange
(
0
,
ipEntry
.
Addresses
.
Count
,
ipEntry
.
NextAddressIndex
);
if
(
ipEntry
.
NextAddressIndex
!=
ipEntry
.
Addresses
.
Count
)
Assert
.
AreEqual
(
ipEntry
.
Addresses
[
ipEntry
.
NextAddressIndex
],
ipEntry
.
NextAddress
);
break
;
default
:
GreSourceRouteEntryUnknown
unknownEntry
=
(
GreSourceRouteEntryUnknown
)
entry
;
MoreAssert
.
IsInRange
(
0
,
unknownEntry
.
Data
.
Length
,
unknownEntry
.
Offset
);
break
;
}
}
}
else
{
Assert
.
IsNull
(
actualGre
.
ActiveSourceRouteEntry
);
}
}
}
[
TestMethod
]
public
void
InvalidGreTest
()
{
EthernetLayer
ethernetLayer
=
new
EthernetLayer
{
Source
=
new
MacAddress
(
"00:01:02:03:04:05"
),
Destination
=
new
MacAddress
(
"A0:A1:A2:A3:A4:A5"
)
};
Random
random
=
new
Random
();
IpV4Layer
ipV4Layer
=
random
.
NextIpV4Layer
(
IpV4Protocol
.
Gre
);
ipV4Layer
.
HeaderChecksum
=
null
;
GreLayer
greLayer
=
random
.
NextGreLayer
();
greLayer
.
Checksum
=
null
;
greLayer
.
Routing
=
new
List
<
GreSourceRouteEntry
>
{
new
GreSourceRouteEntryAs
(
new
List
<
ushort
>
{
123
}.
AsReadOnly
(),
0
),
new
GreSourceRouteEntryIp
(
new
List
<
IpV4Address
>
{
random
.
NextIpV4Address
()}.
AsReadOnly
(),
0
)
}.
AsReadOnly
();
PacketBuilder
packetBuilder
=
new
PacketBuilder
(
ethernetLayer
,
ipV4Layer
,
greLayer
);
Packet
packet
=
packetBuilder
.
Build
(
DateTime
.
Now
);
Assert
.
IsTrue
(
packet
.
IsValid
);
GreDatagram
gre
=
packet
.
Ethernet
.
IpV4
.
Gre
;
// Remove a byte from routing
Datagram
newIpPayload
=
new
Datagram
(
gre
.
Take
(
gre
.
Length
-
1
).
ToArray
());
packetBuilder
=
new
PacketBuilder
(
ethernetLayer
,
ipV4Layer
,
new
PayloadLayer
{
Data
=
newIpPayload
});
packet
=
packetBuilder
.
Build
(
DateTime
.
Now
);
Assert
.
IsFalse
(
packet
.
IsValid
);
// SreLength is too big
byte
[]
buffer
=
gre
.
ToArray
();
buffer
[
buffer
.
Length
-
1
]
=
200
;
newIpPayload
=
new
Datagram
(
buffer
);
packetBuilder
=
new
PacketBuilder
(
ethernetLayer
,
ipV4Layer
,
new
PayloadLayer
{
Data
=
newIpPayload
});
packet
=
packetBuilder
.
Build
(
DateTime
.
Now
);
Assert
.
IsFalse
(
packet
.
IsValid
);
// SreOffset is too big
buffer
=
gre
.
ToArray
();
buffer
[
gre
.
Length
-
10
]
=
100
;
newIpPayload
=
new
Datagram
(
buffer
);
packetBuilder
=
new
PacketBuilder
(
ethernetLayer
,
ipV4Layer
,
new
PayloadLayer
{
Data
=
newIpPayload
});
packet
=
packetBuilder
.
Build
(
DateTime
.
Now
);
Assert
.
IsFalse
(
packet
.
IsValid
);
// SreOffset isn't aligned to ip
buffer
=
gre
.
ToArray
();
buffer
[
gre
.
Length
-
10
]
=
3
;
newIpPayload
=
new
Datagram
(
buffer
);
packetBuilder
=
new
PacketBuilder
(
ethernetLayer
,
ipV4Layer
,
new
PayloadLayer
{
Data
=
newIpPayload
});
packet
=
packetBuilder
.
Build
(
DateTime
.
Now
);
Assert
.
IsFalse
(
packet
.
IsValid
);
// SreOffset isn't aligned to as
buffer
=
gre
.
ToArray
();
buffer
[
gre
.
Length
-
16
]
=
1
;
newIpPayload
=
new
Datagram
(
buffer
);
packetBuilder
=
new
PacketBuilder
(
ethernetLayer
,
ipV4Layer
,
new
PayloadLayer
{
Data
=
newIpPayload
});
packet
=
packetBuilder
.
Build
(
DateTime
.
Now
);
Assert
.
IsFalse
(
packet
.
IsValid
);
}
}
}
\ No newline at end of file
PcapDotNet/src/PcapDotNet.Packets.TestUtils/RandomPacketsExtensions.cs
View file @
e3457d59
...
...
@@ -593,7 +593,12 @@ namespace PcapDotNet.Packets.TestUtils
strictSourceRoute
=
random
.
NextBool
();
routing
=
new
GreSourceRouteEntry
[
random
.
Next
(
5
)];
GreSourceRouteEntryAddressFamily
family
=
random
.
NextEnum
(
GreSourceRouteEntryAddressFamily
.
None
);
GreSourceRouteEntryAddressFamily
family
;
if
(
random
.
NextBool
())
family
=
random
.
NextEnum
(
GreSourceRouteEntryAddressFamily
.
None
);
else
family
=
(
GreSourceRouteEntryAddressFamily
)
random
.
NextUShort
();
for
(
int
i
=
0
;
i
!=
routing
.
Length
;
++
i
)
{
switch
(
family
)
...
...
@@ -617,7 +622,11 @@ namespace PcapDotNet.Packets.TestUtils
}
default
:
throw
new
InvalidOperationException
(
"Unknown family "
+
family
);
{
int
dataLength
=
random
.
Next
(
1
,
100
);
routing
[
i
]
=
new
GreSourceRouteEntryUnknown
(
family
,
random
.
NextDatagram
(
dataLength
),
random
.
Next
(
dataLength
+
1
));
break
;
}
}
}
...
...
PcapDotNet/src/PcapDotNet.Packets/Gre/GreDatagram.cs
View file @
e3457d59
...
...
@@ -169,8 +169,7 @@ namespace PcapDotNet.Packets.Gre
{
get
{
if
(
_activeSourceRouteEntryIndex
==
null
&&
RoutingPresent
)
ParseRouting
();
TryParseRouting
();
return
_activeSourceRouteEntryIndex
;
}
}
...
...
@@ -225,9 +224,7 @@ namespace PcapDotNet.Packets.Gre
{
get
{
if
(
_routing
==
null
&&
RoutingPresent
)
ParseRouting
();
TryParseRouting
();
return
_routing
;
}
}
...
...
@@ -261,7 +258,7 @@ namespace PcapDotNet.Packets.Gre
protected
override
bool
CalculateIsValid
()
{
return
(
Length
>=
HeaderMinimumLength
&&
Length
>=
HeaderLength
&&
(!
ChecksumPresent
||
IsChecksumCorrect
));
return
(
Length
>=
HeaderMinimumLength
&&
Length
>=
HeaderLength
&&
IsValidRouting
&&
(!
ChecksumPresent
||
IsChecksumCorrect
));
}
internal
GreDatagram
(
byte
[]
buffer
,
int
offset
,
int
length
)
...
...
@@ -342,8 +339,11 @@ namespace PcapDotNet.Packets.Gre
get
{
return
OffsetSequenceNumber
+
(
SequenceNumberPresent
?
sizeof
(
uint
)
:
0
);
}
}
private
void
ParseRouting
()
private
void
Try
ParseRouting
()
{
if
(
_routing
!=
null
||
!
RoutingPresent
)
return
;
List
<
GreSourceRouteEntry
>
entries
=
new
List
<
GreSourceRouteEntry
>();
int
routingStartOffset
=
StartOffset
+
OffsetRouting
;
int
entryOffset
=
routingStartOffset
;
...
...
@@ -382,6 +382,16 @@ namespace PcapDotNet.Packets.Gre
return
Sum16BitsToChecksum
(
sum
);
}
private
bool
IsValidRouting
{
get
{
TryParseRouting
();
return
_isValidRouting
;
}
}
private
IpV4Datagram
_ipV4
;
private
ReadOnlyCollection
<
GreSourceRouteEntry
>
_routing
;
private
bool
_isValidRouting
=
true
;
...
...
@@ -422,7 +432,8 @@ namespace PcapDotNet.Packets.Gre
public
bool
Equals
(
GreSourceRouteEntry
other
)
{
return
AddressFamily
==
other
.
AddressFamily
&&
return
other
!=
null
&&
AddressFamily
==
other
.
AddressFamily
&&
Length
==
other
.
Length
&&
OffsetInPayload
==
other
.
OffsetInPayload
&&
EqualsPayloads
(
other
);
...
...
@@ -633,6 +644,13 @@ namespace PcapDotNet.Packets.Gre
public
class
GreSourceRouteEntryUnknown
:
GreSourceRouteEntry
{
public
GreSourceRouteEntryUnknown
(
GreSourceRouteEntryAddressFamily
addressFamily
,
Datagram
data
,
int
offset
)
{
_addressFamily
=
addressFamily
;
_data
=
data
;
_offset
=
offset
;
}
public
override
GreSourceRouteEntryAddressFamily
AddressFamily
{
get
{
return
_addressFamily
;
}
...
...
@@ -668,13 +686,6 @@ namespace PcapDotNet.Packets.Gre
buffer
.
Write
(
offset
,
Data
);
}
internal
GreSourceRouteEntryUnknown
(
GreSourceRouteEntryAddressFamily
addressFamily
,
Datagram
data
,
int
offset
)
{
_addressFamily
=
addressFamily
;
_data
=
data
;
_offset
=
offset
;
}
private
readonly
GreSourceRouteEntryAddressFamily
_addressFamily
;
private
readonly
Datagram
_data
;
private
readonly
int
_offset
;
...
...
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