Novell is now a part of Micro Focus

Time in the NetWare Environment

Articles and Tips: article

MARCUS WILLIAMSON
Consultant
Novell Consulting Services (Europe)

01 Jan 1994


This AppNote describes how time is maintained and used in the DOS and NetWare environments. The AppNote includes information regarding synchronization of NetWare time to external time sources.

Time in the NetWare Environment

Maintaining the correct system date and time is important to all operating systems, including DOS, OS/2, Macintosh, Unix, and NetWare. This AppNote deals with the subject of time from the point of view of the Intel-based PC running DOS and file servers running NetWare 2, 3, and 4.

The Intel-based DOS PC requires a correct system time primarily for use by the file system. When a file is changed, the date and time stamps in the directory associated with that file are also changed.

For the NetWare server, maintaining the correct date and time is important not just to the file system, but also for access security, auditing, and - in the case of NetWare 4 - directory synchronization.

PC Hardware Time

Looking closely at the system board of any AT-class PC will reveal a chip labelled Real-Time Clock (RTC), Motorola MC146818, Dallas DS, or something similar. It is this device which is responsible for the PC's "hardware" clock. A Programmable Timer/Counter chip, running at 1.19318 MHz, generates a signal approximately 18.2065 times a second, which is used to update the RTC. In all machines equipped with an RTC, the clock is backed up by CMOS memory and a battery.

The specification for early PCs did not include a real-time clock. They required the user to enter the date and time when the PC was powered on. Later models included a card which would keep the workstation clock running even when the PC had been switched off. A battery on the card would back up the clock and allow the clock to continue running for as long as the battery lasted. These cards were the forerunners of today's RTC devices.

An RTC chip can be addressed by placing a command in I/O port 70h, then reading back the result from I/O port 71h. The simple BASIC program in Appendix A shows how it is possible to read the current time from the RTC. The PC BIOS and DOS define interrupt calls to access the time and date information held by the RTC. Most high level languages also provide functions to get and set the clock from within a program.

DOS Time

Anyone who has set up a PC for the first time will be familiar with the Date and Time prompts which are generated by default for a machine without an AUTOEXEC.BAT file. At the DOS prompt, the equivalent commands DATE and TIME allow setting of the PC's software clock. In PCs equipped with an RTC, this also has the effect of setting the hardware clock.

See Appendix B for the DOS INT 21h calls which DATE and TIME use to get and set the DOS software clock.

DOS File System

DOS maintains only one date and time stamp for each file or directory on a local floppy or hard disk. The date and time stamp is initialized when a file is first created and changed whenever a file is updated. A TOUCH utility, such as the one available with Novell DOS 7, allows a user to modify the file date and time stamp as required.

The DOS date and time stamp described here is the equivalent of the NetWare 'Last Modified Date'. See the NetWare File System section for more details. See Appendix B for the DOS INT 21h calls which are used to get and set the date and time stamp on a file.

NetWare DOS Workstation

When connecting to the network, the DOS user generally executes the following steps, usually as part of AUTOEXEC.BAT or another DOS batch file:

LSL.COM
NE2000.COM
IPXODI.COM

followed by

NETX.EXE

or

VLM.EXE

By default, NETX.EXE or VLM.EXE will retrieve the current time from the server to which the workstation attaches. This time will then be used to set the hardware and software clock for the PC.

There are some situations where this may not be desirable. For example, a PC which does not have a local server may connect to a server in another continent via an asynchronous or ISDN link. When the connection is made and NETX is loaded, it is important that the PC's local time remain local and not be set to that of the server.

Placing the command

SET STATION TIME=OFF

in the NET.CFG file will disable setting of workstation time to the server time when NETX.EXE or VLM.EXE is loaded.

In the case of a workstation loading the VLM workstation components, this command would appear in the NETWARE DOS REQUESTER section of the NET.CFG file, as follows:

NETWARE DOS REQUESTER
  SET STATION TIME=OFF

Once this change has been made, the workstation time will remain set to the local PC time, unless a SYSTIME command (see below) is issued later.

DOS Workstation Time at Login

LOGIN.EXE will also attempt to ensure that the workstation time is the same as the server time. By default, the server time is retrieved and written to the DOS system clock and workstation RTC.

Placing the command

SET_TIME OFF

in the Login Script for the remote user will ensure that the workstation time remains local even after the login process has completed.

Login Process

During the login process, a property of the User object in the bindery of the NetWare 2 or 3 server is updated. The update also occurs to an attribute of the User object if the user is logging into a NetWare 4 server.

