Appendix C - RLM Hostids
RLM Host IDs
RLM supports several different kinds of identification for various computing environments, as well as some generic identification which are platform-independent.
Type |
Meaning |
Example |
Notes |
---|---|---|---|
ANY |
runs anywhere |
hostid=ANY |
|
DEMO |
runs anywhere for a demo license |
hostid=DEMO |
|
serial number |
runs anywhere |
hostid=sn=123-456-789 |
Used to identify a license, any string up to 64 characters long. |
disksn |
Hard Disk hardware serial number |
hostid=disksn=WDWX60AC946860 |
Windows only. |
32 |
32-bit hostid, native on Unix, non X86 based platforms |
hostid=10ac0307 |
This is the volume serial number on windows, and is not recommended. |
ip (or internet) |
TCP/IP address |
hostid=ip=192.156.1.3 |
Always printed as “ip=”. Wildcards allowed. |
ether |
Ethernet MAC address |
hostid=ether=00801935f2b5 |
Always printed without leading “ether=”. |
rlmid1 |
External key or dongle |
hostid=rlmid1=9a763f21 |
External key or dongle. |
uuid |
BIOS uuid |
hostid=uuid=699A4D56-58BF-1C83-D63C-27A8BEB8011A |
Windows only. |
user |
User name |
hostid=USER=joe |
Case-insensitive |
host |
Host name |
hostid=host=melody |
|
gc |
Google Compute Engine |
hostid=gc=3797742226458986650- .k6qt9v5h38w2adwqgc9fdhdf3w0m761p |
Linux only. DEPRECATED. |
Warning
The Google Compute host ID is deprecated as of v14.2 and should not be used.
To determine the hostid of a machine, use the hostid type from the table above as input to the rlmhostid command:
rlmutil rlmhostid hostid type
For example:
rlmutil rlmhostid 32
or
rlmutil rlmhostid internet
When an application requests a license from a license server, it will transmit the hostid information from the local machine to the license server, so that the server can process node-locked licenses without additional queries to the application. The application will transmit a maximum of 25 different hostids: * one 32-bit hostid, if present on this platform * 1 or 2 Disk serial numbers (windows only) * up to 3 IP address * up to 5 ethernet MAC addresses (ether=) * up to 6 RLMID portable hostids * a UUID hostid, if present * a minimum of 3 ISV-defined hostids (usually more, but guaranteed to be at least 3)
Note
In RLM v15.0, the server will add the client’s external IP address to the list of IP addresses supplied by the client. This IP address is not added if it is the same as one of the client-supplied IP addresses.
Linux Ethernet hostids
Some recent versions of linux have very high ethernet adapter numbers. RLM was updated to scan 100,000 interfaces starting in v12.0, however, this scan was too slow for applications that made multiple calls to rlm_init(). Beginning in v12.2, this number was reduced to 5,000. However, we have been informed of Docker instances where the ethernet device number is between 14,000 and 15,000. In v15.0, we have left the default scan at 5,000 devices, but added the environment variable RLM_LINUX_ETHERNET_ITERATIONS to control how many devices are scanned.
To scan more (or fewer) ethernet devices, set this variable as follows (this example sets the number to 20,000):
% setenv RLM_LINUX_ETHERNET_ITERATIONS 20000
or
rlm_putenv(“RLM_LINUX_ETHERNET_ITERATIONS=20000”)
Windows hostids
Ethernet
Some interfaces on Windows systems have Ethernet MAC addresses which are undesirable for use as hostids because they are transient, i.e. not always available. These include wireless interfaces, virtual interfaces like VPNs, etc.
On Windows, RLM looks for keywords in the device description to decide what interfaces are undesirable. Licenses can be locked to these interfaces if necessary, as it might be that only undesirable interfaces exist on a given machine. However, When RLM generates a list of MAC addresses on a Windows machine, it orders the list such that the undesirables are at the end of the list. So the first hostid printed by rlmhostid, and the one returned by rlm_hostid() will be the best one available on that Windows system.
disksn
Some disk serial numbers on Windows are only accessible to a process running with admin privileges. To disable use of disk serial numbers that only admins can use, see the call to rlm_isv_cfg_set_use_admin_disksns() in rlm_isv_config.c”.
Miscellaneous Notes
RLMID
The RLMID series of hostids are optional products, and will often require other software to be installed on the system on which they are to be used. For these devices, see Appendix D – Optional Hostid Installation Instructions.
Wildcards
IP address hostids can contain the wildcard (‘*’) character in any position to indicate that any value is accepted in that position.
A wildcard may be used in the host type hostid, for example:
"hostid=host=*.stanford.edu" or "hostid=host=*.reprisesoftware.com"
Disabling standard RLM Hostids
You can disable certain hostid types in your application in rlm_isv_config.c.
Note
rlmsign will sign licenses with disabled hostid types.
In your application, if this hostid type appears in a signed license file, rlm_checkout() will return RLM_EL_NOTTHISHOST. Your license server will log lines similar to these (in this case, we disabled the HOST hostid type, RLM_DISABLE_H_HOST):
06/14 14:44 (reprise) Wrong Hostid - licenses may not be available
06/14 14:44 (reprise) (expected: host=zippy, we are: invalid)
To disable hostids, modify rlm_isv_config.c as follows:
Set the hostids that your product (or license server) will not accept.
Create a bitmask of the hostid types you do not want to support, and pass this as the the 2nd parameter to rlm_isv_cfg_disable_hostids(). If this parameter is 0, all RLM hostids are allowed.
For example, say that you want to disable HOST and USER hostid types:
int disable = RLM_DISABLE_H_USER | RLM_DISABLE_H_HOST;
rlm_isv_cfg_disable_hostids(handle, disable);
The bitmask values for disabling various hostid types are in license.h, and are here:
RLM_DISABLE_H_32BIT
RLM_DISABLE_H_STRING
RLM_DISABLE_H_ETHER
RLM_DISABLE_H_USER
RLM_DISABLE_H_HOST
RLM_DISABLE_H_IP
RLM_DISABLE_H_ANY
RLM_DISABLE_H_DEMO
RLM_DISABLE_H_SN
RLM_DISABLE_H_RLMID1
RLM_DISABLE_H_RLMID2
RLM_DISABLE_H_DISKSN
RLM_DISABLE_H_IPV6
RLM_DISABLE_H_UUID
RLM Hostid Security
RLM hostids have varying levels of security. We describe these levels as:
Minimal (min) - The hostid works anywhere - nothing is required to run on any machine.
Low - The hostid is locked, but the data it is locked to is easily changeable, and in fact, the data is meant to be changed and changing it is fully documented. (in the case of Windows 32-bit hostids, which are the volume serial number, PC manufacturers often create batches of PCs with the same volume serial number).
Standard (std) - The hostid is locked to something which is not designed to be changed. Changing this requires some kind of hacking software, which may or may not be easily obtainable.
The following table shows RLM hostids and their security levels:
Hostid Type |
Security Level |
Notes |
---|---|---|
ANY |
min |
|
DEMO |
min |
|
32 (or long) |
low or std |
Depends on the platform, see table below. |
disksn |
std |
|
gc |
std |
Deprecated. |
ip (or internet) |
low |
|
ether |
std |
|
rlmid1 |
std |
|
user |
min |
|
host |
min |
The following table lists the security level of the 32-bit hostid type, by platform:
Platform |
32-bit hostid security |
---|---|
hp_h1 |
std |
hp64_h1 |
std |
ibm_a1 |
std |
ibm64_a1 |
std |
x86_l1, x86_l2 |
low |
ppc64_l1 |
low |
x64_l1 |
low |
x86_m1 |
low |
x64_m1 |
low |
ppc_m1 |
low |
x64_s1 |
std |
sun_s1 |
std |
x64_s1 |
std |
x86_w3/4 |
low |
x64_w3/4 |
low |