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