[Git][NTPsec/ntpsec][master] 3 commits: Fix an incorrect range check.

Eric S. Raymond gitlab at mg.gitlab.com
Tue Dec 6 09:10:20 UTC 2016


Eric S. Raymond pushed to branch master at NTPsec / ntpsec


Commits:
6d145723 by Eric S. Raymond at 2016-12-06T03:35:43-05:00
Fix an incorrect range check.

- - - - -
c2e47e81 by Eric S. Raymond at 2016-12-06T03:44:11-05:00
Address GitLab issue #192: ntpsweep traceback...

...when host isn't found in DNS

- - - - -
93b2cbc0 by Eric S. Raymond at 2016-12-06T04:09:28-05:00
Python namespace cleanup.  No actual code changes.

- - - - -


7 changed files:

- .gitignore
- ntpdig/pyntpdig
- ntpq/ntpq
- ntpwait/ntpwait
- pylib/packet.py
- pylib/util.py
- pylib/wscript


Changes:

=====================================
.gitignore
=====================================
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
 pylib/version.py
-pylib/ntp_control.py
-pylib/ntp_magic.py
+pylib/control.py
+pylib/magic.py
 */ntp
 wafhelpers/.autorevision-cache
 .lock-waf*


=====================================
ntpdig/pyntpdig
=====================================
--- a/ntpdig/pyntpdig
+++ b/ntpdig/pyntpdig
@@ -43,7 +43,7 @@ import sys, socket, select, struct, time, getopt, datetime
 try:
     import ntp.packet
     import ntp.util
-    import ntp.ntp_magic
+    import ntp.magic
 except:
     sys.stderr.write("ntpdig: can't find Python NTP library -- check PYTHONPATH.\n")
     sys.exit(1)
@@ -137,13 +137,13 @@ def clock_select(packets):
         if response.stratum > NTP_INFIN:
             drop("stratum too high")
             continue
-        if response.version() < ntp.ntp_magic.NTP_OLDVERSION:
+        if response.version() < ntp.magic.NTP_OLDVERSION:
             drop("response version %d is too old" % response.version())
             continue
-        if response.mode() != ntp.ntp_magic.MODE_SERVER:
+        if response.mode() != ntp.magic.MODE_SERVER:
             drop("unexpected response mode %d" % response.mode())
             continue
-        if response.version() > ntp.ntp_magic.NTP_VERSION:
+        if response.version() > ntp.magic.NTP_VERSION:
             drop("response version %d is too new" % response.version())
             continue
         if response.stratum == 0:


=====================================
ntpq/ntpq
=====================================
--- a/ntpq/ntpq
+++ b/ntpq/ntpq
@@ -167,7 +167,7 @@ class Ntpq(cmd.Cmd):
         self.chosts = []		# Command-line hosts
         self.peers = []			# Data from NTP peers.
         self.debug = 0
-        self.pktversion = ntp.ntp_magic.NTP_OLDVERSION + 1
+        self.pktversion = ntp.magic.NTP_OLDVERSION + 1
         self.uservars = collections.OrderedDict()
         self.ai_family = socket.AF_UNSPEC
 
@@ -272,41 +272,41 @@ usage: help [ command ]
         self.say("\nind assid status  conf reach auth condition  last_event cnt\n")
         self.say("===========================================================\n")
         for (i, peer) in enumerate(self.peers):
-            statval = ntp.ntp_control.CTL_PEER_STATVAL(peer.status)
-            if not showall and (statval & (ntp.ntp_control.CTL_PST_CONFIG|ntp.ntp_control.CTL_PST_REACH)) == 0:
+            statval = ntp.control.CTL_PEER_STATVAL(peer.status)
+            if not showall and (statval & (ntp.control.CTL_PST_CONFIG|ntp.control.CTL_PST_REACH)) == 0:
                 continue
-            event = ntp.ntp_control.CTL_PEER_EVENT(peer.status)
-            event_count = ntp.ntp_control.CTL_PEER_NEVNT(peer.status)
-            if statval & ntp.ntp_control.CTL_PST_CONFIG:
+            event = ntp.control.CTL_PEER_EVENT(peer.status)
+            event_count = ntp.control.CTL_PEER_NEVNT(peer.status)
+            if statval & ntp.control.CTL_PST_CONFIG:
                 conf = "yes"
             else:
                 conf = "no"
