Skip to content

Commit 4eb7a14

Browse files
committed
Add basic unit tests
1 parent 7bf9906 commit 4eb7a14

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

scapy/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,7 @@ class Conf(ConfClass):
10571057
'ppi',
10581058
'ppp',
10591059
'pptp',
1060+
'ptp_v2',
10601061
'radius',
10611062
'rip',
10621063
'rtp',

test/scapy/layers/ptp_v2.uts

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
% PTP regression tests for Scapy
2+
3+
+ Basic tests
4+
5+
= specific haslayer and getlayer implementations for PTP
6+
~ haslayer getlayer PTP
7+
pkt = IP() / UDP() / PTP()
8+
assert PTP in pkt
9+
assert pkt.haslayer(PTP)
10+
assert isinstance(pkt[PTP], PTP)
11+
assert isinstance(pkt.getlayer(PTP), PTP)
12+
13+
+ Packet dissection tests
14+
15+
= Sync packet dissection
16+
s = b'\x10\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x00\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
17+
pkt = PTP(s)
18+
assert pkt.transportSpecific == 1
19+
assert pkt.messageType == 0
20+
assert pkt.reserved1 == 0
21+
assert pkt.version == 2
22+
assert pkt.messageLength == 44
23+
assert pkt.domainNumber == 123
24+
assert pkt.reserved2 == 0
25+
assert pkt.flags == None
26+
assert pkt.correctionField == 0
27+
assert pkt.reserved3 == 0
28+
assert pkt.clockIdentity == 0x8063ffff0009ba
29+
assert pkt.portNumber == 1
30+
assert pkt.sequenceId == 116
31+
assert pkt.controlField == 0
32+
assert pkt.logMessageInterval == 0
33+
assert pkt.originTimestamp_seconds == 1169232218
34+
assert pkt.originTimestamp_nanoseconds == 174389936
35+
36+
= Delay_Req packet dissection
37+
s= b'\x11\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x01\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
38+
pkt = PTP(s)
39+
assert pkt.messageType == 0x1
40+
assert pkt.controlField == 0x1
41+
42+
= Pdelay_Req packet dissection
43+
s= b'\x12\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x05\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
44+
pkt = PTP(s)
45+
assert pkt.messageType == 0x2
46+
assert pkt.controlField == 0x5
47+
48+
= Pdelay_Resp packet dissection
49+
s= b'\x13\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x05\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
50+
pkt = PTP(s)
51+
assert pkt.messageType == 0x3
52+
assert pkt.controlField == 0x5
53+
assert pkt.requestReceiptTimestamp_seconds == 1169232218
54+
assert pkt.requestReceiptTimestamp_nanoseconds == 174389936
55+
56+
= Follow_Up packet dissection
57+
s= b'\x18\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x02\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
58+
pkt = PTP(s)
59+
assert pkt.messageType == 0x8
60+
assert pkt.controlField == 0x2
61+
assert pkt.preciseOriginTimestamp_seconds == 1169232218
62+
assert pkt.preciseOriginTimestamp_nanoseconds == 174389936
63+
64+
= Delay_Resp packet dissection
65+
s= b'\x19\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x03\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
66+
pkt = PTP(s)
67+
assert pkt.messageType == 0x9
68+
assert pkt.controlField == 0x3
69+
assert pkt.receiveTimestamp_seconds == 1169232218
70+
assert pkt.receiveTimestamp_nanoseconds == 174389936
71+
72+
= Pdelay_Resp_Follow packet dissection
73+
s= b'\x1A\x02\x00\x2c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x05\x00\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0'
74+
pkt = PTP(s)
75+
assert pkt.messageType == 0xA
76+
assert pkt.controlField == 0x5
77+
assert pkt.responseOriginTimestamp_seconds == 1169232218
78+
assert pkt.responseOriginTimestamp_nanoseconds == 174389936
79+
80+
= Announce packet dissection
81+
s= b'\x1b\x02\x00\x40\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\x00\x01\x00\x74\x05\x01\x00\x00\x45\xb1\x11\x5a\x0a\x64\xfa\xb0\x00\x00\x00\x60\x00\x00\x00\x80\x63\xff\xff\x00\x09\xba\xf8\x21\x00\x00\x80\x80'
82+
pkt = PTP(s)
83+
assert pkt.messageType == 0xB
84+
assert pkt.messageLength == 64
85+
assert pkt.controlField == 0x5
86+
assert pkt.currentUtcOffset == 0
87+
assert pkt.reserved4 == 0
88+
assert pkt.grandmasterPriority1 == 96
89+
assert pkt.grandmasterClockClass == 0
90+
assert pkt.grandmasterClockAccuracy == 0x0
91+
assert pkt.grandmasterClockVariance == 128
92+
assert pkt.grandmasterPriority2 == 99
93+
assert pkt.grandmasterIdentity == 0xffff0009baf82100
94+
assert pkt.stepsRemoved == 128
95+
assert pkt.timeSource == 0x80

0 commit comments

Comments
 (0)