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