Robert,

Robert Hegner wrote:

I'm developing a distributed system where time synchronization is done using 
NTP. I'd like to give the user the possibility to do some basic monitoring / 
controlling of all the NTP clients in the system from the main control program. 
So for example I'd like to show the status of all remote NTP clients like 
Meinberg's NTP Time Server Monitor does.

Is there some library I can link against to gain access to the local (or even 
better: a remote) instance of the NTP service?

I took a look into the sources of NTP and noticed that there is a static 
library called libntp. But I didn't find any documentation of what that library 
exactly does.

Can I use that library in my own software for the purpose described above? I 
would also be happy to get some links (to documentation) and hints to get 
started.

Btw, I'm aware of the ntpq and ntpdc command line tools. But I'd prefer direct 
access via (dynamic) library.

Basically libntp has been written to do exactly this, and is based on the source code of ntpq.

The problem is that this code is not thread-safe.

ntpq stores some data between subsequent calls to the running ntpd in some global variables. In this case this doesn't matter since it's a single process which only talks to one instance of ntpd at the same time.

The libntp code has only minor changes to allow using the functionality of ntpq from an own application. However, since this still uses global variables, the functionality is messed up if the libntp functions are called from several threads.

IMO, a proper solution would be to collect all global variables required by ntpq in a data structure, use something like "open()" to create an instance of this data structure for each ntpd node to be accessed, and let open() return the pointer to this structure (like a FILE *) which can then be used with subsequent library calls.

This approach would make libntp thread safe, and the optimum solution would be (once more IMO) if the ntpq program would make use of this library to avoid duplicate code in the NTP code base.


Martin
--
Martin Burnicki

Meinberg Funkuhren
Bad Pyrmont
Germany

_______________________________________________
questions mailing list
[email protected]
http://lists.ntp.org/listinfo/questions

Reply via email to