Chapter 4. Combining License Files

Since many vendors choose FLEXlm as their license manager, chances are good that you will have to administer licenses from more than one vendor or multiple products from the same vendor. This chapter explains the following topics:

Overview of Combining License Files

When you are running FLEXlm-licensed products from multiple vendors, you may need to take steps to prevent licensing conflicts during installation. There are three ways you can accomplish this:

  • Multiple license server nodes; each running one lmgrd and one license file

  • One license server node running one lmgrd and one license file

  • One license server node running multiple lmgrds and multiple license files

Note that each lmgrd can only control a single license file. While running separate lmgrds and license files simplifies initial installation in some ways, it probably increases the day-to-day administration of your licenses. In the first option mentioned above, you will have more license servers to monitor; in the third option you have only one server but multiple lmgrds to administer.

Your product's license file (or files) defines the license server (or servers) by hostname and hostid in the SERVER line (or lines) 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. See “Using the Same Server Node”. 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.

Using the Same Server Node

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 why 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 “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 “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 lmgrd as described in “Using Separate License Files on the Same Server Node”.

Combining License Files from Multiple Vendors

If your license files are compatible (i.e., use the same server nodes), 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 write the data to license.dat in the default location, you will generally not need to set the LM_LICENSE_FILE environment variable. If you write the data out elsewhere, or if you were able to combine some but not all of your license files, then you will need to set the LM_LICENSE_FILE variable (unless your application uses another method to find the license file).

FLEXlm License Manager Component Compatibility

When you combine license files for two different FLEXlm-licensed products, it may be the case that those products do not use the same version of FLEXlm. FLEXlm is designed to handle this situation. There are two basic compatibility rules for FLEXlm:

  1. A newer lmgrd can be used with an older vendor daemon, but a newer vendor daemon might not work properly with an older lmgrd.

  2. A newer vendor daemon (or lmgrd) can be used with an older client program, but a newer client program might not work properly with an older vendor daemon.

From these two compatibility rules come the simple rules for selecting which version of administration tools to use:

  1. Always use the newest version of lmgrd and the newest version of each vendor daemon.

  2. Use the newest FLEXlm utilities if they are FLEXlm v2.4 or later; otherwise use the oldest version of the utility programs (such as lmstat) you have.

For specific application programs, you can use either the new or the old version (with the assumption that the vendor daemon that goes with that application is at least as new as the application).

There are a couple of details and exceptions to go with the above rules:

  1. Products using version 2.0 of FLEXlm may not be combined in one license file with products using version 1.5 or earlier of FLEXlm. In this case, you must use separate license files (see “Using Separate License Files on the Same Server Node”).

  2. If you combine a product using version 2.1 or later of FLEXlm with a product using version 1.5 or earlier of FLEXlm, you must use the“-b” (for backwards compatibility) command line option to lmgrd. You can always use a version of lmgrd that is newer than the one provided by your software vendor, as long as you are careful to use the “-b” switch if replacing v1.x lmgrd with a v2.1 or later lmgrd.


Note: FLEXlm v2.4 and later versions of lmgrd default to “-b”. You do not need to use the “-b” option if you are using FLEXlm v2.4 or later.


Using Separate License Files on the Same Server Node

If you have incompatible license files, you must run a separate copy of lmgrd for each license file. (You can also do this even if your license files are compatible.) When you run lmgrd separately for each license file, there are two details to remember:

  1. The port number on the SERVER line of each license file must be unique. You can use a standard text editor to change the port number in each license file so that they are all different.

  2. You must make sure that you are using a compatible version of lmgrd when you start it up for a particular license file. This can be done by either using an explicit path to lmgrd, or by renaming lmgrd to something specific for that product (some vendors do this to make it easier to identify the lmgrd they ship with their product).

When running client programs (such as a licensed application), you can set the LM_LICENSE_FILE environment variable to point to multiple license files. For example, you may have a license file from vendor ABC and a license file from vendor XYZ with incompatible servers. You can place the license file from vendor ABC into:

/usr/flexlm/abc.dat

and the license file from vendor XYZ into:

/usr/flexlm/xyz.dat

then set the LM_LICENSE_FILE environment variable to point to both of them. Each name in LM_LICENSE_FILE should be separated by a colon “:”.
In the C shell:

% setenv LM_LICENSE_FILE\ /usr/flexlm/abc.dat:/usr/flexlm/xyz.dat

In the Korn and Bourne shells:

# LM_LICENSE_FILE=/usr/flexlm/abc.dat:/usr/flexlm/xyz\.dat
# export LM_LICENSE_FILE 


Note: LM_LICENSE_FILE can point to only one license file for FLEXlm v1.x applications.


Using a Different Server Node

If products use different license server nodes, each set of license servers requires separate license files. (When multiple software vendors use the same set of license server nodes, the technique described above in “Using the Same Server Node” can be used to combine license files.) The resulting (multiple) license files can be installed in convenient locations, and you would set the LM_LICENSE_FILE environment variable as follows:

% setenv LM_LICENSE_FILE\ lfpath1:lfpath2:....:lfpathN

where:  

is the:

lfpath1 

path to the first license file.

lfpath2 

path to the second license file.

. 

. 

. 

lfpathN 

path to the last (Nth) license file

Each application will query each license file in the order it is listed in the LM_LICENSE_FILE path. If the license server serving the license file listed in lfpath1 was unreachable, perhaps due to an NFS problem, changing the LM_LICENSE_FILE would allow a user to obtain a license from another server.

For more information about LM_LICENSE_FILE and setting the location of the license file, see “Specifying Location of the License File” or Chapter 3, “The License Finder.”