This appendix contains the following sections:
Introduction
License Administration
Overview
Providing For Uninterrupted FLEXlm Operation
Daemon Options File
License Administration Tools
lmcksum
lmdiag (Windows only)
lmdown
lmgrd
lmhostid
lmremove
lmreread
lmstat
lmswitchr
lmver
License Administration Tools for Windows
LMTOOLS for Windows
FLEXlm License Manager for Windows
The Daemon Log File
Informational Messages
Configuration Problem Messages
Daemon Software Error Messages
FLEXlm License Errors
Frequently Asked Questions (FAQs)
License File Questions
FLEXlm License Errors
Windows Questions
TASKING Questions
FLEXlm License Errors
Using FLEXlm for Floating Licenses
This appendix discusses Globetrotter Software's Flexible License Manager and how it is integrated into the TASKING toolchain. It also contains descriptions of the Flexible License Manager license administration tools that are included with the package, the daemon log file and its contents, and the use of daemon options files to customize your use of the TASKING toolchain.
The Flexible License Manager (FLEXlm) is a set of utilities that, when incorporated into software such as the TASKING toolchain, provides for managing access to the software.
The following terms are used to describe FLEXlm concepts and software components:
feature A feature could be any of the following:
license The right to use a feature. FLEXlm restricts licenses for features by counting the number of licenses for features in use when new requests are made by the application software.
client A TASKING application program.
daemon A process that "serves" clients. Sometimes referred to as a server.
vendor daemon
The daemon that dispenses licenses for the requested features. This daemon is built by an application's vendor, and contains the vendor's personal encryption code. Tasking
is the vendor daemon for the TASKING software.
license daemon
The daemon process that sends client processes to the correct vendor daemon on the correct machine. The same license daemon is used by all applications from all vendors, as this daemon neither performs encryption nor dispenses licenses. The license daemon processes no user requests on its own, but forwards these requests to other daemons (the vendor daemons).
server node A computer system that is running both the license and vendor daemon software. The server node will contain all the dynamic information regarding the usage of all the features.
license file An end-user specific file that contains descriptions of the server nodes that can run the license daemons, the various vendor daemons, and the restrictions for all the licensed features.
The TASKING software is granted permission to run by FLEXlm daemons; the daemons are started when the TASKING toolchain is installed and run continuously thereafter. Information needed by the FLEXlm daemons to perform access management is contained in a license data file that is created during the toolchain installation process. As part of their normal operation, the daemons log their actions in a daemon log file, which can be used to monitor usage of the TASKING toolchain.
The following sections discuss:
For additional information regarding the use of FLEXlm, refer to the chapter Software Installation.
TASKING products licensed through FLEXlm contain a number of utilities for managing licenses. These utilities are bundled in the form of an extra product under the name SW000098. TASKING products themselves contain two additional files for FLEXlm in a flexlm subdirectory:
If you have already installed FLEXlm (e.g. as part of another product) then it is not needed to install the bundled SW000098. After installing SW000098 on UNIX, the directory /usr/local/flexlm will contain two subdirectories, bin and licenses. After installing SW000098 on Windows the directory c:\flexlm will contain the subdirectory bin. The exact location may differ if FLEXlm has already been installed as part of a non-TASKING product but in general there will be a directory for executables such as bin. That directory must contain a copy of the Tasking daemon shipped with every TASKING product. It also contains the files:
Next to it, a license file must be present containing the information of all licenses. This file is usually called license.dat. The default location of the license file is in directory c:\flexlm for Windows and in /usr/local/flexlm/licenses for UNIX. If you did install SW000098 then the licenses directory on UNIX will be empty, and on Windows the file license.dat will be empty. In that case you can copy the license.dat file from the product to the licenses directory after filling in the data from your "License Information Form".
Be very careful not to overwrite an
existing license.dat file because it contains valuable data.
Example license.dat:
SERVER HOSTNAME HOSTID PORT DAEMON Tasking /usr/local/flexlm/bin/Tasking FEATURE SW008002-32 Tasking 3.000 EXPDATE NUSERS PASSWORD SERIAL
After modifications from a license data sheet (example):
SERVER elliot 5100520c 7594 DAEMON Tasking /usr/local/flexlm/bin/Tasking FEATURE SW008002-32 Tasking 3.000 1-jan-00 4 0B1810310210A6894 "123456"
If the license.dat file already exists then you should make sure that it contains the DAEMON and FEATURE lines from your license data sheet. An appropriate SERVER line should already be present in that case. You should only add a new SERVER line if no SERVER line is present. The third field of the DAEMON line is the pathname to the Tasking daemon and you may change it if necessary.
The default location for the license file on Windows is:
c:\flexlm\license.dat
On UNIX this is:
/usr/local/flexlm/licenses/license.dat
If the pathname of the resulting license file differs from this default location then you must set the environment variable LM_LICENSE_FILE to the correct pathname. If you have more than one product using the FLEXlm license manager you can specify multiple license files by separating each pathname (lfpath) with a ';' (on UNIX also ':') :
Windows:
set LM_LICENSE_FILE=lfpath[;lfpath]...
UNIX:
setenv LM_LICENSE_FILE lfpath[:lfpath]...
If you are running the TASKING software on multiple nodes, you have three options for making your license file available on all the machines:
1. Place the license file in a partition which is available (via NFS on Unix systems) to all nodes in the network that need the license file.
2. Copy the license file to all of the nodes where it is needed.
3. Set LM_LICENSE_FILE to "port@host", where host and port come from the SERVER line in the license file.
When the main license daemon lmgrd already runs it is sufficient to type the command:
lmreread
for notifying the daemon that the license.dat file has been changed. Otherwise, you must type the command:
lmgrd >/usr/tmp/license.log &
Both commands reside in the flexlm bin directory mentioned before.
It is possible to customize the use of TASKING software using a daemon options file. This options file allows you to reserve licenses for specified users or groups of users, to restrict access to the TASKING toolchain, and to set software timeouts. The following table lists the keywords that are recognized at the start of a line of a daemon options file.
Keywords | Function |
RESERVE | Ensure that TASKING software will always be available to one or more users or on one or more host computer systems. |
INCLUDE | Specify a list of users who are allowed exclusive access to the TASKING software. |
EXCLUDE | Specify a list of users who are not allowed to use the TASKING software. |
GROUP | Specify a group of users for use in the other commands. |
TIMEOUT | Allow licenses that are idle for a specified time to be returned to the free pool, for use by someone else. |
NOLOG | Causes messages of the specified type to be filtered out of the daemon's log output. |
Table A-1: Daemon options file keywords
In order to use the daemon options capability, you must create a daemon options file and list its pathname as the fourth field on the DAEMON line for the Tasking daemon in the license file. For example, if the daemon options were in file /usr/local/flexlm/Tasking.opt (UNIX), then you would modify the license file DAEMON line as follows:
DAEMON Tasking /usr/local/Tasking /usr/local/flexlm/Tasking.opt
A daemon options file consists of lines in the following format:
RESERVE number feature {USER | HOST | DISPLAY | GROUP} name INCLUDE feature {USER | HOST | DISPLAY | GROUP} name EXCLUDE feature {USER | HOST | DISPLAY | GROUP} name GROUP name <list_of_users> TIMEOUT feature timeout_in_seconds NOLOG {IN | OUT | DENIED | QUEUED} REPORTLOG file
Lines beginning with the sharp character (#) are ignored, and can be used as comments. For example, the following options file would reserve one copy of feature SWxxxxxx-xx for user "pat", three copies for user "lee", and one copy for anyone on a computer with the hostname of "terry"; and would cause QUEUED messages to be omitted from the log file. In addition, user "joe" and group "pinheads" would not be allowed to use the feature SWxxxxxx-xx:
GROUP pinheads moe larry curley RESERVE 1 SWxxxxxx-xx USER pat RESERVE 3 SWxxxxxx-xx USER lee RESERVE 1 SWxxxxxx-xx HOST terry EXCLUDE SWxxxxxx-xx USER joe EXCLUDE SWxxxxxx-xx GROUP pinheads NOLOG QUEUED
The following utilities are provided to facilitate license management by your system administrator. In certain cases, execution access to a utility is restricted to users with root privileges. Complete descriptions of these utilities are provided at the end of this section.
Prints license checksums.
Diagnoses license checkout problems.
Gracefully shuts down all license daemons (both lmgrd all vendor daemons, such as Tasking) on the license server.
The main daemon program for FLEXlm.
Reports the hostid of a system.
Removes a single user's license for a specified feature.
Causes the license daemon to reread the license file and start any new vendor daemons.
Helps you monitor the status of all network licensing activities.
Switches the report log file.
Reports the FLEXlm version of a library or binary file.
This is a graphical Windows version of the license administration tools.
lmcksum - print license checksums
lmcksum [ -c license_file ] [ -k ]
The lmcksum program will perform a checksum of a license file. This is useful to verify data entry errors at your location. lmcksum will print a line-by-line checksum for the file as well as an overall file checksum.
The following fields participate in the checksum:
-c license_file
Use the specified license_file. If no -c
option is specified, lmcksum looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmcksum looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
-k Case-sensitive checksum. If this option is specified, lmcksum will compute the checksum using the exact case of the FEATURE's and FEATURESET's encryption code.
lmdiag - diagnose license checkout problems
lmdiag [ -c license_file ] [ -n ] [ feature ]
lmdiag (Windows only) allows you to diagnose problems when you cannot check out a license.
If no feature is specified, lmdiag will operate on all features in the license file(s) in your path. lmdiag will first print information about the license, then attempt to check out each license. If the checkout succeeds, lmdiag will indicate this. If the checkout fails, lmdiag will give you the reason for the failure. If the checkout fails because lmdiag cannot connect to the license server, then you have the option of running "extended connection diagnostics".
These extended diagnostics attempt to connect to each port on the license server node, and can detect if the port number in the license file is incorrect. lmdiag will indicate each port number that is listening, and if it is an lmgrd process, lmdiag will indicate this as well. If lmdiag finds the vendor daemon for the feature being tested, then it will indicate the correct port number for the license file to correct the problem.
feature Diagnose this feature only.
-c license_file
Diagnose the specified license_file. If no -c
option is specified, lmdiag looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmdiag looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
-n Run in non-interactive mode; lmdiag will not prompt for any input in this mode. In this mode, extended connection diagnostics are not available.
lmdown - graceful shutdown of all license daemons
lmdown [ -c license_file ] [ -q ]
The lmdown utility allows for the graceful shutdown of all license daemons (both lmgrd and all vendor daemons, such as Tasking) on all nodes. You may want to protect the execution of lmdown, since shutting down the servers causes users to lose their licenses. See the -p option in Section 3.4, lmgrd .
lmdown sends a message to every license daemon asking it to shut down. The license daemons write out their last messages to the log file, close the file, and exit. All licenses which have been given out by those daemons will be revoked, so that the next time a client program goes to verify his license, it will not be valid.
-c license_file
Use the specified license_file. If no -c
option is specified, lmdown looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmdown looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
-q Quiet mode. If this switch is not specified, lmdown asks for confirmation before asking the license daemons to shut down. If this switch is specified, lmdown will not ask for confirmation.
lmgrd - flexible license manager daemon
lmgrd [ -c license_file ] [ -l logfile ] [-2 -p] [ -t timeout ] [ -s interval ]
lmgrd is the main daemon program for the FLEXlm distributed license management system. When invoked, it looks for a license file containing all required information about vendors and features. On UNIX systems, it is strongly recommended that lmgrd be run as a non-privileged user (not root).
-c license_file
Use the specified license_file. If no -c
option is specified, lmgrd looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmgrd looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
-l logfile Specifies the output log file to use. Instead of using the -l option you can use output redirection (> or >>) to specify the name of the output log file.
-2 -p Restricts usage of lmdown, lmreread, and lmremove to a FLEXlm administrator who is by default root. If there is a UNIX group called "lmadmin" then use is restricted to only members of that group. If root is not a member of this group, then root does not have permission to use any of the above utilities.
-t timeout Specifies the timeout interval, in seconds, during which the license daemon must complete its connection to other daemons if operating in multi-server mode. The default value is 10 seconds. A larger value may be desirable if the daemons are being run on busy systems or a very heavily loaded network.
-s interval Specifies the log file timestamp interval, in minutes. The default is 360 minutes. This means that every six hours lmgrd logs the time in the log file.
lmhostid - report the hostid of a system
lmhostid
lmhostid calls the FLEXlm version of gethostid and displays the results.
The output of lmhostid looks like this:
lmhostid - Copyright (C) 1989, 1999 Globetrotter Software, Inc. The FLEXlm host ID of this machine is "1200abcd"
lmhostid has no command line options.
lmremove - remove specific licenses and return them to license pool
lmremove [ -c license_file ] feature user host [ display ]
The lmremove utility allows the system administrator to remove a single user's license for a specified feature. This could be required in the case where the licensed user was running the software on a node that subsequently crashed. This situation will sometimes cause the license to remain unusable. lmremove will allow the license to return to the pool of available licenses.
lmremove will remove all instances of "user" on node "host" on display "display" from usage of "feature". If the optional -c file is specified, the indicated file will be used as the license file. Since removing a user's license can be disruptive, execution of lmremove is restricted to users with root privileges.
-c license_file
Use the specified license_file. If no -c
option is specified, lmremove looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmremove looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
lmreread - tells the license daemon to reread the license file
lmreread [ -c license_file ]
lmreread allows the system administrator to tell the license daemon to reread the license file. This can be useful if the data in the license file has changed; the new data can be loaded into the license daemon without shutting down and restarting it.
The license administrator may want to protect the execution of lmreread. See the -p option in Section 3.4 , lmgrd for details about securing access to lmreread.
lmreread uses the license file from the command line (or the default file, if none specified) only to find the license daemon to send it the command to reread the license file. The license daemon will always reread the file that it loaded from the original path. If you need to change the path to the license file read by the license daemon, then you must shut down the daemon and restart it with that new license file path.
You cannot use lmreread if the SERVER node names or port numbers have been changed in the license file. In this case, you must shut down the daemon and restart it in order for those changes to take effect.
lmreread does not change any option information specified in an options file. If the new license file specifies a different options file, that information is ignored. If you need to reread the options file, you must shut down (lmdown) the daemon and restart it.
-c license_file
Use the specified license_file. If no -c
option is specified, lmreread looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmreread looks
for the file license.dat in the default location.
lmstat - report status on license manager daemons and feature usage
lmstat [ -a ] [ -A
] [-c license_file ] [ -f
[feature] ]
[ -l [regular_expression] ] [ -s [server] ] [ -S [daemon]
] [ -t timeout ]
License administration is simplified by the lmstat utility. lmstat allows you to instantly monitor the status of all network licensing activities. lmstat allows a system administrator to monitor license management operations including:
-a Display all information.
-A List all active licenses.
-c license_file
Use the specified license_file. If no -c
option is specified, lmstat looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmstat looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
-f [feature] List all users of the specified feature(s).
-l [regular_expression]
List all users of the features matching the given regular_expression.
-s [server] Display the status of the specified server node(s).
-S [daemon] List all users of the specified daemon's features.
-t timeout Specifies the amount of time, in seconds, lmstat waits to establish contact with the servers. The default value is 10 seconds. A larger value may be desirable if the daemons are being run on busy systems or a very heavily loaded network.
lmswitchr - switch the report log file
lmswitchr [ -c license_file ] feature new-file
lmswitchr [ -c license_file ] vendor new-file
lmswitchr (Windows only) switches the report writer (REPORTLOG) log file. It will also start a new REPORTLOG file if one does not already exist.
feature Any feature this daemon supports.
vendor The name of the vendor daemon (such as Tasking).
new-file New file path.
-c license_file
Use the specified license_file. If no -c
option is specified, lmswitchr looks for the environment variable LM_LICENSE_FILE in order to find the license file to use. If that environment variable is not set, lmswitchr looks
for the file c:\flexlm\license.dat (Windows), or /usr/local/flexlm/licenses/license.dat (UNIX).
lmver - report the FLEXlm version of a library or binary file
lmver filename
The lmver utility reports the FLEXlm version of a library or binary file.
Alternatively, on UNIX systems, you can use the following commands to get the FLEXlm version of a binary:
filename Name of the executable of the product.
For the 32 Bit Windows Platforms, an lmtools.exe Windows program is provided. It has the same functionality as listed in the previous sections but is graphically-oriented. Simply run the program (Start | Programs | TASKING FLEXlm | FLEXlm Tools) and choose a button for the functionality required. Refer to the previous sections for information about the options of each feature. The command line interface is replaced by pop-up dialogs that can be filled out.The central EDIT field is where the license file path is placed. This will be used for all other functions and replaces the "-c license_file" argument in the other utilities.
The HOSTID button displays the hostid's for the computer on which the program is running. The TIME button prints out the system's internal time settings, intended to diagnose any time zone problems. The TCP Settings button is intended to fix a bug in the Microsoft TCP protocol stack which has a symptom of very slow connections to computers. After pressing this button, the system will need to be rebooted for the settings to become effective.
lmgrd.exe can be run manually or using the graphical Windows tool. You can start this tool from the FLEXlm program folder. Click on Start | Programs | TASKING FLEXlm | FLEXlm Tools
From the Control tab you can start, stop, and check the status of your license server. Select the Setup tab to enter information about your license server.
Select the Control tab and click the Start button to start your license server. lmgrd.exe will be launched as a background application with the license file and debug log file locations passed as parameters.
If you want lmgrd.exe to start automatically on NT, select the Use NT Services check box and lmgrd.exe will be installed as an NT service. Next, select the Start Server at Power-UP check box.
The Licenses tab provides information about the license file and the Advanced tab allows you to perform diagnostics and check versions.
The FLEXlm daemons all generate log files containing messages in the following format:
mm/dd hh:mm
(DAEMON name) message
Where:
mm/dd hh:mm Is the month/day hour:minute that the message was logged.
DAEMON name Either "license daemon" or the
string from the DAEMON line that describes your daemon.
In the case where a single copy of the daemon cannot handle all of the requested licenses, an optional "
_" followed by a number indicates that this message comes from a forked daemon.
message The text of the message.
The log files can be used to:
The messages are grouped below into the above three categories, with each message followed by a brief description of its meaning.
This daemon is connected to its peer on node node.
The license daemons log this message when a quorum is up and everyone has selected a master.
An attempt was made to configure a demo version of the software for more than one server host.
user was denied access to N licenses of feature. This message may indicate a need to purchase more licenses.
All daemons list the reason that the daemon has exited.
feature has passed its expiration date.
user has checked back in N licenses of feature at mm/ dd/yy hh:mm.
user has checked in N licenses by virtue of the fact that his server died.
The license daemon was started.
A daemon can no longer communicate with its peer on node host, which can cause the clients to have to reconnect, or cause the number of daemons to go below the minimum number, in which case clients may start exiting. If the license daemons lose the connection to the master, they will kill all the vendor daemons; vendor daemons will shut themselves down.
The daemon lost quorum, so will process only connection requests from other daemons.
The license daemon received fatal signal nnn.
The license daemon has detected that multiple copies of vendor daemon xxx are running. The user should kill all xxx daemon processes and re-start the license daemon.
user has checked out N licenses of feature at mm/ dd/yy hh:mm
The top-level daemon logs this message when one of the child daemons dies.
A license of feature is reserved for either user name or host name.
Vendor daemon xxx was restarted at internet port nnn.
The license servers try to bind their sockets for approximately 6 minutes if they detect address in use errors.
This license daemon has selected an existing master (node) as the master.
A daemon was requested to shut down via a user-generated kill command.
A (possibly new) server was started for the features listed.
The license daemon is shutting down the vendor daemon xxx.
A vendor daemon logs this message when a shutdown was requested by the license daemon.
The license daemon logs this message whenever it starts a new vendor daemon.
The daemon is attempting a connection to node.
This daemon was run on an invalid hostname.
The hostid is wrong for hostname.
The specified feature name has a bad encryption code.
The options file specified in the license file could not be opened.
The daemons could not agree on a master.
This message is logged when all the connections to a server are lost, which often indicates a network problem.
The vendor daemon has a problem with its lock file, usually because of an attempt to run more than one copy of the daemon on a single node. Locate the other daemon that is running via a ps command, and kill it with kill -9.
The license file does not contain a DAEMON line for daemon.
The TCP license service did not exist in /etc/services.
There is no feature line for feat in the license file.
A vendor daemon found no features to serve. This could be caused by bad data in the license file.
The user has requested a feature that this vendor daemon does not support. This can happen for a number of reasons: the license file is bad, the feature has expired, or the daemon is accessing the wrong license file.
The hostname specified on a SERVER line in the license file does not exist in the network database (probably /etc/hosts).
This message is logged when all the connections to a server are lost. This probably indicates a network problem.
The license daemon logs this message if there are no DAEMON lines in the license file. Since there are no vendor daemons to start, there is nothing to do.
A vendor daemon logs this error if it cannot find its own DAEMON name in the license file.
An error was detected in the accept system call.
A vendor daemon was started with no master selected. This is an internal consistency error in the daemons.
A top-level vendor daemon received an invalid PID message from one of its children (daemon number xxx).
An invalid "server connect" message was received.
The pipe call failed.
A malloc error. Check swap space.
The daemon could not connect to node.
The vendor server could not send its PID to the top-level server in the hierarchy.
A connection request was made to DAEMON, but this vendor daemon is not DAEMON.
A connection request came in from another server without a DAEMON name.
A daemon could not kill its child.
A vendor daemon was started without an internet port.
The "top-level" daemon detected one of its sub-daemon's death. In trying to restart the chain of sub-daemons, it was unable to get the file descriptors to set up the pipes to communicate. This is a fatal error, and the daemons must be re-started.
An error in a read system call was detected.
The hierarchy of vendor daemons has become confused over who holds the control token. This is an internal error.
When a daemon is returning a reservation to the "free reservation" list, it could not find the listhead of features.
An error in a select system call was detected.
The server is exiting. This is normally due to an error.
This vendor daemon was sent a "server hello" message that was destined for a different DAEMON.
Normally, the top-level vendor daemon sends no unsolicited messages. If one arrives, this message is logged. This is a bug.
An internal inconsistency was detected in the daemon's option list.
Check the contents of the license file using the license data sheet for the product. Correct the license file and run the lmreread command. However, do not change the last (fourth) field of a SERVER line in the license file. This cannot have any effect on the error message but changing it will cause other problems.
If this is a first time install then follow the procedure for the error message:
FLEXlm license error, encryption code in license file is inconsistent
because there may be a typo in the fourth field of a FEATURE line of your license file. In all other cases you need a new license because the current license is for an older version of the product.
Replace the FEATURE line for the old version of the product with a FEATURE line for the new version (it can be found on the new license data sheet). Run the lmreread command afterwards. You can have only one version of a feature (previous versions of the product will continue to work).
Make sure the license file exists. If the pathname printed on the line after the error message is incorrect, correct this by setting the LM_LICENSE_FILE environment variable to the full pathname of the license file.
Every user needs to have read access on the license file and at least execute access on every directory component in the pathname of the license file. Write access is never needed. Read access on directories is recommended.
Check the license file. There should be a line starting with:
FEATURE SWiiiiii-jj
where "iiiiii" is a six digit software code and "jj" is
a two digit host code for identifying a compatible host architecture. During product installations the product code is shown, e.g. SW008002, SW019002. The number in
the software code is the same as the number in the product code except
that the first number may contain an extra leading zero (it must be six
digits long).
The line after the license error message describes the expected feature format and includes the host code.
Correct the license file using the license data sheet for the product
and run the lmreread command. There is one catch: do not add
extra SERVER lines or change existing SERVER lines in the license file.
If the LM_LICENSE_FILE variable has been set to the format number@host then see first the solution for the message:
FLEXlm license error, no such feature exists
Run the lmreread program to inform the license server about a changed license data file. If lmreread succeeds informing the license server but the error message persists, there are basically three possibilities:
1. The license key is incorrect. If this is the case then there must be an error message in the log file of lmgrd. Correct the key using the license data sheet for the product. Finally rerun lmreread. The log file of lmgrd is usually specified to lmgrd at startup with the -l option or with >.
2. Your network has more than one FLEXlm license server daemon and the default license file location for lmreread differs from the default assumed by the program. Also, there must be more than one license file. Try one of the following solutions on the same host which produced the error message:
- type:
lmreread -c /usr/local/flexlm/licenses/license.dat
- set LM_LICENSE_FILE to the license file location and retry the lmreread command.
- use the lmreread program supplied with the product SW000098, Flexible License Manager. SW000098 is bundled with all TASKING products.
3. There is a protocol version mismatch between lmgrd and the daemon with the name "Tasking" (the vendor daemon according to FLEXlm terminology) or there is some other internal error. These errors are always written to the log file of lmgrd. The solution is to upgrade the lmgrd daemon to the one supplied in SW000098, the bundled Flexible License Manager product.
On the other hand, if lmreread complains about not being able to connect to the license server then follow the procedure described in the next section for the error message "Cannot read license file data from server". The only difference with the current situation is that not the product but a license management utility shows a connect problem.
This indicates that the program could not connect to the license server daemon. This can have a number of causes. If the program did not immediately print the error message but waited for about 30 seconds (this can vary) then probably the license server host is down or unreachable. If the program responded immediately with the error message then check the following if the LM_LICENSE_FILE variable has been set to the format number@host:
- is the number correct? It should match the fourth field of a SERVER line in the license file on the license server host. Also, the host name on that SERVER line should be the same as the host name set in the LM_LICENSE_FILE variable. Correct LM_LICENSE_FILE if necessary.
In any case one should verify if the license server daemon is running. Type the following command on the host where the license server daemon (lmgrd) is supposed to run.
On SunOS 4.x:
ps wwax | grep lmgrd | grep -v grep
On SunOS 5.x (Solaris 2.x):
ps -ef | grep lmgrd | grep -v grep
If the command does not produce any output then the license server daemon is not running. See below for an example how to start lmgrd.
Make sure that both license server daemon (lmgrd) and the program are using the same license data. All TASKING products use the license file /usr/local/flexlm/licenses/license.dat unless overruled by the environment variable LM_LICENSE_FILE. However, not all existing lmgrd daemons may use the same default. In case of doubt, specify the license file pathname with the -c option when starting the license server daemon. For example:
lmgrd -c /usr/local/flexlm/licenses/license.dat \ -l /usr/local/flexlm/licenses/license.log &
and set the LM_LICENSE_FILE environment variable to the license.dat pathname mentioned with the -c option of lmgrd before running any license based program (including lmreread, lmstat, lmdown). If lmgrd and the program run on different hosts, transparent access to the license file is assumed in the situation described above (e.g. NFS). If this is not the case, make a local copy of the license file (not recommended) or set LM_LICENSE_FILE to the form number@host, as described earlier.
If none of the above seems to apply (i.e. lmgrd was already running and LM_LICENSE_FILE has been set correctly) then it is very likely that there is a TCP port mismatch. The fourth field of a SERVER line in the license file specifies a TCP port number. That number can be changed without affecting any license. However, it must never be changed while the license server daemon is running. If it has been changed, change it back to the original value. If you do not know the original number anymore, restart the license server daemon after typing the following command on the license server host:
kill PID
where PID is the process id of lmgrd.
You don't have to combine license files. Each license file that has any 'counted' lines (the 'number of licenses' field is >0) requires a server. It's perfectly OK to have any number of separate license files, with different lmgrd server processes supporting each file. Moreover, since lmgrd is a lightweight process, for sites without system administrators, this is often the simplest (and therefore recommended) way to proceed. With v6+ lmgrd/lmdown/lmreread, you can stop/reread/restart a single vendor daemon (of any FLEXlm version). This makes combining licenses more attractive than previously. Also, if the application is v6+, using 'dir/*.lic' for license file management behaves like combining licenses without physically combining them.
Many system administrators, especially for larger sites, prefer to combine license files to ease administration of FLEXlm licenses. It's purely a matter of preference.
Yes. The FLEXlm date format uses a 4-digit year. Dates in the 20th century (19xx) can be abbreviated to the last 2 digits of the year (xx), and use of this feature is quite widespread. Dates in the year 2000 and beyond must specify all 4 year digits.
For Windows we deliver FLEXlm v6.1 and for UNIX we deliver v2.4.
If you're not combining license files from different vendors, the simplest thing to do is make sure you use the tools (especially lmgrd) that are shipped by each vendor.
lmgrd will always correctly support older versions of vendor daemons and applications, so it's always safe to use the latest version of lmgrd and the other FLEXlm utilities. If you've combined license files from 2 vendors, you must use the latest version of lmgrd.
If you've received 2 versions of a product from the same vendor, you must use the latest vendor daemon they sent you. An older vendor daemon with a newer client will cause communication errors.
Please ignore letters appended to FLEXlm versions, i.e., v2.4d. The appended letter indicates a patch, and does NOT indicate any compatibility differences. In particular, some elements of FLEXlm didn't require certain patches, so a 2.4 lmgrd will work successfully with a 2.4b vendor daemon.
Yes. Older FLEXlm license files are always valid with newer versions of FLEXlm.
The system being used as the server (where the FLEXlm License Manager is running) for Floating licenses, must be Windows NT. The FLEXlm License Manager does not run properly with Windows 95/98.
This is necessary for either obtaining the Ethernet card address, or to provide connectivity with a Netware License server.
TASKING will now offer the following types of licenses so you can purchase licenses based upon usage:
License | Description | Pricing |
Node Locked | This license can only be used on a specific system. It cannot be moved to another system. | The pricing for this license will be the current product pricing. |
Floating | This license requires a network (license server and a TCP/IP (or IPX/SPX) connection between clients and server) and can be used on any host system (using the same operating system) in the network. | The pricing for this license will be 50% higher than the node locked license. |
For all licenses, node locked or floating, you must provide information that is used to create a license key. For node locked licenses we must have the HOST ID. Floating licenses require the HOST ID and HOST NAME. The HOST ID is a unique identification of the machine, which is based upon different hardware depending upon host platform. The HOST NAME is the network name of the machine.
TASKING Logistics CANNOT ship ANY orders that do not include the HOST ID and/or HOST NAME information.
We have a software utility (tkhostid.exe) which will obtain and display the HOST ID so a customer can easily obtain this information. This utility is available from our web site, placed on all product CDs (which support FLEXlm), and from technical support. If you have already installed FLEXlm, you can also use lmhostid.
The software will not run.
When the TASKING product starts to run, it will try to obtain a license from the license server. The license server keeps track of the number of licenses already issued, and grants or denies the request. When the software has finished running, the license is kept by the license server for a period of time known as the "linger-time". If the same user requests the TASKING product again within the linger-time, he is granted the license again. If another user requests a license during the linger-time, his request is denied until the linger-time has finished
The length of the linger-time for both the PC and UNIX floating licenses is 5 minutes.
Yes. A customer can change the linger-time to be larger (but not shorter) than the time specified by TASKING.
You will need to contact Technical Support for temporary license keys due to a system crash or to move from one system to another system. You will then need to work with your local sales representative to obtain a permanent new license key.
Yes. A server on the internet will serve licenses to anyone else on the internet. This can be limited with the 'INTERNET=' attribute on the FEATURE line, which limits access to a range of internet addresses. You can also use the INCLUDE and EXCLUDE options in the daemon option file to allow (or deny) access to clients running on a range of internet addresses.
Many firewalls require that port numbers be specified to the firewall. FLEXlm v5 lmgrd supports this.
Yes, unless the client's whole system crashes. Assuming communications is TCP, the license is automatically freed immediately. If communications are UDP, then the license is freed after the UDP timeout, which is set by each vendor, but defaults to 45 minutes. UDP communications is normally only set by the end-user, so TCP should be assumed. If the whole system crashes, then the license is not freed, and you should use 'lmremove' to free the license.
FLEXlm applications send periodic heartbeats to the server to discover if it has died. What happens when the server dies is then up to the application. Some will simply continue periodically attempting to re-checkout the license when the server comes back up. Some will attempt to re-checkout a license a few times, and then, presumably with some warning, exit. Some GUI applications will present pop-ups to the user periodically letting them know the server is down and needs to be re-started.
99.44% of the time, if it's in use, it's because lmgrd is already running on the port - or was recently killed, and the port isn't freed yet. Assuming this is not the case, then use 'telnet host port' - if it says "can't connect", it's a free port.
No. There is no part of FLEXlm, lmgrd, vendor daemon
or application, that requires root permissions. In fact, it is strongly recommended
that you do not run the license server (lmgrd) as root, since
root processes can introduce security risks.
If lmgrd must be started from the root user (for example,
in a system boot script), we recommend that you use the 'su' command
to run lmgrd as a non-privileged user:
su username -c"/path/lmgrd -c /path/license.dat \ -l /path/log"
where username is a non-privileged user, and path is the correct paths to lmgrd, license.dat and debug log file. You will have to ensure that the vendor daemons listed in /path-to-license/license.dat have execute permissions for username. The paths to all the vendor daemons in the license file are listed on each DAEMON line.
It is not prudent to run any command, particularly a daemon, as root on UNIX, as it may pose a security risk to the Operating System. Therefore, we recommend that lmgrd be run as a non-privileged user (not 'root'). If you are starting lmgrd from a boot script, we recommend that you use
su username -c"umask 022; /path/lmgrd \ -c /path/license.dat -l /path/log"
to run lmgrd as a non-privileged user.
No, but partly this depends on the application, and end-user's use. A typical checkout request requires 5 messages and responses between client and server, and each message is < 150 bytes.
When a server is not receiving requests, it requires virtually no CPU time. When an application, or lmstat, requests the list of current users, this can significantly increase the amount of networking FLEXlm uses, depending on the number of current users. Also, prior to FLEXlm v5, use of 'port@host' can increase network load, since the license file is down-loaded from the server to the client. 'port@host' should be, if possible, limited to small license files (say < 50 features). In v5, 'port@host' actually improves performance.
Yes. FLEXlm has no direct interaction with NFS. FLEXlm uses an NFS-mounted file like any other application.
In general, these have no impact on FLEXlm. FLEXlm requires TCP/IP or SPX (Novell Netware). So long as TCP/IP works, FLEXlm will work.
Yes, although this behavior was improved in v3.0, and v6.0. When a license server and a client are located in different domains, fully-qualified host names have to be used. A fully-qualified hostname is of the form:
where node is the local hostname (usually returned by the 'hostname' command or 'uname -n') domain is the internet domain name, e.g. 'globes.com'.
To ensure success with FLEXlm across domains, do the following:
1. Make the sure the fully-qualified hostname is the name on the SERVER line of the license file.
2. Make sure ALL client nodes, as well as the server node,
are able to 'telnet' to that fully-qualified hostname. For example, if the host is locally
called 'speedy', and the domain name is 'corp.com', local systems will be
able to logon to speedy via 'telnet speedy'. But very often, 'telnet speedy.corp.com' will fail, locally.
Note that this telnet command will always succeed on hosts in other domains (assuming everything is configured correctly), since the network will resolve speedy.corp.com automatically.
3. Finally, there must be an 'alias' for speedy so it's also known locally as speedy.corp.com. This alias is added to the /etc/hosts file, or if NIS/Yellow Pages are being used, then it will have to be added to the NIS database. This requirement goes away in version 3.0 of FLEXlm.
If all components (application, lmgrd and vendor daemon) are v6.0 or higher, no aliases are required; the only requirement is that the fully-qualified domain name, or IP-address, is used as a hostname on the SERVER, or as a hostname in LM_LICENSE_FILE port@host, or @host.
Yes. However, some sites have broken NIS or DNS, which will cause FLEXlm to fail. In v5 of FLEXlm, NIS and DNS can be avoided to solve this problem. In particular, sometimes DNS is configured for a server that's not current available (e.g., a dial-up connection from a PC). Again, if DNS is configured, but the server is not available, FLEXlm will fail.
In addition, some systems, particularly Sun, SGI, require that applications be linked dynamically to support NIS or DNS. If a vendor links statically, this can cause the application to fail at a site that uses NIS or DNS. In these situations, the vendor will have to relink, or recompile with v5 FLEXlm. Vendors are strongly encouraged to use dynamic libraries for libc and networking libraries, since this tends to improve quality in general, as well as making NIS/DNS work.
On PCs, if a checkout seems to take 3 minutes and then fails, this is usually because the system is configured for a dial-up DNS server which is not currently available. The solution here is to turn off DNS.
Finally, hostnames must NOT have periods in the name. These are not legal hostnames, although PCs will allow you to enter them, and they will not work with DNS.
FLEXlm network traffic should be minimized. With the most common uses of FLEXlm, traffic is negligible. In particular, checkout, checkin and heartbeats use very little networking traffic. There are two items, however, which can send considerably more data and should be avoided or used sparingly: