diff options
author | Hanoh Haim <hhaim@cisco.com> | 2015-09-20 17:34:55 +0300 |
---|---|---|
committer | Hanoh Haim <hhaim@cisco.com> | 2015-09-20 17:34:55 +0300 |
commit | 3fe28431157f7b2ed2ed8184ed85017c42a4cb6c (patch) | |
tree | 41fa17684842885e1664cc63ff1520157f191261 /scripts/external_libs/dpkt-1.8.6/dpkt/ntp.py | |
parent | 588bb20e9c8f8438db4eb3e8db85111f41bd7306 (diff) | |
parent | 28fef018f75b5a54ac69ac7c919127bf47f5b61f (diff) |
Merge branch 'master' of csi-sceasr-b45:/auto/proj-pcube-b/apps/PL-b/tools/repo//trex-core into wen
Diffstat (limited to 'scripts/external_libs/dpkt-1.8.6/dpkt/ntp.py')
-rw-r--r-- | scripts/external_libs/dpkt-1.8.6/dpkt/ntp.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/scripts/external_libs/dpkt-1.8.6/dpkt/ntp.py b/scripts/external_libs/dpkt-1.8.6/dpkt/ntp.py new file mode 100644 index 00000000..7012af2a --- /dev/null +++ b/scripts/external_libs/dpkt-1.8.6/dpkt/ntp.py @@ -0,0 +1,83 @@ +# $Id: ntp.py 48 2008-05-27 17:31:15Z yardley $ + +"""Network Time Protocol.""" + +import dpkt + +# NTP v4 + +# Leap Indicator (LI) Codes +NO_WARNING = 0 +LAST_MINUTE_61_SECONDS = 1 +LAST_MINUTE_59_SECONDS = 2 +ALARM_CONDITION = 3 + +# Mode Codes +RESERVED = 0 +SYMMETRIC_ACTIVE = 1 +SYMMETRIC_PASSIVE = 2 +CLIENT = 3 +SERVER = 4 +BROADCAST = 5 +CONTROL_MESSAGE = 6 +PRIVATE = 7 + +class NTP(dpkt.Packet): + __hdr__ = ( + ('flags', 'B', 0), + ('stratum', 'B', 0), + ('interval', 'B', 0), + ('precision', 'B', 0), + ('delay', 'I', 0), + ('dispersion', 'I', 0), + ('id', '4s', 0), + ('update_time', '8s', 0), + ('originate_time', '8s', 0), + ('receive_time', '8s', 0), + ('transmit_time', '8s', 0) + ) + + def _get_v(self): + return (self.flags >> 3) & 0x7 + def _set_v(self, v): + self.flags = (self.flags & ~0x38) | ((v & 0x7) << 3) + v = property(_get_v, _set_v) + + def _get_li(self): + return (self.flags >> 6) & 0x3 + def _set_li(self, li): + self.flags = (self.flags & ~0xc0) | ((li & 0x3) << 6) + li = property(_get_li, _set_li) + + def _get_mode(self): + return (self.flags & 0x7) + def _set_mode(self, mode): + self.flags = (self.flags & ~0x7) | (mode & 0x7) + mode = property(_get_mode, _set_mode) + +if __name__ == '__main__': + import unittest + + class NTPTestCase(unittest.TestCase): + def testPack(self): + n = NTP(self.s) + self.failUnless(self.s == str(n)) + + def testUnpack(self): + n = NTP(self.s) + self.failUnless(n.li == NO_WARNING) + self.failUnless(n.v == 4) + self.failUnless(n.mode == SERVER) + self.failUnless(n.stratum == 2) + self.failUnless(n.id == '\xc1\x02\x04\x02') + + # test get/set functions + n.li = ALARM_CONDITION + n.v = 3 + n.mode = CLIENT + self.failUnless(n.li == ALARM_CONDITION) + self.failUnless(n.v == 3) + self.failUnless(n.mode == CLIENT) + + s = '\x24\x02\x04\xef\x00\x00\x00\x84\x00\x00\x33\x27\xc1\x02\x04\x02\xc8\x90\xec\x11\x22\xae\x07\xe5\xc8\x90\xf9\xd9\xc0\x7e\x8c\xcd\xc8\x90\xf9\xd9\xda\xc5\xb0\x78\xc8\x90\xf9\xd9\xda\xc6\x8a\x93' + unittest.main() |