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.

RLM’s host identification (hostid) types are:

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):

From the shell
% setenv RLM_LINUX_ETHERNET_ITERATIONS 20000

or

In your application
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