This field handles the timestamp fields in the NTP header.
| 86 | |
| 87 | |
| 88 | class TimeStampField(FixedPointField): |
| 89 | """ |
| 90 | This field handles the timestamp fields in the NTP header. |
| 91 | """ |
| 92 | |
| 93 | def __init__(self, name, default): |
| 94 | FixedPointField.__init__(self, name, default, 64, 32) |
| 95 | |
| 96 | def i2repr(self, pkt, val): |
| 97 | if val is None: |
| 98 | return "--" |
| 99 | val = self.i2h(pkt, val) |
| 100 | if val < _NTP_BASETIME: |
| 101 | return str(val) |
| 102 | return time.strftime( |
| 103 | "%a, %d %b %Y %H:%M:%S +0000", |
| 104 | time.gmtime(int(val - _NTP_BASETIME)) |
| 105 | ) |
| 106 | |
| 107 | def any2i(self, pkt, val): |
| 108 | if isinstance(val, str): |
| 109 | val = int(time.mktime(time.strptime(val))) + _NTP_BASETIME |
| 110 | elif isinstance(val, datetime.datetime): |
| 111 | val = int(val.strftime("%s")) + _NTP_BASETIME |
| 112 | return FixedPointField.any2i(self, pkt, val) |
| 113 | |
| 114 | def i2m(self, pkt, val): |
| 115 | if val is None: |
| 116 | val = FixedPointField.any2i(self, pkt, time.time() + _NTP_BASETIME) |
| 117 | return FixedPointField.i2m(self, pkt, val) |
| 118 | |
| 119 | |
| 120 | ############################################################################# |
no outgoing calls
no test coverage detected
searching dependent graphs…