The attribute or property which is updated contains the date and time of login, according to the file server, for the user.

In the login script, the attribute may be viewed by placing the line LASTLOGIN in the Login Script. For example:

WRITE "Logged in on %MONTH/%DAY/%YEAR";
WRITE " at %HOUR:%MINUTE:%SECOND" 
LASTLOGIN

would display the date and time of the current login, followed on the next line by the date and time of the last login. This might be useful as a simple security check for users, who can then determine whether anyone has logged in using their account since they last did so.

To obtain the value of this bindery property in the NetWare 2 or 3 environment via a program, it is possible to read the value of the LOGIN_CONTROL property for the user. The property is formatted as shown in Appendix C.

NetWare File Server Time

NetWare needs to maintain correct system time in order to keep file date and time stamps correctly, for auditing and logging, and to allow or deny access to the server based on a user's Login Time Restrictions. In the NetWare 4 environment, time must be accurate on all servers in order to ensure that the Directory Services databases are synchronized between servers. (See "Time Synchronization in NetWare 4.x" in the November 1993 NetWare Application Notes for a full discussion of this subject.)

When the NetWare server starts up, it reads the value of the RTC, which should have already been set by the PC's SETUP program. Once the server is up, it keeps its own software clock for the benefit of the NetWare operating system and its users.

Getting File Server Time

At the NetWare console, the command TIME allows the system administrator to view the current time.

A user may check the server time at any stage by issuing the SYSTIME command, optionally suffixed by a servername. An additional effect of using SYSTIME is that it will set the workstation clock to the clock of any server on the network.

For example

SYSTIME UK-LAB10

might display

Current System Time:  Tuesday  November 16, 1993  7:38 pm

It would then use this time from the UK-LAB10 server to set the workstation software and RTC clock. Note that the update between server and workstation is occurring only once.

SYSTIME uses the NWGetFileServerDateAndTime API as described in Appendix C and DOS INT21h calls as described in Appendix B.

Setting File Server Time

To set the time use the SET TIME command at the server console or the FCONSOLE workstation utility.

FCONSOLE will allow a Console Operator or Supervisor (and equivalents) to display and/or change the current date and time on a given server (see Figure 1).

Figure 1: FCONSOLE display of current server time.

FCONSOLE uses the NWGetFileServerDateAndTime and NWSetFileServerDateAndTime APIs as described in Appendix C.

NetWare File System

The following screen from the FILER utility illustrates the four date and time stamps maintained by NetWare for every file. Although FILER displays only the dates, all except Last Accessed Date are actually stored as a date and time stamp value.

The meanings and functions of each value are:

Creation Date. The date that the file was created. This date should not change during the lifetime of a file.

Last Accessed Date. The date that the file was last read. This may in many cases be the same as the Last Modified Date.

Last Archived Date. The date that the file was last backed up. Last Archived Date is only updated by backup systems which are NetWare-aware. Correct use of the Last Archived Date allows incremental backups to be performed.

Last Modified Date. The date that the file was last amended. This date may be the same as the Last Accessed Date.

Figure 2: FILER display of file date and time stamps.

Internal Time Synchronization

NetWare servers read the RTC during the server startup then maintain their own software clock. In situations where there are frequent switches to real mode (for example, to read the floppy drive), the software clock may appear to run too slowly.

The following patch for NetWare 3.11 servers is designed to resynchronize the software clock with the RTC. The patch is part of 311PTD.EXE in the Compuserve NOVFILES forum.

SYNCTIME NLM    2211   12-19-92   2:37p

This patch forces the server's date/time to be synchronized to the hardware's clock at specified intervals. This NLM eliminate the gradual loss of time experienced by the server due to "missed" clock ticks while the server is in real mode.

The default update frequency is 60 seconds. This may be changed by using

LOAD SYNCTIME DELAY=hex_seconds

where hex_seconds is a hexadecimal value representing the frequency of internal synchronization.

The patch is not required for NetWare 3.12 or 4.x.

External Time Synchronization

The November 1993 AppNote "Time Synchronization in NetWare 4.x" dealt with the subject of synchronizing time within the NetWare 4 environment and mentioned one available external device.

There are many instances where it may be necessary to synchronize a single PC or a NetWare 2, 3, or 4 server to an external time source for other reasons. These might include employee time logging, airline check-in applications, or source code control systems, as possible examples

