Professional Documents
Culture Documents
p
P
Users Guide
Version 7.2
December 2000
COPYRIGHT
Contents
Chapter 1 Welcome to FLEXlm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1 Versions of FLEXlm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 How to Use This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Related Documents from GLOBEtrotter Software . . . . . . . . . . . . 10
Chapter 2 Introduction and Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Introduction to FLEXlm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 FLEXlm Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 The License Request Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Configuring FLEXlm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Getting Started Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Chapter 3 The License File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1 Specifying Location of the License File . . . . . . . . . . . . . . . . . . . . 18
3.2 License File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Sample License File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Types of License Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 Decimal Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6 License File Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Chapter 4 Multiple License Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1 Overview of Combining License Files . . . . . . . . . . . . . . . . . . . . . . 38
4.2 Using LM_LICENSE_FILE License File List . . . . . . . . . . . . . . . . 41
Chapter 5 Selecting Server Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1 Resources Used by the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2 Remote Mounted Disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3 Redundant Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4 Counted vs. Uncounted Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Welcome to FLEXlm
FLEXlm is the de facto standard network license manager used by over 2000
leading software vendors to control the use of their software products. If you
are a system administrator or user, chances are one or more of the products
currently on your network is licensed by FLEXlm.
This manual explains FLEXlm from an end user standpoint and describes how
to use the tools which are part of the standard FLEXlm distribution kit.
GLOBEtrotter Software also provides the SAMsuite asset management tool
for more advanced license server control and reporting. Please contact
GLOBEtrotter Software by email at info@globes.com or on the Internet at
http://www.globetrotter.com for more information about SAMsuite.
Keep in mind that certain topics (such as password encryption) are vendor-
specific and proprietary so we cannot document them in any detail. Also,
because FLEXlm does not enforce a particular licensing strategy, each
vendor’s implementation can have subtle differences. If you do not find out
what you need to know here, you should contact your vendor’s technical
support group.
9 Welcome to FLEXlm
Related Documents from GLOBEtrotter Software
11 Welcome to FLEXlm
Chapter 2
This chapter explains the basics of floating (network) licensing and gives a
quick overview of the components of FLEXlm. It explains where license
administrators have control and where end users have control. Section 2.5,
“Getting Started Checklist,” tells both license administrators and end users
how to start managing FLEXlm.
allowing you to make your license available if any two of the three server
nodes is running. Redundancy can be achieved with three-server redundant
servers or by using a license file list with any number of servers.
instructions supplied with the licensed application. If your site has software
from multiple vendors with incompatible license files (due to different sets of
servers), you can keep the data in separate files and set the LM_LICENSE_FILE
variable to reference multiple files.
It’s strongly recommended that you keep a link (on UNIX) or copy of the
license file in the vendor’s expected license location, so that users will not need
to set LM_LICENSE_FILE to run their applications. If the licenses are counted
(floating) this license should have a USE_SERVER line directly after the
SERVER line. For details, see Chapter 3, “The License File.” See also
Appendix C, “FLEXlm Environment Variables.”
2.2.4 The Application Program
The application program using FLEXlm is linked with the program module
(called the FLEXlm client library) that provides the communication with the
license server. On Windows, this module is called lmgrxxx.dll, where xxx
indicates the FLEXlm version. During execution, the application program
communicates with the vendor daemon to request a license.
Note: Refer to your vendor’s documentation before attempting to change file names,
locations, or contents.
Note: On VMS and Netware systems, there is no lmgrd and the vendor daemon is
run directly.
Note: You can only start lmgrd on the server node specified in the license file.
Note: If you are running redundant servers, you should have separate copies of the
license file (as well as the binaries for lmgrd and the vendor daemons) on each
server node. If you do not do this, you lose all the advantages of having
redundant servers, since the file server holding these files becomes a single
point of failure.
/bin/sleep 5
Please note the following about how this script was written:
• All paths are specified in full, because no paths can be assumed at boot
time.
• Because no paths are assumed, the vendor daemon must be in the same
directory as lmgrd, or the DAEMON lines must be edited to include the
full path to the vendor daemon.
Note: On IBM RS6000 systems, /etc/rc cannot be used, because TCP/IP is not
installed when this script is run. Instead, /etc/inittab must be used. Add a
line like this to /etc/inittab after the lines which start networking:
rclocal:2:wait:/etc/rc.local > /dev/console 2>&1
Note: This will not start the daemon until you reboot your license server machine.
WINDOWS
From LMTOOLS, start lmgrd. You can optionally indicate that this should be
started at system startup.
3.1.2 Setting the Path with an Environment Variable
Most applications specify a location where they expect to find the license file.
Many will automatically install the license. You should rarely, if ever, be
required to specify where the license file is located with an environment
variable. However, you can change the license location with
LM_LICENSE_FILE, or if a location is not set by the application, you can set
one.
Use the environment variable LM_LICENSE_FILE to set the location of the
license file. For example in the C shell:
setenv LM_LICENSE_FILE license_file_path
On Windows NT, use the System Control Panel to change the global
environment, adding LM_LICENSE_FILE to license_file_path, where
license_file_path is the full path to the license file. This can also be a
port@host setting, where port and host are the port number and host name
from the SERVER line in the license file. v6+ applications can use simply
@host, if the server uses a default port number.
In FLEXlm v6+, applications will accept an environment variable (or
Windows Registry) named VENDOR_LICENSE_FILE, where VENDOR is the
vendor daemon name, e.g., GSI_LICENSE_FILE.
With lmgrd and lmutil (lmstat, lmdown, etc.), the -c option overrides the
setting of the LM_LICENSE_FILE environment variable. See Section 4.1.3,
“Using Separate License Files on the Same Server Node,” for more
information about LM_LICENSE_FILE.
Note: Everything else is used to compute the license key or signature, and should be
entered exactly as supplied by your software vendor. All data in the license file
is case sensitive, unless otherwise indicated.
where:
Example:
SERVER enterprise 0122345 21987
Note: Since FLEXlm v6.0, the DAEMON line can be called VENDOR. VENDOR
can be used if the lmgrd and vendor daemon are both at least FLEXlm v6.0.
where:
v6.0:
VENDOR sampled
pre-v6.0:
DAEMON sampled /etc/sampled \
/a/b/sampled/licenses/sampled.opt
Note: There is a rarely used option in FLEXlm which causes FEATURE lines to
function as INCREMENT lines. This option is called ls_use_all_feature_lines.
You will have to ask your vendor if they use this option. If they do, then all
FEATURE lines behave exactly as INCREMENT lines.
Note: A FEATURE line placed after another FEATURE or INCREMENT line will
be ignored (unless ls_use_all_feature_lines is set).
The format for the FEATURE line changed in FLEXlm v3.0 and again in
FLEXlm v6.0. The older formats are understood by new clients and servers,
but the new formats are more flexible.
v2 format:
{FEATURE|INCREMENT} feature vendor \
feat_version exp_date num_lic key \
“vendor_str” [feat_hostid]
v3–v7.0 format:
{FEATURE|INCREMENT} feature vendor feat_version \
exp_date num_lic key [HOSTID=feat_hostid] \
[VENDOR_STRING=”vendor_str”] [vendor_info=”...”] \
[dist_info=”...”] [user_info=”...”] [asset_info=”...”] \
[ISSUER=”...”] [NOTICE=”...”] [ck=nnn] [OVERDRAFT=nnn] \
[DUP_GROUP=NONE|SITE|[UHDV]]
v7.1+ format:
{FEATURE|INCREMENT} feature vendor feat_version \
exp_date num_lic [HOSTID=feat_hostid] \
[VENDOR_STRING=”vendor_str”] [vendor_info=”...”] \
[dist_info=”...”] [user_info=”...”] [asset_info=”...”] \
[ISSUER=”...”] [NOTICE=”...”] [ck=nnn] [OVERDRAFT=nnn] \
[DUP_GROUP=NONE|SITE|[UHDV]] SIGN=sign
where:
The following fields are all optional (except for “vendor_str” in the v2
format). For optional fields of the keyword=value syntax, if the keyword is
lowercase, it can be modified and the license will remain valid.
Examples:
FEATURE xyz_app xyzd 2.300 31-dec-2005 20 123456789012 “xyz”
INCREMENT f1 xyzd 1.000 1-jan-0 5 901234567890 \
HOSTID=INTERNET=195.186.*.* NOTICE=”Licensed to XYZ corp”
Example:
PACKAGE package vendor pkg_version COMPONENTS=pkg_list \
[OPTIONS=SUITE] SIGN=pkg_sign
where:
Examples:
PACKAGE suite xyzd 1.0 3B24B2F508CB \
COMPONENTS=”comp1 comp2” OPTIONS=SUITE
FEATURE suite xyzd 1.0 1-jan-0 5 4193E6ABCCCB
In this example, the component version overrides the feature version, and the
number of licenses available for any component is the product of the three
licenses for “suite” and the number of licenses for that component. The result
is equivalent to:
FEATURE c1 xyzd 1.5 1-jan-2005 6 0D3AD5F26BEC SN=123
FEATURE c2 xyzd 3.0 1-jan-2005 12 EB16C5AE61F0 SN=123
With FLEXlm v6 (or later) applications only the PACKAGE lines can be stored
in a separate file which need never be edited.
would result in three licenses of v1.0 of “f1” and two licenses of v2.0 of “f1.”
An UPGRADE line will operate on the closest preceding FEATURE or
INCREMENT line with a version number that is >= from_feat_version,
and < to_feat_version.
Note that UPGRADE lines do not work for node-locked, uncounted licenses
before v6.
The license file above would allow the license server “excellent_server” with
the hostid “17007ea8” to serve ten floating licenses for “xyz_app1” and
“xyz_app2” to any user on the network.
This license file specifies that two licenses for feature “f1,” six licenses for
feature “f2,” and one license for feature “f3” are available anywhere on the
network that can access the license server “lulu.”
3.4.2 Node-Locked Licenses
Node-locking means the licensed software can only be used on one node. A
node-locked license has a hostid on any FEATURE line that is node-locked to
a particular host. There are two types of node-locked licenses; uncounted and
counted.
If the number of licenses is set to 0, then the license is uncounted and unlimited
use is permitted on the specified node. This configuration does not require an
lmgrd or a vendor daemon because it is not going to count the concurrent
usage of the features.
The following license file allows unlimited usage of feature “f1” on the nodes
with hostids of “12001234” and “1700ab12”:
FEATURE f1 xyzd 1.000 1-jan-2005 0 key1 "" 12001234
FEATURE f1 xyzd 1.000 1-jan-2005 0 key2 "" 1700ab12
Alternately, in FLEXlm v5.0 or later, these two FEATURE lines could have
been issued by your software vendor with a hostid list:
FEATURE f1 xyzd 1.000 1-jan-2005 0 key HOSTID="12001234 1700ab12"
If these were the only FEATURE lines in this license file, no lmgrd daemon
would be necessary and you should not start one.
The following license file allows three licenses for feature “f1” to be run, but
only on the node with hostid “1300ab43.” In this case, the daemons should be
run on the same node that runs the software, since there is no reason to run the
daemons on another node.
SERVER lulu 1300ab43 1700
DAEMON xyzd /etc/xyzd
FEATURE f1 xyzd 1.00 1-jan-2005 3 key HOSTID=1300ab43
converted to decimal:
xyzd-f1-00737-55296-1825
Since more than 2000 vendors have chosen FLEXlm as their license manager,
chances are good that you will have to administer FLEXlm licenses from more
than one vendor or multiple products from the same vendor.
Your product’s license file(s) define the license server(s) by host name and
hostid in the SERVER line(s) in the license file. If the license files for two or
more products contain identical hostids on the SERVER line(s), then these files
can be combined. If the license files for two products contain different hostids
on a SERVER line, then the license servers for those products will be running
on different nodes and the license files cannot be combined.
If you have two or more products whose license servers run on the same node
(as specified by the SERVER lines in the license files), you may be able to
combine the license files into a single license file. If the SERVER lines in those
files have identical hostids, then you can combine the files into a single file. If
the SERVER lines have different hostids, then you must keep the license files
separate.
More precisely, you can combine two license files under the following
conditions:
1. The number of SERVER lines in each file is the same.
2. The hostid field of each SERVER line in one file exactly matches the
hostid field of each SERVER line in the other file.
Some possible reasons license files may not be compatible are:
• License files are set up to run on different server nodes, so hostids are
different.
• One file is set up for single server (has only one SERVER line), the other
is set up for redundant servers (has multiple SERVER lines).
• One vendor uses a custom hostid algorithm, so the hostids on the SERVER
lines are different, even though the files are for the same machine.
If your license files are compatible as described above, then you have the
option of combining license files and running a single lmgrd, as described
below in Section 4.1.1, “Combining License Files from Multiple Vendors.” If
the license files are not compatible, then you must keep the license files
separate and run separate copies of lmgrd for each license file, as described in
Section 4.1.3, “Using Separate License Files on the Same Server Node.”
Note that you are not required to combine compatible license files; you always
have the option of running separate lmgrds, and there is virtually no
performance or system-load penalty for running separate lmgrd processes.
4.1.1 Combining License Files from Multiple Vendors
If your license files are compatible, you can combine them with any text editor.
To combine license files, read all of the compatible license files into one file,
then edit out the extra SERVER lines so that only one set of SERVER lines
remains. Write out this data, and you have your combined license file. If you
combine license files from multiple vendors, it is a good idea to keep a copy of
the combined license file in each vendor’s default license file location. This
way, users can avoid having to set LM_LICENSE_FILE, because each package
finds it’s license information in the default place. On UNIX, you can do this
with a symbolic link from each default location to the location of the combined
license file.
where lfpath1 is the path to the first license file, lfpath2 is the path to the
second license file, etc.
Note: Use a colon (“ : ”) to separate the license file names on UNIX, on Windows
and Windows/NT use a semicolon (“ ; ”), and on VMS use a space (“ “).
This chapter helps you decide which nodes to use as license server nodes.
On older SCO systems, the default number of sockets may be set fairly low; if
you choose to run a server on such a machine, you may need to reconfigure
your kernel to have more sockets.
The number of sockets available for Windows 95 clients is about 60. In
general, NT is preferred for server systems, where there is no such limit, and
the operating system is better designed for server processes.
5.1.2 CPU Time
For small numbers of clients, the license servers use very little CPU time. The
servers might have only a few seconds of CPU time after many days.
For a large number of clients (who are each exchanging heartbeat messages
with the server), or for high checkout/checkin activity levels (hundreds per
second), the amount of CPU time consumed by the server may start to become
significant, although, even here, CPU usage is normally not high. In this case,
you may need to ensure that the server machine you select will have enough
CPU cycles to spare.
Note: GLOBEtrotter Software has rarely encountered a situation where CPU cycles
were an issue.
With this startup method, the output file LOG can be renamed and a new log file
will be created. You could even make LOG a symbolic link and change the value
of the link to switch the log file.
5.1.4 Memory
The FLEXlm daemons use little memory. On SunOS, lmgrd uses
approximately160 KB and the vendor daemons use approximately 180 KB
each, although memory usage increases in the vendor daemon with the size of
the license file and the number of concurrent users.
5.1.5 Network Bandwidth
FLEXlm sends relatively small amounts of data across the network. Each
transaction, such as a checkout or checkin, is typically satisfied with less than
1 KB of data transferred. This means that FLEXlm licensing can be effectively
run over slow networks (such as dial-up SLIP lines) for small numbers of
clients.
For a large number of clients (hundreds), each of which will be exchanging
heartbeat messages with the vendor daemon, the network bandwidth used may
start to become significant. In this case you should run client and server on the
same local area network, which may require splitting licenses between two
files for two servers. Users can use a license file list in the LM_LICENSE_FILE
environment variable to have effective access to both servers.
In high-traffic networks, with FLEXlm clients older than v5, you may also
want to avoid setting LM_LICENSE_FILE to a port@host address. Instead,
the license administrator should place a copy of the license file in a file system
local to the application. See Section 3.1, “Specifying Location of the License
File.”
disk, you double the points of failure which could lead to a temporary loss of
all of your licenses. When all files are mounted locally, the licenses will be
available as long as the server machine is up; but when the files are on a
different machine, then the loss of either the license server machine or the file
server machine will cause the licenses to be unavailable.
The application attempts the first server in the list, and if that fails for any
reason, the second server is tried.
5.3.2 Three-Server Redundancy
These three-server redundant servers should have excellent communications
and should be on the same subnet. Often this means that the three servers
should be located physically close to each other. This form of redundancy
requires that the servers exchange heartbeats periodically, and poor
communications can cause poor performance. You should never configure
redundant servers with slow communications or dial-up links.
Three-server redundancy does not provide load-balancing. Use
LM_LICENSE_FILE list instead for this type of redundancy. This is because
with three-server redundancy, only one of the three servers is “master,” capable
of issuing licenses. Since all clients must contact the “master,” all clients must
have reliable networking to a single node.
5.3.3 Comparing Three-Server to License File List
ARE THERE ANY DRAWBACKS TO USING THE LICENSE FILE LIST FOR REDUNDANCY?
Yes. By default, once a license job has successfully checked out a license from
one host, all subsequent checkouts must be satisfied from the same host. If the
application requires more than one license, this could result in a license denial
when the license is available on another server. An application can bypass this
restriction if it is coded with the use of multiple FLEXlm license jobs. Only
your application vendor can tell you if their application is programmed in this
manner.
If the application supports license queueing, all licenses are only queued from
the first host on the list.
Finally, if one server becomes unavailable, some licenses will be unavailable.
WHEN IS IT RECOMMENDED TO USE A LICENSE FILE LIST FOR REDUNDANCY RATHER
THAN TRUE REDUNDANT SERVERS?
• When there’s less system administration available to monitor license
servers.
• When load-balancing is needed for clients located far apart, e.g., London
and Tokyo. You can make servers available locally, with remote servers
available as backup.
• License file list is more forgiving if you lose quorum.
• License file list is not limited to three servers (any number will work).
• Clients do not require reliable networking to a single node with license file
list, so this is recommended where networking itself requires redundancy.
The options file allows the license administrator to control various operating
parameters of FLEXlm. Users can be identified by their user name, host name,
display, IP address, or PROJECT (which is set with the LM_PROJECT
environment variable).
Specifically, the license administrator can:
• Allow the use of features
• Deny the use of features
• Reserve licenses
• Control the amount of information logged about license usage
• Enable a report log file
Options files allow you, as the license administrator, to be as secure or open
with licenses as you like.
Lines in the options file were limited to 200 characters prior to FLEXlm v3.0.
In v3.0 and later, the line length is 2048 characters. FLEXlm v4.0 allows the
“\” character as a continuation character in options file lines.
Identifying users by LM_PROJECT in the options file requires a v5+ application
and v7+ vendor daemon.
2. Add the path to the options file in the license file as the fourth field on the
DAEMON line for the application’s vendor daemon. For example:
DAEMON xyzd /etc/xyzd /a/b/xyzd/licenses/xyzd.opt
would enable the xyzd vendor daemon to look at the specified options file.
In FLEXlm v5 or later, you can put options= before the path. In FLEXlm
v6 or later, adding the options path to the license file is optional. Instead,
name the file vendor.opt, where vendor is the vendor daemon name,
and place it in the same directory as the license used by lmgrd, and it will
automatically be used at server startup.
You can include comments in your options file by starting each comment line
with a pound sign “#.” Everything in an options file is case sensitive. Be sure
that user names and feature names, for example, are entered correctly.
FEATURE SPECIFICATION
Starting with FLEXlm v5, you can specify options for a particular line of a
given feature name, as follows:
feature:keyword=value
For example:
f1:VERSION=2.0
Other valid types are GROUP and HOST_GROUP. These allow you to define
a group of users or hosts on a separate line in the options file, then use those
group names instead of an explicit list. For example:
GROUP stars joe barbara susan
EXCLUDE coolsoft GROUP stars
6.2.1 EXCLUDE
EXCLUDE feature[:keyword=value] type {list | group_name}
Excludes a list or pre-defined group of users, etc. from the list of who is
allowed to use the feature. Excluded users will not be allowed to use the
feature. EXCLUDE overrides INCLUDE.
To exclude the user “hank” from the list of users able to use feature “f1”:
EXCLUDE f1 USER hank
6.2.2 EXCLUDEALL
EXCLUDEALL type {list | group_name}
Excludes a list or pre-defined group of users, etc. from the list of who is
allowed to use all features served by this vendor daemon.
To exclude any user on the machine “chaos” from using all features served by
this vendor daemon:
EXCLUDEALL HOST chaos
6.2.3 GROUP
GROUP group_name user_list
Note: In FLEXlm v3.0, multiple GROUP lines will add all the specified users into the
group. Pre-v3.0 FLEXlm daemons do not allow multiple GROUP lines to
concatenate—the last GROUP line would define the GROUP.
6.2.4 HOST_GROUP
HOST_GROUP group_name host_list
6.2.5 INCLUDE
INCLUDE feature[:keyword=value] type {list | group_name}
Includes a list or pre-defined group of users, etc. in the list of who is allowed
to use the feature. Anyone not in an INCLUDE statement will not be allowed
to use that feature. EXCLUDE overrides INCLUDE.
To include user “bob” in the list of users able to use feature “f1”:
INCLUDE f1 USER bob
6.2.6 INCLUDEALL
INCLUDEALL type {list | group_name}
Includes a list or pre-defined group of users, etc. in the list of who is allowed
to use all features served by this vendor daemon. Anyone not in an
INCLUDEALL statement will not be allowed to use these features.
To allow the user “jane” to use all features served by this vendor daemon:
INCLUDEALL USER jane
6.2.7 LINGER
LINGER feature[:keyword=value] seconds
Rarely used. This causes the daemon to “hold on” to the license for feature
for seconds after the application checks the license in or exits. This could be
useful for short-duration programs which will be used many times in a row by
the same user, to ensure that the user will be able to re-acquire the license
repeatedly. On the other hand, other users have to wait until the first user is
completely finished, plus a linger interval. This is useful only if the application
uses duplicate grouping. Otherwise, LINGER will cause you to use extra
licenses. Contact your software vendor for information about how they
implemented duplicate grouping in their product.
If license lingering is set and lmremove is used to reclaim the license,
lmremove will start, but not override, the license’s linger time.
6.2.8 MAX
(v5.11+ vendor daemon only.)
MAX num_lic feature[:keyword=value] type {list | group_name}
6.2.9 MAX_OVERDRAFT
MAX_OVERDRAFT feature[:keyword=value] num_lic
Suppresses logging the selected type of event in the debug log file.
To turn off logging of checkins:
NOLOG IN
To turn off logging of checkouts and queued requests two separate NOLOG
lines are required:
NOLOG DENIED
NOLOG QUEUED
Note: License administrators might use this option to reduce the size of the debug log
file.
6.2.11 REPORTLOG
REPORTLOG [+]report_log_path
REPORTLOG specifies the report log file for this vendor daemon. We
recommend preceding the report_log_path with a + character to append
logging entries, otherwise the file will be overwritten each time the daemon is
started.
Note: Any licenses reserved for a user are dedicated to that user. Even when that user
is not actively using the license it will be unavailable to other users. However,
a RESERVEd license will not cause an overdraft to be reported by SAMreport
if the license is not actually in use.
6.2.13 TIMEOUT
TIMEOUT feature[:keyword=value] seconds
Sets the time after which an inactive license is reclaimed by the vendor
daemon.
To set the timeout for feature “f1” to one hour (3600 seconds):
TIMEOUT f1 3600
TIMEOUT checks in the licenses if the process has been “idle” for a period
longer than the specified time period. The daemon declares a process idle when
it has not heard from the process (the client sends heartbeats). The application
must explicitly declare itself idle for this to work, or (on UNIX) the application
must be stopped (^Z). That is, unless the application explicitly supports this
feature, it will not work. Contact your software vendor for information about
how they implemented this feature in their product.
The application vendor can also disable the timeout feature, in which case the
TIMEOUT option has no effect. The vendor can set a minimum value for the
timeout. If you specify a timeout value smaller than the minimum, the
minimum is used. The default minimum value is 900 seconds (15 minutes).
If you do not specify a timeout value in your options file, then there will be no
timeout for that feature. With a pre-v5 vendor daemon, licenses are only freed
by TIMEOUT when a new request for a license would require a license that
can be freed with TIMEOUT. With v5+, licenses are freed when they time out.
6.2.14 TIMEOUTALL
(v5.11+ vendor daemon only.)
TIMEOUTALL seconds
However, there is an easier way. Create a GROUP and exclude the list of users
from using the feature. Like the previous example, the following options file
would exclude “bob,” “howard,” and “james” from using the feature called
“toothbrush”:
# First define the group "Hackers"
GROUP Hackers bob howard james
# Then exclude the group
EXCLUDE toothbrush GROUP Hackers
Now when you want to allow or deny access to any feature to that group, you
have an alias list to make it simple.
With a FLEXlm v4+ vendor daemon, you can use HOST_GROUP to allow,
deny, or reserve licenses for multiple hosts. For example, to exclude all users
logged in on the hosts “fred” and “barney” from using a feature called “f1,” add
these lines to your options file:
HOST_GROUP writers fred barney
EXCLUDE f1 HOST_GROUP writers
Note: See Section 6.2.3, “GROUP,” and Section 6.2.4, “HOST_GROUP,” for more
information about defining groups.
Note that “bob” could have been added to the group “painters.” However,
“painters” might be used for some other purpose in the future so the license
administrator chose to handle “bob” as a special case here. In this case, the two
EXCLUDE statements concatenate to create a list of four users.
6.5.4 INCLUDE Example
INCLUDE paint USER picasso
INCLUDE paint USER mondrian
INCLUDE paint HOST bigbrush
FLEXlm provides utilities for the license administrator to help manage the
licensing activities on the network. These utilities are:
• lmcksum (v2.4+) — Prints license checksums.
• lmdiag (v4.0+) — Diagnoses license checkout problems.
• lmdown — Gracefully shuts down all license daemons (both lmgrd and
all vendor daemons) on the license server node (or on all three nodes in the
case of three-server redundant servers).
• lmhostid — Reports the hostid of a system.
• lminstall — Converts license files between different formats.
• lmnewlog — Moves existing report log information to a new file name
and starts a new report log file with existing file name.
• lmremove — Releases a hung license to the pool of free licenses.
• lmreread — Causes the license daemon to reread the license file and start
any new vendor daemons.
• lmstat — Displays the status of a license server.
• lmswitchr — Switches the report log to a new file name.
• lmver — Reports the FLEXlm version of a library or binary file.
This chapter also contains command-line syntax for lmgrd.
command forms of the commands are available. There is also a graphical user
interface for these commands on Windows—see Section 7.15, “License
Administration Tools—LMTOOLS for Windows.”
Note: The lmdown, lmremove, and lmreread commands are “privileged.” If you
have started lmgrd with the -2 -p switch, you must be a license administrator
to run any of these three utilities. A license administrator is a member of the
UNIX “lmadmin” group, or, if the “lmadmin” group does not exist, a member
of group 0. In addition, lmgrd -x can disable lmdown and/or lmremove.
7.3 lmcksum
The lmcksum program (FLEXlm v2.4 or later) 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. lmcksum takes the -k switch to force the encryption key checksum
to be case-sensitive.
lmcksum will ignore all fields that do not enter into the encryption key
computation; thus the server node name and port number, the vendor daemon
and options file paths, and lowercase keyword=value pairs on
FEATURE/INCREMENT lines are not checksummed. In addition, lmcksum
will treat non-case-sensitive fields correctly (in general, lmcksum is not case
sensitive).
For FEATURE lines that contain ck=nnn, lmcksum prints simply OK or BAD.
Usage is:
lmcksum [-k] [-c license_file_path]
7.4 lmdiag
lmdiag (FLEXlm v4.0 or later) allows you to diagnose problems when you
cannot check out a license.
Usage is:
lmdiag [-c license_file_list] [-n] [feature[:keyword=value]]
where:
7.5 lmdown
The lmdown utility allows for the graceful shutdown of all license daemons
(both lmgrd and all vendor daemons) on all nodes.
Usage is:
lmdown [-c license_file_list] [-vendor vendor] [-q] [-all]
where:
You may want to protect the execution of lmdown, since shutting down the
servers causes users to lose their licenses. See the -2 -p or the -x options in
Section 7.6, “lmgrd,” for details about securing access to lmdown.
If lmdown encounters more than one server (for example if -c specifies a
directory with many *.lic files), a choice of license servers to shut down is
presented.
To stop and restart a single vendor daemon, use lmdown -vendor vendor,
then use lmreread -vendor vendor to restart the vendor daemon.
When shutting down redundant servers, there is a one-minute delay before the
servers shut down. lmdown will shut down all three license servers of a set of
redundant license servers. If you need to shut down one of a set of redundant
license servers (not recommended because you are left with two points of
failure), you must kill both the lmgrd and vendor daemon processes on that
license server machine.
See also Section 7.11, “lmreread.”
7.6 lmgrd
lmgrd is the main daemon program for FLEXlm. When you invoke lmgrd, it
looks for a license file which contains information about vendors and features.
On UNIX systems, it is strongly recommended that lmgrd be run as a non-
privileged user (not root).
Usage is:
lmgrd [-c license_file_list] [-l debug_log_path]
[-2 -p] [-nfs_log] [-x lmdown] [-x lmremove] [-z ] [-v]
where:
Note: Pre-v6 lmgrd on Windows required -app argument when not run as a service.
7.7 lmhostid
The lmhostid utility reports the hostid of a any machine whose platform is
supported by FLEXlm. The default hostid type is displayed for a platform,
unless an optional hostid type is specified and supported by that platform.
Usage is:
lmhostid [-n] [type]
where type is one of:
[-internet] (optional on all platforms)
[-vsn] [-flexid] [-cpu[32|64|96]] (optional on Windows)
[-ether] (optional on HP)
7.8 lminstall
Introduced in v6.0, lminstall is designed primarily for typing in decimal
format licenses to generate a readable format license file.
Usage is:
lminstall [-i in_lic_file ] [-maxlen n] \
[-o out_lic_file] \
[-overfmt {2 | 3 | 4 | 5 | 5.1 | 6 | 7 | 7.1}] [-odecimal]
7.9 lmnewlog
The lmnewlog utility switches the report log file by moving the existing report
log information to a new file, then starting a new report log with the original
report log file name. If you rotate report logs with lmnewlog instead of
lmswitchr, you will not have to change the file name in the REPORTLOG
line of the vendor’s options file.
Usage is:
lmnewlog [-c license_file_list] feature renamed_report_log
or:
lmnewlog [-c license_file_list] vendor renamed_report_log
where:
Note: lmnewlog works only with FLEXlm v7+ vendor daemons. Ask your vendor
for an updated version of their vendor daemon.
7.10 lmremove
The lmremove utility allows you to remove a single user’s license for a
specified feature. This is only needed when a client node crashes, since that’s
the only condition where a license is not automatically freed. If the application
is active, it will re-checkout the license after it is freed by lmremove.
Usage is:
lmremove [-c license_file_list] feature user user_host display
or
lmremove [-c license_file_list] -h feature server_host port handle
where:
In this example, the user is “joe,” the user host is “nirvana,” the display is
“/dev/typp5,” the server host is “cloud9,” the port is “7654,” and the license
handle is “102.”
or
lmremove -h f1 cloud9 7654 102
7.11 lmreread
The lmreread utility causes the license daemon to reread the license file and
start any new vendor daemons that have been added. In addition, all running
daemons will be signaled to reread the license file for changes in feature
licensing information. If the optional vendor daemon name is specified, only
the named daemon will reread the license file (in this case, lmgrd will not
reread the license file).
Usage is:
lmreread [-c license_file_list] [-vendor vendor] [-all]
where:
You may want to protect the execution of lmreread. See the -2 -p and -x
options in Section 7.6, “lmgrd,” for details about securing access to
lmreread.
To stop and restart a single vendor daemon, use lmdown -vendor vendor,
then use lmreread -vendor vendor, which restarts the vendor daemon.
Note: If you use the -c license_file_list option, the license file(s) specified
will be read by lmreread, not by lmgrd; lmgrd rereads the file it read
originally. Also, lmreread cannot be used to change server node names or
port numbers.
Note: Vendor daemons will not reread their option files as a result of lmreread.
7.12 lmstat
The lmstat utility helps you monitor the status of all network licensing
activities, including:
• Daemons that are running
• Users of individual features
• Users of features served by a specific vendor daemon
lmstat prints information that it receives from the license server, therefore it
will not return any information about users of node-locked uncounted or
DEMO licenses, unless the server’s license file includes the node-locked
licenses and the client is not reading the license file (via @host, port@host
or USE_SERVER). Queued users and licenses shared due to duplicate
grouping are also not returned by lmstat.
Usage is:
lmstat [-a] [-A] [-c license_file_list] [-f [feature]]
[-S [vendor]]
where:
demo: UP v7.2
Feature usage info:
Users of f1: (Total of 4 licenses available)
"f1" v1.0, vendor: demo
floating license
daniel myhost2 19.16.18.26 (v1.0) (myhost1/27000 102), start Fri
5/3 7:29
where:
Note: lmstat -a is a potentially expensive command. With many active users, this
can generate a lot of network activity, and therefore should not be used too
often.
7.13 lmswitchr
The lmswitchr utility switches the report log file by closing the existing
report log and starting a new report log with a new file name. It will also start
a new report log file if one does not already exist.
Usage is:
lmswitchr [-c license_file_list] feature new_report_log
where:
Note: lmswitchr does not work with FLEXlm v3.0 vendor daemons. Ask your
vendor for a later version of their vendor daemon.
7.14 lmver
The lmver utility reports the FLEXlm version of a library or binary file.
Usage is:
lmver filename
Alternatively, on UNIX systems, you can use the following commands to get
the FLEXlm version of a binary:
strings filename | grep Copy
EXAMPLES
FEATURE f1 demo 1.0 1-jan-2005 uncounted HOSTID=HOSTNAME=globes \
SIGN=AB28E0011DA1
or
FEATURE f1 demo 1.0 1-jan-2005 uncounted HOSTID=USER=joe \
SIGN=EB78201163B0
Troubleshooting Guide
• What error or warning messages appear in the log file? Did the server start
correctly? Look for a message such as:
server xyz started for: feature1 feature2.
• What is the output from running lmstat -a?
• Are you running other products which are also licensed by FLEXlm? Are
you using a combined license file or separate license files?
• Are you using redundant servers (multiple SERVER lines in your license
file)?
B.2 FLEXLM_DIAGNOSTICS
Note: Available only with applications using FLEXlm v4.1 or higher for UNIX, and
v5.0 or higher with Windows. Also, applications may choose not to provide
this functionality.
On NT, use the System Control Panel applet to change the global environment,
adding FLEXLM_DIAGNOSTICS to 1.
On UNIX, the diagnostic output goes to stderr.
On Windows, if the application is v5.11 or higher, the output is a file in the
current directory called flexpid.log, where pid is the application’s process
ID. If the application is v5.0, the output file is called flex_err.log.
B.2.1 Level 1 Content
If FLEXLM_DIAGNOSTICS is set to 1, then the standard FLEXlm error message
will be presented, plus a complete list of license files that the application tried
to use. For example:
setenv FLEXLM_DIAGNOSTICS 1
FLEXlm checkout error: Cannot find license file (-1,73:2) No such file
or directory
license file(s): /usr/myproduct/licenses/testing.dat license.dat
83 Troubleshooting Guide
FLEXLM_DIAGNOSTICS
Note that the error message actually contains two separate problems, which
both occurred during the checkout:
• There’s no such feature in the license it did find
• It was unable to find the other license file, which is what produces the
message “No such file or directory”
Following is a description of the arguments to lm_checkout()
lm_checkout(feature, version, num_lic, queue_flag, ...,
dupgroup_mask)
where:
Note that the feature name and license key are printed, along with the license
file location (or host name if @host were used) and host name of the server,
where applicable.
B.3 FLEXlm Troubleshooting List
B.3.1 Problem Description Format
Each problem is presented in three parts:
You can scan through the list of problems to find any which appear to relate to
your concerns. In order to solve your problem, you may have to use all or some
of the solutions listed here.
85 Troubleshooting Guide
FLEXlm Troubleshooting List
87 Troubleshooting Guide
FLEXlm Troubleshooting List
Cause: Possible causes for this are: 1) the license file was
modified (either the hostid on a SERVER line or
anything on the FEATURE line was changed); 2) the
vendor used the wrong version of his license creation
program to generate your license file (or there is a bug
in that process).
Solution: You may not modify the license file (except for specific
fields, see Chapter 3, “The License File”). If you need to
change something in your license file, you must get a
new license file from your software vendor.
Symptom: When the second user tries to check out a license, the
vendor daemon prints an error concerning Parameter
mismatch in the debug log file and refuses the license.
The application may give the error: Duplicate
selection mismatch for this feature.
Cause: The most likely cause of this problem is that you are
simultaneously trying to run two different versions of
the application program, and the software vendor has not
specifically set up the new version for this kind of
compatibility. Check the debug log file for a comm
version mismatch warning message; this indicates that
someone is running an older client than the license
server daemon, lmgrd.
Solution: Run only the new version of the application (or only the
old version).
89 Troubleshooting Guide
FLEXlm Troubleshooting List
91 Troubleshooting Guide
Appendix C
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 "lmgrd_path -c license_file_path -l debug_log_path"
where username is a non-privileged user, and the paths are the correct paths
to lmgrd, the license file, and the debug log file. You will have to ensure that
the vendor daemons listed in the license file have execute permissions for
username. The paths to all the vendor daemons in the license file are listed on
each DAEMON line.
D.3.7 Is it OK to run lmgrd as “root” (UNIX only)?
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; lmgrd..."
D.3.11 Does FLEXlm work with subnets, fully qualified names, multiple
domains, etc.?
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 host name” is of the
form node.domain, where node is the local host name (usually returned by
the hostname command or uname -n) and 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 host name 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 host name. 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 host name on the SERVER, or as a host name
in the LM_LICENSE_FILE environment variable (port@host or @host).
D.3.12 Does FLEXlm work with NIS and DNS?
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.
On PCs, if a checkout seems to take three 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, host names must NOT have periods in the name. These are not legal
host names, although PCs will allow you to enter them, and they will not work
with DNS.
D.3.13 We’re using FLEXlm over a wide-area network. What can we do
to improve performance?
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:
• lmstat -a should be used sparingly. lmstat -a should not be used
more than, say, once every 15 minutes, and should be particularly avoided
when there’s a lot of features, or concurrent users, and therefore a lot of
data to transmit; say, more than 20 concurrent users or features.
• Prior to FLEXlm v5, the port@host mode of the LM_LICENSE_FILE
environment variable should be avoided, especially when the license file
has many features, or there are a lot of license files included in
LM_LICENSE_FILE. The license file information is sent via the network,
and can place a heavy load. Failures due to port@host will generate the
error LM_SERVNOREADLIC (-61).
D.4 Windows Questions
D.4.1 What PC Platforms are supported?
FLEXlm v7.2 supports Windows 95/98, 2000, and NT.
Example:
Cannot connect to license server
The server (lmgrd) has not been started yet, or
the wrong port@host or license file is being used, or the
port or hostname in the license file has been changed.
Feature: f1
Server name: localhost
License path: @localhost:license.dat:./*.lic
FLEXlm error: -15,12. System Error: 61 “Connection refused”
Error Description
-1 Cannot find license file.
-2 Invalid license file syntax.
-3 No server for this feature.
-4 Licensed number of users already reached.
-5 No such feature exists.
-6 No port number in license file and FLEXlm service does
not exist. (pre-v6 only)
-7 No socket connection to license manager service.
-8 Invalid (inconsistent) license key or signature.
The license key/signature and data for the feature do not
match. This usually happens when a license file has
been altered.
-9 Invalid host.
The hostid of this system does not match the hostid
specified in the license file.
-10 Feature has expired.
-11 Invalid date format in license file.
-12 Invalid returned data from license server.
-13 No SERVER lines in license file.
-14 Cannot find SERVER host name in network database.
The lookup for the host name on the SERVER line in the
license file failed. This often happens when NIS or DNS
or the hosts file is incorrect. Workaround: Use IP
address (e.g., 123.456.789.123) instead of host name.
-15 Cannot connect to license server.
The server (lmgrd) has not been started yet, or the
wrong port@host or license file is being used, or the
port or host name in the license file has been changed.
-16 Cannot read data from license server.
-17 Cannot write data to license server.
-18 License server does not support this feature.
-19 Error in select system call.
-20 [Obsolete]
-21 License file does not support this version.
-22 Feature checkin failure detected at license server.
-23 License server temporarily busy (new server
connecting).
-24 Users are queued for this feature.
-25 License server does not support this version of this
feature.
-26 Request for more licenses than this feature supports.
-27 [Obsolete]
-28 [Obsolete]
-29 Cannot find ethernet device.
-30 Cannot read license file.
-31 Feature start date is in the future.
-32 No such attribute.
-33 Bad encryption handshake with daemon.
-34 Clock difference too large between client and server.
-35 In the queue for this feature.
-36 Feature database corrupted in daemon.
-37 Duplicate selection mismatch for this feature.
-38 User/host on EXCLUDE list for feature.
-39 User/host not on INCLUDE list for feature.
-40 Cannot locate dynamic memory.
-41 Feature was never checked out.
-42 Invalid parameter.
-43 * No FLEXlm key data supplied in initializing call.
-44 * Invalid FLEXlm key data supplied.
-45 * FLEXlm function not available in this version.
-46 [Obsolete]
-47 Clock setting check not available in daemon.
-48 * FLEXlm platform not enabled.
-49 * Date invalid for binary format.
-50 * FLEXlm key data has expired.
-51 * FLEXlm not initialized.
-107 [Unused]
-108 [Unused]
-109 [Unused]
-110 Dongle not attached, or can’t read dongle.
Either the hardware dongle is unattached, or the
necessary software driver for this dongle type is not
installed.
-112 Missing dongle driver.
In order to read the dongle hostid, the correct driver
must be installed. These drivers are available at
http://www.globetrotter.com or from your software
vendor.
-113 FLEXlock checkouts attempted.
Only one checkout is allowed with FLEXlock-enabled
apps.
-114 SIGN= attribute required.
This is probably because the license is older than the
application. You need to obtain a SIGN= version of this
license from your vendor.
-115 Error in Public Key package.
Note: A debug log file cannot be used for usage reporting with SAMreport.
FLEXlm Versions
V1.0—1988
V2.4—DECEMBER 1992
• Added “use-all-feature-lines” capability for incremental license
distribution
• Enhanced vendor customization routines
• Enhanced end-user options file
• Added new hostid types: USER, HOSTNAME, and DISPLAY
• Added port@host to locate license file —downloads license file from
server
V2.61—MARCH 1993 (USED ONLY BY SUN)
• Added INCREMENT and UPGRADE lines to license file
V3.0—MAY 1994
• INCREMENT and UPGRADE behavior changed and improved
• Added UDP protocol support
• Added uname -i hostid for HP
• Added multiple jobs for enhanced support of LM_LICENSE_FILE
environment variable as a license file list
• New, optional license file format with keyword=value syntax for
optional new features, including: asset_info, ISSUER, and NOTICE, “ \ ”
license file continuation character, 2048 character limit per feature
V4.0—DECEMBER 1994
• Removed use of floating point, for enhanced reliability
• FEATURE line additions: ck (for use with lmcksum), OVERDRAFT,
DUP_GROUP, INTERNET hostid
• PACKAGE line
• License Finder
• lmdiag and FLEXLM_DIAGNOSTICS for end-user diagnostics
V4.1—MAY 1995
• Performance improvements and new platform support
V4.1—PATCH RELEASE 6, OCTOBER 1995
• PC patch release for Windows 95 with various performance improvements
V5.0—MARCH 1996
• Improved port@host behavior—client application doesn’t read license
file
• Automatic port@host via USE_SERVER line in license file
• Hostid lists—lock a feature to several hostids
V6.1—JUNE 1998
• Performance improvements
V7.0—AUGUST 1999
• License Certificate Manager support for automatic license fulfillment
• Support for “try-before-you-buy” licensing
• License file handles inserted newlines from emailers
• License lines automatically optimally sorted
• Improved LMTOOLS interface for Windows
• lmgrd, when run at command line on Windows, runs in background by
default
• Improved three-server redundancy reliability (v7 vendor daemon and
lmgrd)
• lmreread and lmdown take -all argument to shut down or reread all
lmgrds
• Support registry (Windows) and $HOME/.flexlmrc for FLEXlm
environment variables
• Automatically install license path in registry or $HOME/.flexlmrc after
successful checkout
• Options support for LM_PROJECT with PROJECT
• Performance improvements, especially for Windows NT
• Intel Pentium III CPU-ID (v7.0d+, November 1999)
V7.1—AUGUST 2000
• Security enhancements
• SIGN= attribute in license
V7.2—DECEMBER 2000
• Performance enhancements
V
vendor daemon
and redundant servers 19
debug log file 108
lmnewlog 71
lmreread 73
lmswitchr 76
memory usage 44
options file 49
overview 13
restarting 66
sockets 42
uncounted licenses 47
VENDOR_LICENSE_FILE 93
version compatibility 40
vendor daemon name
FEATURE line 28
VENDOR line 25
vendor daemon path 25
VENDOR line 24
options file path 25
port number 26
vendor daemon name 25
vendor daemon path 25
vendor string, v2 29
vendor.opt 25, 49
vendor_info 31
VENDOR_LICENSE_FILE 22, 93
VENDOR_STRING 30
W
Windows 95, and license server 99