-            if statval & ntp.ntp_control.CTL_PST_BCAST:
+            if statval & ntp.control.CTL_PST_BCAST:
                     reach = "none"
-                    if statval & ntp.ntp_control.CTL_PST_AUTHENABLE:
+                    if statval & ntp.control.CTL_PST_AUTHENABLE:
                             auth = "yes"
                     else:
                             auth = "none"
-            elif statval & ntp.ntp_control.CTL_PST_REACH:
+            elif statval & ntp.control.CTL_PST_REACH:
                 reach = "yes"
             else:
                 reach = "no"
-            if (statval & ntp.ntp_control.CTL_PST_AUTHENABLE) == 0:
+            if (statval & ntp.control.CTL_PST_AUTHENABLE) == 0:
                 auth = "none"
-            elif statval & ntp.ntp_control.CTL_PST_AUTHENTIC:
+            elif statval & ntp.control.CTL_PST_AUTHENTIC:
                 auth = "ok "
             else:
                 auth = "bad"
-            if self.pktversion > ntp.ntp_magic.NTP_OLDVERSION:
+            if self.pktversion > ntp.magic.NTP_OLDVERSION:
                 seldict = {
-                    ntp.ntp_control.CTL_PST_SEL_REJECT: "reject",
-                    ntp.ntp_control.CTL_PST_SEL_SANE: "falsetick",
-                    ntp.ntp_control.CTL_PST_SEL_CORRECT: "excess",
-                    ntp.ntp_control.CTL_PST_SEL_SELCAND: "outlier",
-                    ntp.ntp_control.CTL_PST_SEL_SYNCCAND: "candidate",
-                    ntp.ntp_control.CTL_PST_SEL_EXCESS: "backup",
-                    ntp.ntp_control.CTL_PST_SEL_SYSPEER: "sys.peer",
-                    ntp.ntp_control.CTL_PST_SEL_PPS: "pps.peer",
+                    ntp.control.CTL_PST_SEL_REJECT: "reject",
+                    ntp.control.CTL_PST_SEL_SANE: "falsetick",
+                    ntp.control.CTL_PST_SEL_CORRECT: "excess",
+                    ntp.control.CTL_PST_SEL_SELCAND: "outlier",
+                    ntp.control.CTL_PST_SEL_SYNCCAND: "candidate",
+                    ntp.control.CTL_PST_SEL_EXCESS: "backup",
+                    ntp.control.CTL_PST_SEL_SYSPEER: "sys.peer",
+                    ntp.control.CTL_PST_SEL_PPS: "pps.peer",
                     }
                 condition = seldict[statval & 0x7]
             else:
@@ -324,19 +324,19 @@ usage: help [ command ]
                 elif (statval & 0x3) == OLD_CTL_PST_SEL_SYSPEER:
                     condition = "sys_peer"
             event_dict = {
-                ntp.ntp_magic.PEVNT_MOBIL: "mobilize",
-                ntp.ntp_magic.PEVNT_DEMOBIL: "demobilize",
-                ntp.ntp_magic.PEVNT_REACH: "reachable",
-                ntp.ntp_magic.PEVNT_UNREACH: "unreachable",
-                ntp.ntp_magic.PEVNT_RESTART: "restart",
-                ntp.ntp_magic.PEVNT_REPLY: "no_reply",
-                ntp.ntp_magic.PEVNT_RATE: "rate_exceeded",
-                ntp.ntp_magic.PEVNT_DENY: "access_denied",
-                ntp.ntp_magic.PEVNT_ARMED: "leap_armed",
-                ntp.ntp_magic.PEVNT_NEWPEER: "sys_peer",
-                ntp.ntp_magic.PEVNT_CLOCK: "clock_alarm",
+                ntp.magic.PEVNT_MOBIL: "mobilize",
+                ntp.magic.PEVNT_DEMOBIL: "demobilize",
+                ntp.magic.PEVNT_REACH: "reachable",
+                ntp.magic.PEVNT_UNREACH: "unreachable",
+                ntp.magic.PEVNT_RESTART: "restart",
+                ntp.magic.PEVNT_REPLY: "no_reply",
+                ntp.magic.PEVNT_RATE: "rate_exceeded",
+                ntp.magic.PEVNT_DENY: "access_denied",
+                ntp.magic.PEVNT_ARMED: "leap_armed",
+                ntp.magic.PEVNT_NEWPEER: "sys_peer",
+                ntp.magic.PEVNT_CLOCK: "clock_alarm",
                 }
-            last_event = event_dict.get(ntp.ntp_magic.PEER_EVENT|event, "")
+            last_event = event_dict.get(ntp.magic.PEER_EVENT|event, "")
             display = \
                      "%3d %5u  %04x   %3.3s  %4s  %4.4s %9.9s %11s %2lu" % \
                      (i + 1, peer.associd,
@@ -372,8 +372,8 @@ usage: help [ command ]
             self.say(("=" * report.width()) + "\n")
             for peer in self.peers:
                 if not showall and \
-                        not (ntp.ntp_control.CTL_PEER_STATVAL(peer.status)
-                          & (ntp.ntp_control.CTL_PST_CONFIG|ntp.ntp_control.CTL_PST_REACH)):
+                        not (ntp.control.CTL_PEER_STATVAL(peer.status)
+                          & (ntp.control.CTL_PST_CONFIG|ntp.control.CTL_PST_REACH)):
                     if self.debug:
                         self.warn("eliding [%d]\n" % peer.associd)
                     continue
@@ -439,7 +439,7 @@ usage: help [ command ]
             return ()
         lo = self.__assoc_valid(tokens[0])
         hi = self.__assoc_valid(tokens[1])
-        if lo < 0 or hi < 0 or hi < 0: 
+        if lo < 0 or hi < 0 or hi < lo: 
             return ()
         return (lo, hi)
 
@@ -840,11 +840,11 @@ usage: authenticate [ yes|no ]
         else:
             try:
                 newversion = int(line)
-                if newversion >= ntp.ntp_magic.NTP_OLDVERSION and newversion <= ntp.ntp_magic.NTP_VERSION:
+                if newversion >= ntp.magic.NTP_OLDVERSION and newversion <= ntp.magic.NTP_VERSION:
                     self.pktversion = newversion
                 else:
                     print("versions %d to %d, please"
-                          % (ntp.ntp_magic.NTP_OLDVERSION, ntp.ntp_magic.NTP_VERSION))
+                          % (ntp.magic.NTP_OLDVERSION, ntp.magic.NTP_VERSION))
             except ValueError:
                 print("What?")
         print("NTP version being claimed is %d" % self.pktversion)
@@ -983,7 +983,7 @@ usage: showvars
         associd = self.__assoc_valid(line)
         if associd >= 0:
             qtype = ntp.ntpc.TYPE_SYS if associd == 0 else ntp.ntpc.TYPE_PEER
-            self.__dolist(self.uservars.keys(), associd, ntp.ntp_control.CTL_OP_READVAR, qtype)
+            self.__dolist(self.uservars.keys(), associd, ntp.control.CTL_OP_READVAR, qtype)
 
     def help_readlist(self):
         self.say("""\
@@ -1016,7 +1016,7 @@ usage: writelist [ assocID ]
         associd = self.__assoc_valid(line)
         if associd >= 0:
             qtype = ntp.ntpc.TYPE_SYS if associd == 0 else ntp.ntpc.TYPE_PEER
-            self.__dolist(line.split()[1:], associd, ntp.ntp_control.CTL_OP_READVAR, qtype, quiet=True)
+            self.__dolist(line.split()[1:], associd, ntp.control.CTL_OP_READVAR, qtype, quiet=True)
 
     def help_readvar(self):
         self.say("""\
@@ -1057,7 +1057,7 @@ usage: writevar assocID name=value,[...]
             if (associd != idrange[0]):
                 self.say("\n")
             if not self.__dolist(self.uservars,
-                                associd, ntp.ntp_control.CTL_OP_READVAR, ntp.ntpc.TYPE_PEER):
+                                associd, ntp.control.CTL_OP_READVAR, ntp.ntpc.TYPE_PEER):
                 return
 
     def help_mreadlist(self):
@@ -1091,7 +1091,7 @@ usage: mrl assocIDlow assocIDhigh
         for associd in idrange:
             if (associd != idrange[0]):
                 self.say("\n")
-            if not self.__dolist(varlist, associd, ntp.ntp_control.CTL_OP_READVAR, ntp.ntpc.TYPE_PEER):
+            if not self.__dolist(varlist, associd, ntp.control.CTL_OP_READVAR, ntp.ntpc.TYPE_PEER):
                 return
 
     def help_mreadvar(self):
