Chapter 14. UNIX and VMS Platform-Specific Notes

Apollo

FLEXlm v2.4 executables and later will not run on Apollo SR10.1. The FLEXlm kit, however, contains everything required to re-build all executables on these Apollo releases. If you need to support SR10.1, you will need to re-build lmgrd, the FLEXlm utilities, and your vendor daemon on SR10.1.

DG

On DG systems the daemon lockfile MUST be on a local filesystem (not NFS-mounted).

HP

The /dev/lan0 device must be readable to obtain an ethernet hostid. The uname -i hostid is preferable for this reason, and because ethernet is not always present.

In version 2.4, /dev/lan0 must have read and write permissions for everyone. Ethernet and FDDI are known to be supported devices, although earlier versions of HPUX had a bug with FDDI as hostid.

IBM

IBM changed the system call that returns the node id (uname) several times; most recently, in AIX 3.1, the low-order decimal digit of the machine serial number was left off. The AIX 3003 version has a corrected system call which returns the entire serial number. This means that the hostid of your customer's RS/6000 system CAN CHANGE when they upgrade OS revisions. We know of no workaround other than to re-issue passwords.

We believe that this condition stabilized in AIX v3.1.

NCR

Redundant servers are not supported on NCR systems, due to a bug in the accept() networking call on these platforms.

The permissions on the /dev/lan0 device must be readable to obtain a hostid.

SGI

On SGI systems, NIS is not enabled in your application by default. In order to build your program (and vendor daemon) for NIS support on SGI systems, add the following libraries at the end of your ld command:

-lsun -lbsd -lc_s

SVR4 Systems

All SVR4 systems, including Solaris 2.x, require linking with -lsocket -lnsl. Solaris 2.x also requires -lintl. (OSF/1 does NOT require these link flags, although it is otherwise similar to SVR4).

Ultrix

The Ultrix ethernet address lookup algorithm will search all ethernet devices, if the device is not found in the vendor-supplied or standard tables. The search order is now:

  1. vendor-supplied table.

  2. standard table.

  3. generic lookup.

VMS

Redundant server hosts are not supported on VMS.

FLEXlm client routines continue to use SIGALRM and setitimer(), as they do on the UNIX version. The FLEXlm implementation of setitimer() uses the alarm() call on VMS.

On VMS, the SYSNAM and SYSLCK privileges are required to run the daemons.

Vendor daemons support up to 255 clients each.

Communications transport

The VMS version of FLEXlm uses DECnet as a transport, rather than TCP/IP. This means that VMS servers cannot serve UNIX clients, and UNIX servers cannot serve VMS clients.

Special AST Considerations

If you let FLEXlm do its checking automatically, the check routine is implemented with signals (i.e., it runs at AST level). Therefore, if you use any of the following handler routines:

  • LM_A_USER_RECONNECT

  • LM_A_RECONNECT_DONE

  • LM_A_USER_EXITCALL

  • LM_A_PERIODIC_CALL

you should be careful to code them such that they can work at AST level. Note that you can call any of the FLEXlm client routines (routines that start with “lc_”) from AST level.

If you use your own encryption routine (the “crypt” member of the setup struct), this routine must be coded to work properly from AST level.

DECnet Logical Links

Each FLEXlm client requires a pair of DECnet logical links. A typical default for the maximum # of logical links is 32, therefore, you will need to increase this parameter on the node that runs your vendor daemon(s). Do this with the following NCP command sequence.

$ mcr ncp
NCP> set exec links 100

To show how many logical links your system is configured for, do the following:

$ mcr ncp
NCP> show exec char

The result will be displayed as “MAXIMUM LINKS”.

Setting the number of links to 100 should allow for 30 FLEXlm clients and a sufficient number of links for other uses. (If your current number of links is greater than 32, increase it accordingly).

VMS Ethernet Device Support

VMS supported ethernet devices:

_xqa0: 

DELQA, DEQNA, DESQA

_xea0: 

DEUNA, DELUA

_esa0: 

DESVA

_eta0: 

DEBNA

_ewa0: 

Alpha

_eza0: 

uVax 4000

_exa0: 

Vax 9000

If your customer's device is not one of the supported devices, they can “add support” by doing an assign. The standard table includes the logical device names “flexlm_hostid0”, “flexlm_hostid1”, “flexlm_hostid2”, and “flexlm_hostid3”. Assuming that your customer has ethernet device qqa0:, the following assign statement would add device qqa0:

$ assign _qqa0: flexlm_hostid0

This assignment would be done in the process that runs the daemon (for floating licenses) or the process that runs your application (for nodelocked licenses).