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
47ed4887
Commit
47ed4887
authored
Nov 27, 2009
by
Brickner_cp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
new packet builder design
parent
bcd8ec16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
219 additions
and
48 deletions
+219
-48
IgmpTests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/IgmpTests.cs
+96
-48
PacketBuilder2.cs
PcapDotNet/src/PcapDotNet.Packets/PacketBuilder2.cs
+123
-0
No files found.
PcapDotNet/src/PcapDotNet.Packets.Test/IgmpTests.cs
View file @
47ed4887
This diff is collapsed.
Click to expand it.
PcapDotNet/src/PcapDotNet.Packets/PacketBuilder2.cs
View file @
47ed4887
...
...
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using
System.Linq
;
using
PcapDotNet.Packets.Arp
;
using
PcapDotNet.Packets.Ethernet
;
using
PcapDotNet.Packets.Igmp
;
using
PcapDotNet.Packets.IpV4
;
using
PcapDotNet.Packets.Transport
;
...
...
@@ -365,6 +366,128 @@ namespace PcapDotNet.Packets
}
}
public
abstract
class
IgmpLayer
:
SimpleLayer
,
IIpV4NextLayer
{
public
IpV4Protocol
PreviousLayerProtocol
{
get
{
return
IpV4Protocol
.
InternetGroupManagementProtocol
;
}
}
}
public
abstract
class
SimpleIgmpLayer
:
IgmpLayer
{
public
IpV4Address
GroupAddress
{
get
;
set
;
}
public
abstract
IgmpMessageType
MessageType
{
get
;
}
public
abstract
TimeSpan
MaxResponseTimeValue
{
get
;
}
public
override
int
Length
{
get
{
return
IgmpDatagram
.
HeaderLength
;
}
}
protected
override
void
Write
(
byte
[]
buffer
,
int
offset
)
{
IgmpDatagram
.
WriteHeader
(
buffer
,
offset
,
MessageType
,
MaxResponseTimeValue
,
GroupAddress
);
}
}
public
abstract
class
IgmpVersion1Layer
:
SimpleIgmpLayer
{
public
override
TimeSpan
MaxResponseTimeValue
{
get
{
return
TimeSpan
.
Zero
;
}
}
}
public
abstract
class
IgmpVersion2Layer
:
SimpleIgmpLayer
{
public
TimeSpan
MaxResponseTime
{
get
;
set
;
}
public
override
TimeSpan
MaxResponseTimeValue
{
get
{
return
MaxResponseTime
;
}
}
}
public
class
IgmpQueryVersion1Layer
:
IgmpVersion1Layer
{
public
override
IgmpMessageType
MessageType
{
get
{
return
IgmpMessageType
.
MembershipQuery
;
}
}
}
public
class
IgmpQueryVersion2Layer
:
IgmpVersion2Layer
{
public
override
IgmpMessageType
MessageType
{
get
{
return
IgmpMessageType
.
MembershipQuery
;
}
}
}
public
class
IgmpQueryVersion3Layer
:
IgmpLayer
{
public
TimeSpan
MaxResponseTime
{
get
;
set
;
}
public
IpV4Address
GroupAddress
{
get
;
set
;
}
public
bool
IsSuppressRouterSideProcessing
{
get
;
set
;
}
public
byte
QueryRobustnessVariable
{
get
;
set
;}
public
TimeSpan
QueryInterval
{
get
;
set
;}
public
IpV4Address
[]
SourceAddresses
{
get
;
set
;}
public
override
int
Length
{
get
{
return
IgmpDatagram
.
GetQueryVersion3Length
(
SourceAddresses
.
Length
);
}
}
protected
override
void
Write
(
byte
[]
buffer
,
int
offset
)
{
IgmpDatagram
.
WriteQueryVersion3
(
buffer
,
offset
,
MaxResponseTime
,
GroupAddress
,
IsSuppressRouterSideProcessing
,
QueryRobustnessVariable
,
QueryInterval
,
SourceAddresses
);
}
}
public
class
IgmpReportVersion1Layer
:
IgmpVersion1Layer
{
public
override
IgmpMessageType
MessageType
{
get
{
return
IgmpMessageType
.
MembershipReportVersion1
;
}
}
}
public
class
IgmpReportVersion2Layer
:
IgmpVersion2Layer
{
public
override
IgmpMessageType
MessageType
{
get
{
return
IgmpMessageType
.
MembershipReportVersion2
;
}
}
}
public
class
IgmpLeaveGroupVersion2Layer
:
IgmpVersion2Layer
{
public
override
IgmpMessageType
MessageType
{
get
{
return
IgmpMessageType
.
LeaveGroupVersion2
;
}
}
}
public
class
IgmpReportVersion3Layer
:
IgmpLayer
{
public
IgmpGroupRecord
[]
GroupRecords
{
get
;
set
;}
public
override
int
Length
{
get
{
return
IgmpDatagram
.
GetReportVersion3Length
(
GroupRecords
);
}
}
protected
override
void
Write
(
byte
[]
buffer
,
int
offset
)
{
IgmpDatagram
.
WriteReportVersion3
(
buffer
,
offset
,
GroupRecords
);
}
}
public
class
PacketBuilder2
{
public
PacketBuilder2
(
params
ILayer
[]
layers
)
...
...
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