@@ -1118,7 +1118,7 @@ usage: mrv assocIDlow assocIDhigh [ name=value[,...] ]
         assoc = self.__assoc_valid(line)
         if assoc >= 0:
             self.__dolist(self.uservars.keys(),
-                          assoc, ntp.ntp_control.CTL_OP_READCLOCK, ntp.ntpc.TYPE_CLOCK)
+                          assoc, ntp.control.CTL_OP_READCLOCK, ntp.ntpc.TYPE_CLOCK)
 
     def help_clocklist(self):
         self.say("""\
@@ -1142,7 +1142,7 @@ usage: cl [ assocID ]
         if assoc == 0:
             self.warn("This command requires the association ID of a clock.\n")
         elif assoc > 0:
-            self.__dolist(line.split()[1:], assoc, ntp.ntp_control.CTL_OP_READCLOCK, ntp.ntpc.TYPE_CLOCK)
+            self.__dolist(line.split()[1:], assoc, ntp.control.CTL_OP_READCLOCK, ntp.ntpc.TYPE_CLOCK)
 
     def help_clockvar(self):
         self.say("""\


=====================================
ntpwait/ntpwait
=====================================
--- a/ntpwait/ntpwait
+++ b/ntpwait/ntpwait
@@ -18,7 +18,7 @@ from __future__ import print_function, division
 
 import sys, getopt, re, time
 import socket
-import ntp.ntp_magic
+import ntp.magic
 import ntp.packet
 
 # General notes on Python 2/3 compatibility:
@@ -177,14 +177,14 @@ if __name__ == "__main__":
             sys.stdout.write("\bLeap status not available\n")
             sys.exit(1)
 
-        if leap == ntp.ntp_magic.LEAP_NOTINSYNC:
+        if leap == ntp.magic.LEAP_NOTINSYNC:
             if verbose:
                 sys.stdout.write("\b" + "*+:."[i % 4])
             if i < tries:
                 time.sleep(sleep)
             continue
 
-        if leap in (ntp.ntp_magic.LEAP_NOWARNING, ntp.ntp_magic.LEAP_ADDSECOND, ntp.ntp_magic.LEAP_DELSECOND):
+        if leap in (ntp.magic.LEAP_NOWARNING, ntp.magic.LEAP_ADDSECOND, ntp.magic.LEAP_DELSECOND):
             # We could check "sync" here to make sure we like the source...
             if verbose:
                 sys.stdout.write("\bOK!\n")


=====================================
pylib/packet.py
=====================================
--- a/pylib/packet.py
+++ b/pylib/packet.py
@@ -182,8 +182,8 @@ A Mode 6 packet cannot have extension fields.
 from __future__ import print_function, division
 import sys, socket, select, struct, collections, string
 import getpass, hashlib, time
-import ntp.ntp_control
-import ntp.ntp_magic
+import ntp.control
+import ntp.magic
 import ntp.ntpc
 import ntp.util
 
@@ -324,7 +324,7 @@ class Packet:
     @staticmethod
     def PKT_LI_VN_MODE(l, v, m):  return ((((l) & 3) << 6) | Packet.VN_MODE((v), (m)))
 
-    def __init__(self, mode=ntp.ntp_magic.MODE_CLIENT, version=ntp.ntp_magic.NTP_VERSION, session=None):
+    def __init__(self, mode=ntp.magic.MODE_CLIENT, version=ntp.magic.NTP_VERSION, session=None):
         self.session = session  # Where to get session context
         self.li_vn_mode = 0     # leap, version, mode (uint8_t)
         # Subclasses have variable fields here
@@ -340,7 +340,7 @@ class Packet:
         self.__extension = polybytes(x)
 
     def leap(self):
-        return ("no-leap", "add-leap", "del-leap", "unsync")[ntp.ntp_magic.PKT_LEAP(self.li_vn_mode)]
+        return ("no-leap", "add-leap", "del-leap", "unsync")[ntp.magic.PKT_LEAP(self.li_vn_mode)]
 
     def version(self):
         return (self.li_vn_mode >> 3) & 0x7
@@ -530,7 +530,7 @@ class ControlPacket(Packet):
     "Mode 6 request/response."
 
     def __init__(self, session, opcode=0, associd=0, qdata=''):
-        Packet.__init__(self, mode=ntp.ntp_magic.MODE_CONTROL,
+        Packet.__init__(self, mode=ntp.magic.MODE_CONTROL,
                         version=session.pktversion,
                         session=session)
         self.r_e_m_op = opcode  # ntpq operation code
@@ -689,14 +689,14 @@ class ControlSession:
     "A session to a host"
     MRU_ROW_LIMIT	= 256
     server_errors = {
-        ntp.ntp_control.CERR_UNSPEC: "UNSPEC",
-        ntp.ntp_control.CERR_PERMISSION: "PERMISSION",
-        ntp.ntp_control.CERR_BADFMT: "BADFMT",
-        ntp.ntp_control.CERR_BADOP: "BADOP",
-        ntp.ntp_control.CERR_BADASSOC: "BADASSOC",
-        ntp.ntp_control.CERR_UNKNOWNVAR: "UNKNOWNVAR",
-        ntp.ntp_control.CERR_BADVALUE: "BADVALUE",
-        ntp.ntp_control.CERR_RESTRICT: "RESTRICT",
+        ntp.control.CERR_UNSPEC: "UNSPEC",
+        ntp.control.CERR_PERMISSION: "PERMISSION",
+        ntp.control.CERR_BADFMT: "BADFMT",
+        ntp.control.CERR_BADOP: "BADOP",
+        ntp.control.CERR_BADASSOC: "BADASSOC",
+        ntp.control.CERR_UNKNOWNVAR: "UNKNOWNVAR",
+        ntp.control.CERR_BADVALUE: "BADVALUE",
+        ntp.control.CERR_RESTRICT: "RESTRICT",
         }
 
     def __init__(self):
@@ -704,7 +704,7 @@ class ControlSession:
         self.ai_family = socket.AF_UNSPEC
         self.primary_timeout = DEFTIMEOUT       # Timeout for first select
         self.secondary_timeout = DEFSTIMEOUT    # Timeout for later selects
-        self.pktversion = ntp.ntp_magic.NTP_OLDVERSION + 1    # Packet version number we use
+        self.pktversion = ntp.magic.NTP_OLDVERSION + 1    # Packet version number we use
         self.always_auth       = False  # Always send authenticated requests
         self.keytype = "MD5"
         self.keyid = None
@@ -733,7 +733,7 @@ class ControlSession:
         if hname.startswith("["):
             hname = hname[1:-1]
         # First try to resolve it as an ip address and if that fails,
-        # do a fullblown (dns) lookup. That way we only use the dns
+        # do a fullblown (DNS) lookup. That way we only use the dns
         # when it is needed and work around some implementations that
         # will return an "IPv4-mapped IPv6 address" address if you
         # give it an IPv4 address to lookup.
@@ -750,26 +750,26 @@ class ControlSession:
                 sys.stderr.write("ntpq: numeric-mode lookup of %s failed, %s\n" % (hname, e.strerror))
         try:
             return hinted_lookup(port="ntp", hints=0)
-        except socket.gaierror as e:
-            sys.stderr.write("ntpq: standard-mode lookup of %s failed, %s\n" % (hname, e.strerror))
-        # EAI_NODATA and AI_CANONNAME should both exist - they're in the
-        # POSIX API.  If this code throws AttributeErrors there is
-        # probably a very old and broken socket layer in your Python
-        # build.  The C implementation had a second fallback mode that
-        # removed AI_ADDRCONFIG if the first fallback raised BADFLAGS.
-        fallback_hints = socket.AI_CANONNAME
-        try:
-            fallback_hints |= socket.AI_ADDRCONFIG
-        except AttributeError:
-            pass
-        try:
-            if e.errno in (socket.EAI_NONAME, socket.EAI_NODATA):
-                try:
-                    return hinted_lookup(port="ndp", hints=0)
-                except socket.gaierror as e:
-                    sys.stderr.write("ntpq: ndp lookup failed, %s\n" % e.strerror)
-        except AttributeError:
-            sys.stderr.write("ntpq: API error, missing socket attributes\n")
+        except socket.gaierror as e1:
+            sys.stderr.write("ntpq: standard-mode lookup of %s failed, %s\n" % (hname, e1.strerror))
+            # EAI_NODATA and AI_CANONNAME should both exist - they're in the
+            # POSIX API.  If this code throws AttributeErrors there is
+            # probably a very old and broken socket layer in your Python
+            # build.  The C implementation had a second fallback mode that
+            # removed AI_ADDRCONFIG if the first fallback raised BADFLAGS.
+            fallback_hints = socket.AI_CANONNAME
+            try:
+                fallback_hints |= socket.AI_ADDRCONFIG
+            except AttributeError:
+                pass
+            try:
+                if e1.errno in (socket.EAI_NONAME, socket.EAI_NODATA):
+                    try:
+                        return hinted_lookup(port="ndp", hints=0)
+                    except socket.gaierror as e2:
+                        sys.stderr.write("ntpq: ndp lookup failed, %s\n" % e2.strerror)
+            except AttributeError:
+                sys.stderr.write("ntpq: API error, missing socket attributes\n")
         return None
 
     def openhost(self, hname, fam=socket.AF_UNSPEC):
@@ -853,7 +853,7 @@ class ControlSession:
             sys.stderr.write("sendrequest(opcode=%d)\n" % opcode)
 
         # Check to make sure the data will fit in one packet
-        if len(qdata) > ntp.ntp_control.CTL_MAX_DATA_LEN:
+        if len(qdata) > ntp.control.CTL_MAX_DATA_LEN:
             sys.stderr.write("***Internal error! Data too large (%d)\n" %
                              len(qdata))
             return -1
@@ -957,11 +957,11 @@ class ControlSession:
             except struct.error as reason:
                 raise ControlException(SERR_UNSPEC)
 
-            if rpkt.version() > ntp.ntp_magic.NTP_VERSION or rpkt.version() < ntp.ntp_magic.NTP_OLDVERSION:
+            if rpkt.version() > ntp.magic.NTP_VERSION or rpkt.version() < ntp.magic.NTP_OLDVERSION:
                 if self.debug:
                     warn("Fragment received with version %d\n" % rpkt.version())
                 continue
-            if rpkt.mode() != ntp.ntp_magic.MODE_CONTROL:
+            if rpkt.mode() != ntp.magic.MODE_CONTROL:
                 if self.debug:
                     warn("Fragment received with mode %d\n" % rpkt.mode())
                 continue
@@ -1100,7 +1100,7 @@ class ControlSession:
 
     def readstat(self, associd=0):
         "Read peer status, or throw an exception."
-        self.doquery(opcode=ntp.ntp_control.CTL_OP_READSTAT, associd=associd)
+        self.doquery(opcode=ntp.control.CTL_OP_READSTAT, associd=associd)
         if len(self.response) % 4:
             raise ControlException(SERR_BADLENGTH)
         idlist = []
@@ -1151,7 +1151,7 @@ class ControlSession:
                     items.append((pair, ""))
         return collections.OrderedDict(items)
 
-    def readvar(self, associd=0, varlist=None, opcode=ntp.ntp_control.CTL_OP_READVAR):
+    def readvar(self, associd=0, varlist=None, opcode=ntp.control.CTL_OP_READVAR):
         "Read system vars from the host as a dict, or throw an exception."
         if varlist == None:
             qdata = ""
@@ -1162,7 +1162,7 @@ class ControlSession:
 
     def config(self, configtext):
         "Send configuration text to the daemon. Return True if accepted."
-        self.doquery(opcode=ntp.ntp_control.CTL_OP_CONFIGURE, qdata=configtext, auth=True)
+        self.doquery(opcode=ntp.control.CTL_OP_CONFIGURE, qdata=configtext, auth=True)
         # Copes with an implementation error - ntpd uses putdata without
         # setting the size correctly.
         if not self.response:
@@ -1174,7 +1174,7 @@ class ControlSession:
 
     def fetch_nonce(self):
         "Receive a nonce that can be replayed - combats source address spoofing"
-        self.doquery(opcode=ntp.ntp_control.CTL_OP_REQ_NONCE)
+        self.doquery(opcode=ntp.control.CTL_OP_REQ_NONCE)
         if not self.response.startswith(polybytes("nonce=")):
             raise ControlException(SERR_BADNONCE)
         return polystr(self.response.strip())
@@ -1217,10 +1217,10 @@ class ControlSession:
                 else:
                     raise ControlException(SERR_BADPARAM % k)
             if 'kod' in variables:
-                variables['resany'] = variables.get('resany', 0) | ntp.ntp_magic.RES_KOD
+                variables['resany'] = variables.get('resany', 0) | ntp.magic.RES_KOD
                 del variables['kod']
             if 'limited' in variables:
-                variables['resany'] = variables.get('resany', 0) | ntp.ntp_magic.RES_LIMITED
+                variables['resany'] = variables.get('resany', 0) | ntp.magic.RES_LIMITED
                 del variables['limited']
 
         nonce = self.fetch_nonce()
@@ -1240,13 +1240,13 @@ class ControlSession:
             while True:
                 # Request additions to the MRU list
                 try:
-                    self.doquery(opcode=ntp.ntp_control.CTL_OP_READ_MRU, qdata=req_buf)
+                    self.doquery(opcode=ntp.control.CTL_OP_READ_MRU, qdata=req_buf)
                     recoverable_read_errors = False
                 except ControlException as e:
                     recoverable_read_errors = True
                     if e.errorcode is None:
                         raise e
-                    elif e.errorcode == ntp.ntp_control.CERR_UNKNOWNVAR:
+                    elif e.errorcode == ntp.control.CERR_UNKNOWNVAR:
                         # None of the supplied prior entries match, so
                         # toss them from our list and try again.
                         if self.debug:
@@ -1256,10 +1256,10 @@ class ControlSession:
                             raise ControlException(SERR_STALL)
                         if self.debug:
                             warn("--->   Restarting from the beginning, retry #%u\n" % restarted_count)
-                    elif e.errorcode == ntp.ntp_control.CERR_UNKNOWNVAR:
+                    elif e.errorcode == ntp.control.CERR_UNKNOWNVAR:
                         e.message = "CERR_UNKNOWNVAR from ntpd but no priors given."
                         raise e
-                    elif e.errorcode == ntp.ntp_control.CERR_BADVALUE:
+                    elif e.errorcode == ntp.control.CERR_BADVALUE:
                         if cap_frags:
                             cap_frags = False
                             if self.debug:
@@ -1357,7 +1357,7 @@ class ControlSession:
                 for i in range(len(span.entries)):
                     e = span.entries[len(span.entries) - i - 1]
                     incr = ", addr.%d=%s, last.%d=%s" % (i, e.addr, i, e.last)
-                    if len(req_buf) + len(incr) >= ntp.ntp_control.CTL_MAX_DATA_LEN:
+                    if len(req_buf) + len(incr) >= ntp.control.CTL_MAX_DATA_LEN:
                         break
                     else:
                         req_buf += incr
@@ -1391,7 +1391,7 @@ class ControlSession:
 
     def __ordlist(self, listtype):
         "Retrieve ordered-list data."
-        self.doquery(opcode=ntp.ntp_control.CTL_OP_READ_ORDLIST_A, qdata=listtype, auth=True)
+        self.doquery(opcode=ntp.control.CTL_OP_READ_ORDLIST_A, qdata=listtype, auth=True)
         stanzas = []
         for (key, value) in self.__parse_varlist().items():
             if key[-1].isdigit() and key[-2] == '.':
@@ -1463,7 +1463,7 @@ class Authenticator:
         # According to RFC 5909 7.5 the MAC is always present when an extension
         # field is present. Note: this crude test will fail on Mode 6 packets.
         # On those you have to go in and look at the count.
-        return len(packet) > ntp.ntp_magic.LEN_PKT_NOMAC
+        return len(packet) > ntp.magic.LEN_PKT_NOMAC
     def verify_mac(self, packet):
         "Does the MAC on this packet verify according to credentials we have?"
         # FIXME: Someday, figure out how to handle SHA1?


=====================================
pylib/util.py
=====================================
--- a/pylib/util.py
+++ b/pylib/util.py
@@ -13,8 +13,8 @@ import collections
 
 import ntp.ntpc
 import ntp.version
-import ntp.ntp_magic
-import ntp.ntp_control
+import ntp.magic
+import ntp.control
 
 def stdversion():
     return "%s-%s-%s %s" % (ntp.version.VERSION, ntp.version.VCS_TICK,
@@ -194,11 +194,11 @@ class PeerSummary:
             elif name == "hpoll":
                 hpoll = value
                 if hpoll < 0:
-                    hpoll = ntp.ntp_magic.NTP_MINPOLL
+                    hpoll = ntp.magic.NTP_MINPOLL
             elif name == "ppoll":
                 ppoll = value
                 if ppoll < 0:
-                    ppoll = ntp.ntp_magic.NTP_MINPOLL
+                    ppoll = ntp.magic.NTP_MINPOLL
             elif name == "reach":
                 # Shipped as hex, displayed in octal
                 reach = value
@@ -218,16 +218,16 @@ class PeerSummary:
                 srcport = value
             elif name == "reftime":
                 reftime = value	# l_fp timestamp
-        if hmode == ntp.ntp_magic.MODE_BCLIENT:
+        if hmode == ntp.magic.MODE_BCLIENT:
             # broadcastclient or multicastclient
             ptype = 'b'
-        elif hmode == ntp.ntp_magic.MODE_BROADCAST:
+        elif hmode == ntp.magic.MODE_BROADCAST:
             # broadcast or multicast server
             if srcadr.startswith("224."):	# IANA multicast address prefix
                 ptype = 'M'
             else:
                 ptype = 'B'
-        elif hmode == ntp.ntp_magic.MODE_CLIENT:
+        elif hmode == ntp.magic.MODE_CLIENT:
             if srchost and '(' in srchost:
                 ptype = 'l'	# local refclock
             elif dstadr_refid == "POOL":
@@ -236,9 +236,9 @@ class PeerSummary:
                 ptype = 'a'	# manycastclient
             else:
                 ptype = 'u'	# unicast
-        elif hmode == ntp.ntp_magic.MODE_ACTIVE:
+        elif hmode == ntp.magic.MODE_ACTIVE:
             ptype = 's'		# symmetric active
-        elif hmode == ntp.ntp_magic.MODE_PASSIVE:
+        elif hmode == ntp.magic.MODE_PASSIVE:
             ptype = 'S'		# symmetric passive
 
         #
@@ -246,10 +246,10 @@ class PeerSummary:
         #
         line = ""
         poll_sec = 1 << min(ppoll, hpoll)
-        if self.pktversion > ntp.ntp_magic.NTP_OLDVERSION:
-            c = " x.-+#*o"[ntp.ntp_control.CTL_PEER_STATVAL(rstatus) & 0x7]
+        if self.pktversion > ntp.magic.NTP_OLDVERSION:
+            c = " x.-+#*o"[ntp.control.CTL_PEER_STATVAL(rstatus) & 0x7]
         else:
-            c = " .+*"[ntp.ntp_control.CTL_PEER_STATVAL(rstatus) & 0x3]
+            c = " .+*"[ntp.control.CTL_PEER_STATVAL(rstatus) & 0x3]
         # Source host or clockname
         if srchost != None:
             clock_name = srchost
@@ -322,9 +322,9 @@ class MRUSummary:
             stats += " %6d" % avgint
         else:
             stats += " %6.2f" % favgint
-        if entry.rs & ntp.ntp_magic.RES_KOD:
+        if entry.rs & ntp.magic.RES_KOD:
             rscode = 'K'
-        elif entry.rs & ntp.ntp_magic.RES_LIMITED:
+        elif entry.rs & ntp.magic.RES_LIMITED:
             rscode = 'L'
         else:
             rscode = '.'
@@ -334,8 +334,8 @@ class MRUSummary:
                 dns = canonicalize_dns(dns)
             stats += " %4hx %c %d %d %6d %5s %s" % \
                      (entry.rs, rscode,
-                      ntp.ntp_magic.PKT_MODE(entry.mv),
-                      ntp.ntp_magic.PKT_VERSION(entry.mv),
+                      ntp.magic.PKT_MODE(entry.mv),
+                      ntp.magic.PKT_VERSION(entry.mv),
                       entry.ct, port[1:], dns)
             return stats
         except TypeError:


=====================================
pylib/wscript
=====================================
--- a/pylib/wscript
+++ b/pylib/wscript
@@ -9,8 +9,8 @@ def configure(conf):
 def build(ctx):
     srcnode = ctx.srcnode.make_node('pylib')
     #bldnode = ctx.bldnode.make_node('pylib')
-    target1 = ctx.srcnode.make_node('pylib/ntp_control.py')
-    target2 = ctx.srcnode.make_node('pylib/ntp_magic.py')
+    target1 = ctx.srcnode.make_node('pylib/control.py')
+    target2 = ctx.srcnode.make_node('pylib/magic.py')
     target3 = ctx.srcnode.make_node('pylib/version.py')
     target4 = ctx.srcnode.make_node('wafhelpers/.autorevision-cache')
 



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/compare/17f1dd8f932cabfc8a9021176ec9b8504c81070a...93b2cbc0f2bf130f78dccceed10e13e6af80335d
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ntpsec.org/pipermail/vc/attachments/20161206/59f164e0/attachment.html>


More information about the vc mailing list