diff -up ntp-4.2.6p5/html/drivers/driver28.html.shmperm ntp-4.2.6p5/html/drivers/driver28.html --- ntp-4.2.6p5/html/drivers/driver28.html.shmperm 2009-12-09 08:36:37.000000000 +0100 +++ ntp-4.2.6p5/html/drivers/driver28.html 2015-02-09 15:57:57.450877311 +0100 @@ -18,7 +18,8 @@ Driver ID: SHM
This driver receives its reference clock info from a shared memory-segment. The shared memory-segment is created with owner-only access for unit 0 and 1, and world access for unit 2 and 3
+This driver receives its reference clock info from a shared memory-segment. The shared memory-segment is created with owner-only access for unit 0 and 1, and world access for other units unless the mode word is set for owner-only access.
+struct shmTime { @@ -94,6 +95,40 @@ Here is a sample showing the GPS recepti 54364 85700.160 127.127.28.0 65 0 65 0 0+
+ Some aspects of the driver behavior can be adjusted by setting bits of
+ the 'mode' word in the server configuration line:
+ server 127.127.28.x mode Y
+
Bit | +Dec | +Hex | +Meaning | +
---|---|---|---|
0 | +1 | +1 | +The SHM segment is private (mode 0600). This is the fixed + default for clock units 0 and 1; clock units >1 are mode + 0666 unless this bit is set for the specific unit. | + +
1-31 | +- | +- | +reserved -- do not use | +
The driver attempts to create a shared memory segment with an + identifier depending on the unit number. This identifier (which can be + a numeric value or a string) clearly depends on the method used, which + in turn depends on the host operating system:
+ ++ Windows uses a file mapping to the page file with the + name 'Global\NTPu' for public accessible + mappings, where u is the clock unit. Private / + non-public mappings are created as + 'Local\NTPu'. +
+ Public access assigns a NULL DACL to the memory mapping, while + private access just uses the default DACL of the process creating + the mapping. +
++ SYSV IPC creates a shared memory segment with a key value + of 0x4E545030 + u, where u is again + the clock unit. (This value could be hex-decoded as 'NTP0', + 'NTP1',..., with funny characters for units > 9.) +
+ Public access means a permission set of 0666, while private access + creates the mapping with a permission set of 0600. +
+There's no support for POSIX shared memory yet.
+ +NTPD is started as root on most POSIX-like operating systems + and uses the setuid/setgid system API to run under reduced rights once + the initial setup of the process is done. One consequence out of this + is that the allocation of SHM segments must be done early during the + clock setup. The actual polling of the clock is done as the run-time + user; deferring the creation of the SHM segment to this point will + create a SHM segment owned by the runtime-user account. The internal + structure of NTPD does not permit the use of a fudge flag if + this is to be avoided; this is the reason why a mode bit is used for + the configuration of a public segment. +
+ +When running under Windows, the chosen user account must be able to + create a SHM segment in the global object name space for SHM clocks with + public access. Otherwise the session isolation used by Windows kernels + after WinXP will get into the way if the client program does not run in + the same session. +
+ +