RLM Roaming Introduction
RLM Roaming is a feature that allows a user of an application which is normally licensed with a floating license to temporarily take one of the available licenses off-site. While that license is off-site, the count of available licenses on the server is reduced by one, so no extra usage of the product is possible.
This tutorial assumes a basic familiarity with RLM licenses and license servers.
Uses and Non-Uses of Roaming
Roaming was designed with the mobile user in mind, that is, a user takes a portable machine off the enterprise network for a relatively short period of time, while still having use of an application normally licensed with a floating license. It was not designed to support high license availability scenarios where a roaming license is present on an immobile machine and is used in the event of a network or server failure.
ISV Control of Roaming
The ISV Decides:
- Whether to offer roaming at all – there is no requirement to do so.
- Which end-user organizations can use roaming – the ISV can be selective, perhaps charging more for the ability to roam.
- Which products may roam – individual products can be allowed to roam or not.
- What the maximum number of days a license can roam is, on a global or product-by-product basis.
Control of These Quantities is Via Two License Constructs in RLM:
- In order to set up a roaming license, the application must be able to check out a license named “rlm_roam”. If such a license is not present or is not valid, no roaming may occur. Thus, if an ISV wishes to allow roaming at some sites but not at others, it can control this by issuing rlm_roam licenses only to those sites which are entitled to use roaming.
- The maximum duration of the roam is controlled by the optional license attribute “max_roam”. For example, “max_roam=7” sets the maximum roam duration at 7 days. max_roam can appear in the rlm_roam license, on the individual product license, on both, or neither. If neither, a default max_roam of 30 days is used. If max_roam appears on the rlm_roam license but not on the individual product licenses, the value from the rlm_roam license is used for individual product licenses. If max_roam appears both places, the value on the individual license is used for that license. Max_roam can be -1, which disables roaming for the license it appears on.
It may be convenient for the application users not to have to deal with the rlm_roam license on client machines. The ISV can code the rlm_roam license directly into the application by passing it as the 3rd argument to rlm_init. For example:
Here is an example license file on a license server, with various roaming attributes:
Assuming that the rlm_roam license is compiled into the application as illustrated above:
- “product1” may roam for up to 7 days, as its max_roam of 7 overrides the max_roam on the compiled-in license
- “product2” may roam for up to 21 days – the max_roam value specified in the compiled-in rlm_roam license
- “product3” may not roam at all, as its max_roam of -1 overrides the max_roam on the compiled-in license
User Control of Roaming
The environment variable “RLM_ROAM” is the user’s control of roaming. RLM_ROAM can either be set directly in the environment by the user, or the application can set it in the environment via the C library function call “putenv()”.
To acquire a roaming license, RLM_ROAM is set to the number of days the user wishes to roam and the application is run. Any licenses it checks out from the license server while running are set up as roaming licenses for the period specified by RLM_ROAM.
To use a roaming license while disconnected from the network, the setting of RLM_ROAM may be set to a non-negative value, or it may remain unset.
To return a roaming license early, set RLM_ROAM to -1, reconnect to the network and run the application. It will connect to the license server and cancel the roam for the licenses checked out by the running application.
The following table describes the interaction between the RLM_ROAM setting, server connectedness, and existence of a valid roaming license, when attempting to check out a license.