Time sources are available via the Internet, modem, or radio links. Of these, modem and radio sources are most commonly used to synchronize the clocks on PC workstations and NetWare servers.

Summary

This AppNote has covered the subject of time in the NetWare environment, including synchronization of DOS and NetWare systems to external time sources. It is intended that the Time Synchronization Solutions Guide be regularly updated and uploaded to the NetWire NOVLIB forum library.

If you have information relating to synchronization solutions not listed, please send them to Marcus Williamson as:

MJWILLIA @ NOVELL (MHS) 71333,1665 (Compuserve) MJWILLIA @ NOVELL.COM (Internet)

Appendix A: Example Programs

Example BASIC program to read the RTC:

10 REM RTCLOCK.BAS - For QBASIC or QB
20 '
30 CLS
40 DO
50 OUT &H70, 0
60 RTSECONDS = INP(&H71)
70 OUT &H70, 2
80 RTMINUTES = INP(&H71)
90 OUT &H70, 4
100 RTHOURS = INP(&H71)
110 LOCATE 1, 1
120 PRINT STRING$(20, " ")
130 LOCATE 1, 1
100 PRINT "Real Time Clock now - ";
110 PRINT HEX$(RTHOURS); ":";
120 PRINT HEX$(RTMINUTES); ":";
130 PRINT HEX$(RTSECONDS)
140 LOOP UNTIL INKEY$ <> ""
150 END

Example BASIC program demonstrating access to the NIST time source:

10 REM NISTTEST.BAS - For QBASIC or QB
15 CLS
20 COM(2) ON
30 ON COM(2) GOSUB 200
40 T$ = ""
50 OPEN "COM2:1200,N,8,1,BIN,RB1024" FOR RANDOM AS 1
60 PRINT #1, "ATZ" + CHR$(13)
70 T$ = ""
80 T = TIMER
90 DO
100 LOOP UNTIL TIMER > T + 5
105 REM Change the line below to include international access code if required
110 PRINT #1, "AT DT 3034944774" + CHR$(13)
120 T = TIMER
130 DO
140 LOOP UNTIL TIMER > T + 60
150 PRINT
160 PRINT T$
170 CLOSE 1
180 END
190 '
200 L$ = INPUT$(1, #1)
210 PRINT L$;
220 RETURN

Appendix B: BIOS/DOS Function Calls Involving Time

BIOS Read/Set Real-Time Clock  INT 1A, Function 02 (Read) or 03 (Set)
    Registers set or returned are:

    CH = hours (BCD format)
    CL = minutes (BCD format) 
    DH = seconds (BCD format)
    DL = daylight savings time flag


DOS Get Time        DOS INT 21, Function 2Ch
    This will retrieve the current time on a DOS PC, and is used as follows:
    
	AH = 2C
    
	Registers returned are:
    
	CH = hours, CL = minutes, DH = seconds, DL = hundredths


DOS Set Time        DOS INT 21, Function 2Dh
   This will set current time on a DOS PC as follows:

   AH = 2D

   Registers to be set are:

   CH = hours, CL = minutes, DH = seconds, DL = hundredths

   Note that most PCs cannot and do not maintain time in resolution
   of hundredths of a second. The maximum possible resolution is 0.05493 seconds 
   (1/18.20648).


DOS Get Date        INT 21h, Function 2Ah
   AH = 2A

   Registers returned are:

   CX = Year (1980 to 2099)
   DH = Month (1 to 12) 
   DL = Day (1 to 31) 
   AL = Day of Week (0=Sunday)


DOS Set Date        INT 21h, Function 2Bh
   AH = 2B

   Registers to be set are:

   CX = Year (1980 to 2099) 
   DH = Month (1 to 12)  
   DL = Day  (1 to 31)  
   AL = Day of Week (0=Sunday))

Appendix C: NetWare Time at the Low Level

Format of the LOGIN_CONTROL Bindery Property
Offset    Field                            Size Type    Comment  
0         Account Expiration Date          3    bytes   Yr Mn Dy 
3         Account Disabled Flag            1    byte    00h or FFh 
4         Password Expiration Date         3    bytes   Yr Mn Dy  
7         Grace Logins Remaining           1    byte    FFh=unlimited
8         Password Expiration Interval     2    word    Days 
10        Grace Login Reset Value          1    byte    
11        Minimum Password Length          1    byte
12        Maximum Concurrent Connections   2    word
14        Allowed Login Time Bitmap        42   bytes   1 bit=1/2 hr 
56        Last Login Date and Time         6    bytes   YMD HMS  
62        Restriction Flags                1    byte
63        Unused                           1    byte
64        Maximum Disk Usage in Blocks     4    long    Block=4k 
68        Bad Login Count                  2    word    
70        Next Reset Time                  4    long    
74        Bad Login Address                14   bytes   net:node:socket  
Client SDK API calls for getting and setting time  
NWGetFileServerDateAndTime is defined in the Client SDK as:

NWCCODE NWAPI NWGetFileServerDateAndTime(
  NWCONN_HANDLE conn,
  BYTE NWPTR dateTimeBuffer);

NWSetFileServerDateAndTime is defined in the Client SDK as:

NWCCODE NWAPI NWSetFileServerDateAndTime(  
  NWCONN_HANDLE conn,
  BYTE NWPTR dateTimeBuffer);

Both of these calls use a buffer which has the structure:

Byte  Value          Range
0     Year           80-179
1     Month          1-12
2     Day            1-31
3     Hour           0-23
4     Minute         0-59
5     Second         0-59
6     Day of Week    0-6, 0=Sunday

Appendix D: Time Synchronization Solutions Guide

The following list provides details of some manufacturers and suppliers of hardware and software for maintaining DOS and NetWare Time. Please note that inclusion in this list does not constitute certification or recommendation of any of these products.

Software  : Time Master
Hardware  : Contact MDI for details
Sources   : WWVB, DCF77, NIST, NRC

Supplier  : MDI, 311 B Avenue, Suite A
            Lake Oswego
            Oregon 97034
			USA

Telephone : +1 503 635 6370
Fax       : +1 503 636 9501

Provides a Time Master (TM.NLM) and Time Slave (TS.NLM) which
may be used to synchronize time on 2.x, 3.x and 4.x servers as
well as device drivers for DOS and OS/2 workstations.

Software  : RTCTOOLS.NLM
Hardware  : CTS-10 Card
Source    : WWVB

Supplier  : Odetics, Inc via
            Personal Computer Tools
            90 Industrial Park RD
			Hingham, MA 02043
            USA

Telephone : +1 800 767 6728
Fax       : +1 617 740 2728

Provides hardware card, antenna and RTCTOOLS.NLM software for
receiving WWVB broadcast.


Software  : Cadence
Hardware  : COM1:/COM2: Serial Port
Source    : NIST 

Supplier  : C-Note Software, Inc
            St Louis, MO

Telephone : +1 314 997 9689
Fax       : +1 314 997 9666
Internet  : C-NOTE@POLYGON.COM

Provides NLM which can synchronize to NIST and NBS time sources
via dial-up modem.

Software  : WANTimes
Hardware  : COM1:/COM2: Serial Port
Source    : NIST

Supplier  : Legal File Software
CSERVE    : 71224,161

NetWare client software which dials NIST then sets the clocks
of all File Servers to the time received. This software can be
downloaded from the Compuserve NOVUSER forum as the file WANTIM.ZIP.


Software  : DOS Device Driver
Hardware  : Rugby Clock Receiver Kit
Source    : MSF Rugby

Supplier  : Maplin Electronics 
            PO Box 3,          
            Rayleigh, Essex  
			SS6 8LR 
			UK

Telephone : +44 702 552911

Provides software and hardware in kit form for DOS PCs to allow
synchronization to the MSF Rugby clock. Can be used with NSETTIME.EXE
to allow setting of the server time.

Software  : DOS Device Driver
Hardware  : DCF77 Clock
Source    : DCF77

Supplier  : Conrod Electronics   
            PO Box 12,         
            7500 AA Enschede  
			Netherlands

Tel       : +31 53 282000
Fax       : +31 53 283075

Provides software and hardware in kit or ready-built form for
DOS PCs to allow synchronization to the DCF77 Mainflingen clock.


Software  : NSETTIME.EXE
Hardware  : None
Source    : Workstation Time
Supplier  : Networth Inc, BBS

Tel       : +1 214 869 1331
Fax       : +1 214 556 0841
BBS       : +1 214 869 2959

Program available on Networth BBS which sets the File Server time
to the current workstation time. Can be used together with any
of the DOS time synchronization packages to set the time on one
or more file server.

* Originally published in Novell AppNotes


Disclaimer

The origin of this information may be internal or external to Novell. While Novell makes all reasonable efforts to verify this information, Novell does not make explicit or implied claims to its validity.

© Copyright Micro Focus or one of its affiliates