config.macros.list["untagged"] = {prompt: "Tiddlers that are not tagged"};\n\nconfig.macros.list.untagged.handler = function(params)\n{\n//displayMessage("Building list of untagged tiddlers");\nvar results = [];\nfor(var t in store.tiddlers) {\nvar tiddler = store.tiddlers[t];\nif(tiddler.getTags() == "")\nresults.push(t);\n}\nresults.sort();\nreturn results;\n}
http://www.reprisesoftware.com
This is a [[CustomMacro|CustomMacros]] "borrowed" from [[TiddlyStyles|http://15black.bluedepot.com/]]. It lists all the sections that don't have any tags yet.\n\n<<list untagged>>\n\nCode:\n\n{{{\n<<list untagged>>\n}}}
\nAll licenses have a //expiration date//. If you prefer for your licenses to not expire, you can use the special expiration date of ''//permanent//'', which never expires (any date with a year of 0 is also non-expiring, e.g. 1-jan-0).
<<option chkOpenInNewWindow>> ~OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> ~SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to sections that are already open causes them to close\n^^(override with Control or other modifier key)^^
!rlmswitch - switches the debug log info to a new file\nUsage: ''rlmswitch'' [//isv//] //new-log-file-name//\n\nrlmswitch causes the server //isv// to close the current debug log file and begin output to //new-log-file-name//. If //isv// is not specified, or if specified as //rlm//, the rlm server's debug log is switched.
FLEX//lm// was developed by GLOBE//trotter// Software, Inc. It quickly became the most popular license management product in use and was referred to in the 1990's as the "de facto standard" in license management.\nGLOBE//trotter// was sold to Macrovision in 2000.\n\nFLEX//lm// and GLOBE//trotter// Software are registered trademarks of Macrovision Corp.
TiddlyWiki 1.2.31 by Jeremy Ruston, (jeremy [at] osmosoft [dot] com)\n\nPublished under a BSD open source license\nIncorporating improvements by Isao Sonobe, http://www-gauge.scphys.kyoto-u.ac.jp/~sonobe/OgreKit/OgreKitWiki.html\n\nCopyright (c) Osmosoft Limited, 14 April 2005\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of the Osmosoft Limited nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.
!rlmremove - remove a checked-out license from a user\nUsage: ''rlmremove'' [-q] //server-host port isv handle//\n\nrlmremove removes a checked-out license. If the //-q// option is specified, the license is removed without a confirming prompt. //server-host, port,// and //handle// are indicated in the //rlmstat// output. \n\nIn the following example //rlmstat// output, the //server-host// is ''melody'', the //port// is ''1215'', and the //handle// is ''809f418'' and the //isv// is ''reprise'':\n{{{\n reprise license usage status on melody (port 1215)\n\n test3 v1.000: tom@sun1(v1.0) (809f418) 1/0 at 02/06 09:59\n}}}\n\n\n\n
//RLM_ROAM// is the environment variable which controls License Roaming operations. For a description of how it works, see [[How to use Roaming Licenses]].
~RLM_QUEUE is the environment variable which informs an application that it should queue for a license is none are available. If ~RLM_QUEUE is set, any subsequent application started will queue for it's license if none are available. ~RLM_QUEUE first appeared in RLM v1.1. For a description of how to use ~RLM_QUEUE, see [[How to Queue for Licenses]].
\nEach RLM license has a version number, of the form "//major.minor//". The version in the //rlm_checkout()// call must be less than or equal to the version in the license for the checkout to succeed. (Note: This comparison is done in the "normal" way, ie, 1.2 is greater than 1.10).\n\nThe version can be used in a number of ways:\n\n * You could make all your software ask for version 1.0 with all your licenses issued for version 1.0, and the version would never be an issue, unless and until you wanted to obsolete all the old licenses on a new release.\n\n * You could put your product's version number in the rlm_checkout() call, then licenses for an older version of your product will not work with a newer version of the product.\n \n * You can use a date-based version. To do this, you might put the year of release into the //rlm_checkout()// call, then when you issue licenses, issue them either for this year, or some year in the future. This allows your customer to use products released on or before the year in the license. Alternately, you could make the version be "year.month" (bearing in mind that you would need to use the leading 0 in the month, since 2006.2 is greater than 2006.11, which might not be what you intend).
Format:\n!EXPRESS ON|OFF [//product//]\n\nThe EXPRESS line controls queuing behavior for one or all //product//s. If EXPRESS is turned on for a product, then queued requests which can be satisfied immediately are granted independent of whether other requests are ahead in the queue. If EXPRESS is turned off, then a queued request will always be placed at the end of the queue if it exists.\n\nIf the EXPRESS line does not specify a //product//, it applies to all products.\n\nBy default, EXPRESS is turned ON for all products in RLM.
\nA license can have a //soft_limit// that is lower than it's count of available licenses. Once usage exceeds the //soft_limit//, checkout requests will return the ~RLM_EL_OVERSOFT status instead of a 0 status.\n\nNote that when the license server pools separate licenses into a single license pool, the //soft_limit// of each license is added to obtain the pool's //soft_limit//. Also note that licenses which do not specify a //soft_limit// use the license //count// as their //soft_limit//.\n
\nIn order to render ineffective one or more licenses which you have already issued, use the //replace[=product-list]// option in the new license. //replace=// causes RLM to ignore the "replaced" license(s).\n\nNote: If you specify //replace//, you must also specify either //start=// or //issued=//.\n\n''//replace// operates as follows:''\n*licenses from the //product-list// will be replaced. If //product-list// is not specified, then the product name of the license containing the replace keyword will be the only product to be replaced.\n*if the license with the //replace// keyword specifies an //issued=// date, then this is the "//replacement date//".\n*if the license with the //replace// keyword does not have an //issued// date, then the "//replacement date//" is the //start// date of the license.\n*if the license contains neither an //issued// date nor a //start// date, no licenses will be replaced.\n*Any license in the list of products with an //issued// date prior to the //replacement date// will be replaced.\n*Any license in the list of products which does not have an issued date, but which has a //start// date prior to the //replacement date// will be replaced.\n*Finally, any license in the list of products with neither an //issued// nor a //start// date will be replaced.
The following is an example of a script which would start rlm at boot time on Unix systems. Modify the first 5 variables for the target system.\n\n{{{\n#! /bin/sh\n#\n# rlm Start/Stop rlm\n#\n\n#----------------------------------------------------------------\n#----------------------------------------------------------------\n#----------------------------------------------------------------\n# NOTE:\n# NOTE: Configure these 5 variables for your system\n# NOTE:\n\n# Set rlmuser to the user under which rlm will run\nrlmuser=bobm\n\n# Set rlmdir to the directory where the rlm binary is found\nrlmdir=/home/bobm/rlm/dev/rlm\n\n# Set rlmdir to the directory where the rlmdown binary is found\nrlmdowndir=$rlmdir\n\n# Set licfile to the path to the license file\nlicfile=$rlmdir/x.lic\n\n# Set debuglog to the path to the debug log\ndebuglog=+$rlmdir/rlm.dl\n#----------------------------------------------------------------\n#----------------------------------------------------------------\n#----------------------------------------------------------------\n\nstart() {\necho $debuglog\n su - $rlmuser -c "$rlmdir/rlm -c $licfile -dlog $debuglog &"\n}\n\nstop() {\n su - $rlmuser -c "$rlmdowndir/rlmdown RLM -q"\n} \n\ncase "$1" in\n start)\n start\n ;;\n stop)\n stop\n ;;\n restart)\n stop\n sleep 2\n start\n ;;\n *)\n echo $"Usage: $0 {start|stop|restart}"\n exit 1\nesac\n\nexit 0\n\n}}}
\nLicenses can be shared between separate running processes. To do so, use a //share=// specification in the license. A license can be shared between processes with the same username, hostname, or ~ISV-defined data, or any combination of these. Specify share as //share=UHI// where the keywords 'U', 'H', and 'I' indicate that the Username, the Hostname, or the ~ISV-defined fields must match. If more than one is specified, all specified must match in order to share the license. \n\nFor example, if share is specified as //share=UH//, then both the username and the hostname of a request must match an existing checked-out license in order to share that existing checked-out license. If share is specified as //share=u//, then only the usernames must match on two processes in order for them to share the license.\n\nBeginning in RLM v3.0, the share= keyword accepts an optional maximum process count which can share the license. To specify a maximum process count for a license that is shared by user, use:\n| share=U:nnn |\nwhere nnn is the number of processes which can share this license. The nnn+1st request will consume an additional license.\n\nIf the '':nnn'' specification is omitted, any number of processes can share the license. This was the behavior of license sharing prior to v3.0.\n\nNote that once a shared license is in use, it will continue to be in use until all the processes sharing the license check it back in. In other words, if 2 processes are sharing one license, and a 3rd process consumes a 2nd license (in the case where n==2), 2 licenses will continue to be in use until either (a) the 3rd process checks in it's license, or (b) BOTH the first and second processes check in their licenses. In other words, there is no dynamic re-combination of shared licenses done at license checkin time.\n\n
Format:\n!HOST //hostname// //hostid// [tcp/ip port #]\nThe HOST line specifies which computer the license server is to run on. There is only one HOST line per license file. Note that if a license file contains only nodelocked-uncounted licenses, a HOST line is not required.\n\n The //hostname// is the standard TCP/IP hostname for the system. This name is not an input to the license key signature algorithm, and thus can be changed at any time. \n\nThe //hostid// is RLM's idea of the computer's identification. The //hostid// is an input to the license key signature algorithm, so it cannot be changed. All licenses in the license file have this //hostid// as input to their license signatures, so it is important to avoid moving LICENSE lines from one license file to another, as this invalidates them.\n\nThe tcp/ip port number is the port which rlm attempts to use for communications. This number can be changed to any available port.\n\nFor a description of the various hostids that RLM supports, see [[RLM hostids]].\n\nExample:\n!HOST melody 80b918aa 2700\nIn this example, the license servers run on host "melody" at TCP/IP port # 2700.\n\nNote: The keyword "SERVER" can be used instead of "HOST".
\nRLM allows you to specify one or more timezones in which the applications must be running. If a //timezones=N// specification is contained in the license, the computer on which the application is running must be set to one of the specified timezones.\n\nTo specify one or more timezones, create a bitmask of the desired timezones, expressed as hours west of GMT:\n\nBit 0 - GMT\nBit 1 - 1 hour west of GMT\nBit 2 - 2 hours west of GMT\n...\nBit 23 - 23 hours west of GMT (or 1 hour east of GMT)\n\nThis bitmask should be represented as a hex number. So, for example, to allow your application to run in the GMT timezone only:\n|!timezone=1|\n\nTo allow your application to run in timezone 8 (PST):\n|!timezone=100|\n\nTo allow your application to run in timezones 5-8 (continental USA):\n|!timezone=1E0|\n
\nRLM allows you to specify one or more platforms on which the application must be running. If a //platforms=platform-list// specification is contained in the license, the computer on which the application is running must be one of the specified platforms.\n\nTo specify one or more platforms, create a list of platform names. The //platform-list// consists of a list of ~RLM-defined platform names, which consist of a machine architecture and an operating system version/revision. Specify //platforms=// as a space-separated list of platform names with the trailing OS revision removed, as shown in the following table. Note that if you specify more than one platform, enclose the entire string in double quotes, e.g.,\nplatforms="sun_s x86_w sun64_s". Also note that while you can include the trailing revision number, it will not be used by RLM in any comparisons, so including it may lead to confusion.\n\n|! Platform | !RLM Platform name | !string to use in //platforms=// |\n|~HP-UX on ~PA-Risc| hp_h1 | hp_h |\n|~HP-UX 64-bit on ~PA-Risc| hp64_h1 | hp64_h |\n|IBM AIX 32-bit| ibm_a1 | ibm_a |\n|IBM AIX 64-bit| ibm64_a1 | ibm64_a |\n|Linux on Intel X86| x86_l1, x86_l2 | x86_l |\n|Linux 64-bit on Intel| x64_l1 | x64_l |\n|MAC on Intel X86| x86_m1 | x86_m |\n|MAC on PPC | ppc_m1 | ppc_m |\n|Solaris 64-bit on Intel| x64_s1 | x64_s |\n|Solaris on Sparc| sun_s1 | sun_s |\n|Solaris (64-bit) on Sparc| sun64_s1 | sun64_s |\n|Windows on Intel X86| x86_w1 | x86_w |\n|Windows 64-bit on Intel X86| x64_w1 | x64_w |\n
/*Change Style Info Here*/\n\n/* The "sidebar" is the menu on the right */\n\n#sidebarOptions {\n border-top: 2px solid black;\n}\n
This tiddler is only slightly modfied from the entry on the ~TiddlyWiki home site. \n\nYou can save changes if you're using Firefox or Internet Explorer:\n* if you're using Internet Explorer on Windows XP you might run into [[ServicePack2Problems|http://www.tiddlywiki.com/#ServicePack2Problems]]\n\n# right click on [[this link|#]] and select 'Save link as...' or 'Save target as...' \n** choose where to save the file, and what to call it (but keep the .HTML extension)\n# open the newly downloaded file in your browser\n# click the 'options' button on the right to set your username\n# click the 'save changes' button on the right to save your changes (note that Firefox will give you as many as three security warnings. It's OK, just click Allow or check the "don't warn me again" box.)\n# ~TiddlyWiki will make a backup copy of the existing file, and then replace it with the new version\n
This product includes software developed by the ~OpenSSL Project for use in the ~OpenSSL Toolkit (http://www.openssl.org/)\n\n{{{\n/* ====================================================================\n * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in\n * the documentation and/or other materials provided with the\n * distribution.\n *\n * 3. All advertising materials mentioning features or use of this\n * software must display the following acknowledgment:\n * "This product includes software developed by the OpenSSL Project\n * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"\n *\n * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to\n * endorse or promote products derived from this software without\n * prior written permission. For written permission, please contact\n * openssl-core@openssl.org.\n *\n * 5. Products derived from this software may not be called "OpenSSL"\n * nor may "OpenSSL" appear in their names without prior written\n * permission of the OpenSSL Project.\n *\n * 6. Redistributions of any form whatsoever must retain the following\n * acknowledgment:\n * "This product includes software developed by the OpenSSL Project\n * for use in the OpenSSL Toolkit (http://www.openssl.org/)"\n *\n * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\n * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR\n * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * ====================================================================\n * \n * This product includes cryptographic software written by Eric Young\n * (eay@cryptsoft.com). This product includes software written by Tim\n * Hudson (tjh@cryptsoft.com).\n *\n */\n\n Original SSLeay License\n -----------------------\n\n/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)\n * All rights reserved.\n *\n * This package is an SSL implementation written\n * by Eric Young (eay@cryptsoft.com).\n * The implementation was written so as to conform with Netscapes SSL.\n *\n * This library is free for commercial and non-commercial use as long as\n * the following conditions are aheared to. The following conditions\n * apply to all code found in this distribution, be it the RC4, RSA,\n * lhash, DES, etc., code; not just the SSL code. The SSL documentation\n * included with this distribution is covered by the same copyright terms\n * except that the holder is Tim Hudson (tjh@cryptsoft.com).\n *\n * Copyright remains Eric Young's, and as such any Copyright notices in\n * the code are not to be removed.\n * If this package is used in a product, Eric Young should be given attribution\n * as the author of the parts of the library used.\n * This can be in the form of a textual message at program startup or\n * in documentation (online or textual) provided with the package.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. All advertising materials mentioning features or use of this software\n * must display the following acknowledgement:\n * "This product includes cryptographic software written by\n * Eric Young (eay@cryptsoft.com)"\n * The word 'cryptographic' can be left out if the rouines from the library\n * being used are not cryptographic related :-).\n * 4. If you include any Windows specific code (or a derivative thereof) from\n * the apps directory (application code) you must include an acknowledgement:\n * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"\n *\n * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * The licence and distribution terms for any publically available version or\n * derivative of this code cannot be changed. i.e. this code cannot simply be\n * copied and put under another distribution licence\n * [including the GNU Public Licence.]\n */\n \n}}}
Welcome to RLM, the newest license manager brought to you by the people who developed FLEXlm (R)\n\nWe are delivering our documentation to you in this format so that you can more easily navigate and save your own notes as you work with RLM. We welcome your comments and suggestions at [[info@reprisesoftware.com|mailto:info@reprisesoftware.com]]\n
This manual is intended for organizations that have purchased software which uses the Reprise License Manager. This manual explains how to install and configure the licensing system included with your software.
In RLM, queuing for licenses is under the software user's control for well-behaved applications.\n\nUnlike older license managers, RLM will queue for a license at every available license pool on every server, meaning you will not be stuck in a queue when there are licenses available on a server elsewhere.\n\nIn order to enable your application to queue for a license, set the environment variable ''RLM_QUEUE'' to any value. If ''RLM_QUEUE'' is set, the application will queue for it's license if it is not able to check the license out an any license server. Once the application recognizes that the license has been granted by a server, it automatically de-queues the requests at all the other servers.\n\n''EXPRESS License Pools''\n\nRLM has the concept of an ''EXPRESS'' License Pool. If a license pool is marked as ''EXPRESS'' (the default), then queued requests which can be satisfied immediately are granted independent of whether other requests are ahead in the queue. If EXPRESS is turned off, then a queued request will always be placed at the end of the queue if there is a waiting request. For more information on how to set up license pools as EXPRESS, see the [[EXPRESS]] option in [[The ISV Options File]].\n\nSince RLM applications queue at all license servers, a request for, say, 5 licenses, might take a long time to grant. In the meantime, up to 4 licenses could be available which could be granted to other applications which need only one license each. By setting some license queues to EXPRESS and turning off EXPRESS on others, you can bias the operation of different license servers to handle single or multiple license-requests more favorably.\n\n
!rlmreread - Cause the license server(s) to reread their license and option file(s).\nUsage: ''rlmreread'' [//isv//]\n\nrlmreread causes the specified ISV server //isv// to reread it's license file, and options file if specified in the license file (or if in the default location //isv//.opt). If //isv// is omitted, the reread command is sent to rlm and all ISV servers. If //isv// is specified as //rlm//, then only the rlm server rereads it's license file.\n\nWhen //rlm// rereads its license file, it starts any new ISV servers that were not present before.\n\nNote that //rlm// performs an automatic reread of the license file(s) every night at midnight.\n\nNote also that (on Unix systems only) the servers will do a reread if a SIGHUP signal is sent to the //rlm// process.
!rlmanon - change user and host names in report log file\nUsage: ''rlmanon'' logfile\n\nrlmanon reads the report log file //logfile//, and changes all the user and host names to the form ''//uNNN//'' and ''//hNNN//'', where //NNN// is a sequence number. The result is written into file //logfile.anon//.\n\nThere is a one-to-one mapping from a particular user or host name to it's corresponding sequence number, so that reports generated from the log file will accurately reflect the number of unique users and hosts as well as the sharing of licenses. However, actual user and host information is removed from the output //logfile.anon//.\n\n//rlmanon// creates a new authenticated report log file if the input log file is an unmodified authenticated log file. If the input file has incorrect authentication records, an error message is generated and no output file is written.\n\n//rlmanon// first appeared in RLM v4.0.
Format:\n!MINREMOVE //secs// [//product//]\n\nThe MINREMOVE line sets the minimum amount of time (//secs//) a license for product //product// must be checked out before it can be removed with //rlmremove//. \n\nMINREMOVE can never be set lower than the default value of 120 seconds.\n\nNote that a license could have a min_remove specification, in which case if you specify a MIMREMOVE value that is lower, the MINREMOVE will be unchanged.\n\nIf MINREMOVE is specified as -1, then rlmremove will not be allowed for this product.\n\nIf //product// is not specified, the MINREMOVE line applies to all products.\n\nNote: MINREMOVE is new in RLM v2.0.
Format:\n!ROTATE [daily | weekly | monthly | #days ]\n\nThe ROTATE option instructs the ISV server to automatically close and rename the old reportlog file, and begin writing a new reportlog file, according to the time specification given.\n\nNote that the ROTATE command will have no effect if the server is not writing a report log.\n\nThe (single) argument specifies the frequency of rotation of the reportlog file. Valid values are:\n*//daily// - rotate the report log file every night at midnight.\n*//weekly// - rotate the report log file every 7 days (at midnight) after it is opened.\n*//monthly// - rotate the reportlog file at midnight on the first day of the month.\n* //#days// - this is an integer specifying the number of days between rotations. The report log file will be rotated just after midnight after this # of days. Specifying //#days// as 7 is equivalent to "weekly".\n\nWhen the ISV server rotates the report log, the old report log file will be named:\n| //report_log_file_name//.yyyy.mm.dd |\nAnd the new report log file will be named:\n| //report_log_file_name// |\n\nWhere:\n//report_log_file_name// is the reportlog filename specified in the [[REPORTLOG]] option.\n\nThe yyyy.mm.dd is a decimal date, e.g. for September 13, 2007: 2007.09.13\n\n(Note: if the file //report_log_file_name.yyyy.mm.dd// already exists, the server will append a sequence number to the renamed report log, e.g. //report_log_file_name.yyyy.mm.dd.N// where //N// is an integer that starts at 1 and increases until a unique filename is created. The server will make 1000 attempts to create a unique filename, then log an error.)\n\nThe ROTATE option first appeared in RLM v4.0.
Format:\n!~ROAM_MAX_DAYS //num// //product//\n\nThe ROAM_MAX_DAYS line limits the number of days which a license can roam to //num// days for //product//. Note that if you specify ~ROAM_MAX_DAYS for the //rlm_roam// license, this will limit roaming on all products to the number of days specified.
Format:\n!~ROAM_MAX_COUNT //num// //product//\n\nThe ROAM_MAX_COUNT line limits the number of roaming licenses to //num// for //product//. Once //num// licenses of //product// are roaming, new roam requests will be denied.
Format:\n!TIMEZONE //timezone-spec// [//product//]\n\nThe TIMEZONE option allows the specification of a set of valid timezones for the client machine that performs the license checkout. The timezone-spec is a 24-bit HEX number, with one bit set for each timezone you wish to be valid. Bit 0 represents GMT and each bit to the "left" of bit 0 represents one timezone (one hour) west of GMT. Thus bit 5 would be EST, bit 8 would be PST, bit 23 would be one hour east of GMT, etc. Note that RLM uses the current local time, so the timezones will move by one hour when Daylight Savings Time is in effect (ie, PST varies from 7 to 8 hours west of GMT), so for example, to enable use of a license in PST during both normal and Daylight Savings Time, specify bits 7 and 8 in the //timezone-spec// as follows:\n\nTIMEZONE 180 [product-name]\n\nIf //product-name// is specified, the timezone restriction applies to all licenses for product //product-name//. If //product-name// is not specified, the timezone restriction applies to all licenses for this server.\n\nThe timezone restrictions specified in the TIMEZONE option are used to further restrict the license. If the combination of the timezone specified in the license and the timezone in the option would result in a license that has no valid timezones, then the TIMEZONE option is ignored. So, for example, if the license specified timezone=fff000 and the option specified TIMEZONE ff, the result would be no valid timezones, and the license timezone (fff000) would be used. Note that this can also happen if you have more than one TIMEZONE option in your options file as well, eg:\n\nTIMEZONE ff0000\nTIMEZONE 180 prod\n\nwould cause the second TIMEZONE option (for product //prod//) to be ignored.\n\n\nNote: The TIMEZONE option was added in rlm v2.0.
The RLM API functions return status values which are used in the Report Log.\n\n! RLM_LICENSE errors and status:\n\n| !Status | !Value | !Meaning |\n|0| 0| Success |\n|~RLM_EL_ALLINUSE| -22| All licenses in use |\n|~RLM_EL_APP_INACTIVE| -44| Application is inactive |\n|~RLM_EL_BADDATE| -7| bad date format - not permanent or dd-mm-yy |\n|~RLM_EL_BADHOST| -43| bad hostname in license file or port@host |\n|~RLM_EL_BADKEY| -5| Bad key in authorization |\n|~RLM_EL_BADPARAM| -41| Bad parameter to rlm_checkout() call |\n|~RLM_EL_BADVER| -6| Requested version not supported |\n|~RLM_EL_CANT_GET_DATE| -38| time() call failure |\n|~RLM_EL_COMM_ERROR| -17| Error communicating with server |\n|~RLM_EL_EXPIRED| -3| Authorization has expired |\n|~RLM_EL_INQUEUE| -25| In queue for license |\n|~RLM_EL_NO_HEARTBEAT| -21| No heartbeat response received |\n|~RLM_EL_NOHOSTID| -23| No hostid on uncounted license |\n|~RLM_EL_NO_SERV_HANDLE| -28| Server does not know this license handle |\n|~RLM_EL_NO_SERV_SUPP| -18| License server doesn't support this |\n|~RLM_EL_NOAUTH| -9| No license auth supplied to call |\n|~RLM_EL_NOHANDLE| -19| No license handle |\n|~RLM_EL_NOPRODUCT| -1| No authorization for product |\n|~RLM_EL_NOROAM_FAILOVER| -42| Roam operations not allowed on failover server |\n|~RLM_EL_NOT_INC| -13| Not on the feature include list |\n|~RLM_EL_NOT_INC_ALL| -12| Not on the includeall list |\n|~RLM_EL_NOT_INC_ROAM| -30| Not on the roam include list |\n|~RLM_EL_NOT_NAMED_USER| -45| User is not on the named-user list |\n|~RLM_EL_NOT_STARTED| -37| License start date in the future |\n|~RLM_EL_NOTTHISHOST| -4| Wrong host for authorization |\n|~RLM_EL_NOTME| -2| Authorization is for another ISV |\n|~RLM_EL_ON_EXC_ALL| -10| On excludeall list |\n|~RLM_EL_ON_EXC_ROAM| -29| On roam exclude list |\n|~RLM_EL_ON_EXC| -11| On feature exclude list |\n|~RLM_EL_OVER_MAX| -14| Request would go over license MAX |\n|~RLM_EL_OVERSOFT| -39| Request goes over license soft_limit |\n|~RLM_EL_REMOVED| -15| License (rlm)removed by server |\n|~RLM_EL_RLM_ROAM_ERR| -34| Cannot check out rlm_roam license |\n|~RLM_EL_ROAM_TOOLONG| -27| Roam time exceeds maximum |\n|~RLM_EL_ROAMFILEERR| -33| Problem with roam file |\n|~RLM_EL_SERVER_BADRESP| -16| Unexpected response from server |\n|~RLM_EL_SERVER_DOWN| -20| Server closed connection |\n|~RLM_EL_SYNTAX| -26| License syntax error |\n|~RLM_EL_TIMEDOUT| -24| License timed out by server |\n|~RLM_EL_TOOMANY| -8| checkout request for too many licenses |\n|~RLM_EL_TOOMANY_ROAMING| -31| Too many licenses roaming already |\n|~RLM_EL_TS_DISABLED| -46| Terminal server/remote desktop disabled |\n|~RLM_EL_WILL_EXPIRE| -32| License expires before roam period ends |\n|~RLM_EL_WINDBACK| -40| Clock setback detected |\n|~RLM_EL_WRONG_PLATFORM| -35| Wrong platform for client |\n|~RLM_EL_WRONG_TZ| -36| Wrong timezone for client |\n
\nA "held license" is a license that remains checked-out on the license server after the application exits or checks the license back in via rlm_checkin(). By specifying //hold=N// in the license, the license will be held for N seconds after checkin.\n\nA held license is always held for the specified number of seconds after the license is checked in. By contrast, the minimum checkout time specification (min_checkout) causes a license to be held if it was not checked out for the entire minimum checkout interval.\n\nSee also: [[Minimum Checkout Time Specification]].\n\nExample 1:\n\nhold=30\napplication checks license out for 5 minutes\napplication checks license in\nat this point, the server keeps the license checked out for an additional 30 seconds.\n\nExample 2:\n\nmin_checkout=30\napplication checks license out for 5 minutes\napplication checks license in\nat this point, the license will be checked in by the server with no extra hold time.\n\nExample 3:\n\nmin_checkout=400\napplication checks license out for 5 minutes\napplication checks license in\nat this point, the server keeps the license checked out for an additional 100 seconds.\n\nNOTE: The license server scans all held licenses once per minute, so the exact time of checkin\ncan be rounded up to the next 60 seconds. So, in example 3 above, the checkin could happen\nany time between 100 seconds and 120 seconds after the rlm_checkin() call.\n\nNOTE: The hold time specification will be ignored for any license which is roaming.\n\nmin_checkout first appeared in RLM v6.0
\nThe minimum checkout time specifies a minimum number of seconds that a license can remain checked out. If the license is checked back in before this minimum amount of time, the license is held (similar to a held license) for the remainder of the minimum checkout time. By contrast, a held license (hold=nnn) always remains checked out by the server for the specified amount of time after the application checks it back in.\n\nSee also [[Hold Time Specification]].\n\nExample 1:\n\nhold=30\napplication checks license out for 5 minutes\napplication checks license in\nat this point, the server keeps the license checked out for an additional 30 seconds.\n\nExample 2:\n\nmin_checkout=30\napplication checks license out for 5 minutes\napplication checks license in\nat this point, the license will be checked in by the server with no extra hold time.\n\nExample 3:\n\nmin_checkout=400\napplication checks license out for 5 minutes\napplication checks license in\nat this point, the server keeps the license checked out for an additional 100 seconds.\n\nNOTE: The license server scans all held licenses once per minute, so the exact time of checkin\ncan be rounded up to the next 60 seconds. So, in example 3 above, the checkin could happen\nany time between 100 seconds and 120 seconds after the rlm_checkin() call.\n\nNOTE: The minimum checkout time specification will be ignored for any license which is roaming.\n\nmin_checkout first appeared in RLM v6.0
\nRLM can lock a license in a variety of ways:\n#A license can be //node-locked//. A node-locked license can only be used on a single node, as specified by the //hostid// of the license. For a description of the available hostids in RLM, see [[RLM hostids]].\n**A node-locked license can be either //counted//, //uncounted//, or //single//. If it is //uncounted// or //single//, then the software only need verify that it is executing on the correct computer, and no license server is required. If it is counted, however, a //license server// is required to maintain a count of licenses currently in use. (Note that //single// licenses are checked locally to ensure that only one instance is running.)\n**To create a node-locked license, add the keyword ''hostid=..'' at the end of the license line. See the description of the [[LICENSE Line]] for more information.\n#A license can be locked to a user. This is a special case of a //node-locked// license, and is accomplished using the hostid ''user=...''. Note that any white space in a username is converted to the underscore ('_') character.\n#A license can be //floating//. This license will work anywhere on the network that can communicate with the //license server//. To specify a //floating// license, do not put a ''hostid='' keyword on the license.
!rlmrefresh - refreshes any refreshable licenses found in the specified directory\nUsage:''rlmrefresh'' //directory [isv]//\n\n\nrlmrefresh looks through all the license files found in //directory// and refreshes any refreshable licenses found. If //isv// is specified, only licenses issued by that ISV are refreshed, otherwise licenses from all ~ISVs are refreshed.
Format:\n!~HOST_GROUP //name// list-of-hostnames\n\nThe ~HOST_GROUP line defines a group of users to be used in an EXCLUDE, EXCLUDEALL, INCLUDE or INCLUDEALL line. Separate the hostnames in the list by spaces. Prior to RLM v9.0, only the first definition of a particular group name is used. Starting in RLM v9.0, multiple lines that specify the same ~HOST_GROUP name will have their lists of hostnames concatenated.\n\nExample:\n!~HOST_GROUP corporate node_a node_b node_c\n\nExample (rlm v9.0+). This example results in a group of 6 hosts:\n!~HOST_GROUP corporate node_a node_b node_c\n!~HOST_GROUP corporate node_d node_e node_f
Format:\n!GROUP //name// list-of-usernames\n\nThe GROUP line defines a group of users to be used in an EXCLUDE, EXCLUDEALL, INCLUDE, INCLUDEALL, MAX or RESERVE line. Separate the usernames in the list by spaces. Prior to RLM v9.0, only the first definition of a particular group name is used. Starting in RLM v9.0, multiple lines that specify the same GROUP name will have their lists of usernames concatenated.\n\nExample:\n!GROUP engineers tom dick harry\n\nExample (rlm v9.0+). This example results in a group of 6 users:\n!GROUP engineers tom dick harry\n!GROUP engineers larry curly moe
Format:\n!GROUP //name// list-of-usernames\n\nThe GROUP line defines a group of users to be used in an EXCLUDE, EXCLUDEALL, INCLUDE, or INCLUDEALL line. Separate the usernames in the list by spaces. Prior to RLM v9.0, only the first definition of a particular group name is used. Starting in RLM v9.0, multiple lines that specify the same GROUP name will have their lists of usernames concatenated.\n\nExample:\n!GROUP engineers tom dick harry\n\nExample (rlm v9.0+). This example results in a group of 6 users:\n!GROUP engineers tom dick harry\n!GROUP engineers larry curly moe
!rlmdebug - display debugging information about products\nUsage: ''rlmdebug'' [product]\n\n''rlmdebug'' prints information about the specified //product// (or all products if //product// is not specified). The debugging information is written to stdout (this requires running in a command window on Windows systems).\n\nThis capability is also built into every RLM v9.0 application. To use the debugging information directly from the application, set the //RLM_DEBUG// environment variable to the product name (or to an empty string if you wish to debug all products). (Note: you do not need to use the //RLM_DEBUG// environment variable with the ''rlmdebug'' utility.)\n\nSample rlmdebug output:\n\n % setenv ~RLM_DEBUG\n\nWhen the application is run the following (sample) output is displayed (in addition to any other output the application may produce):\n\n{{{\n RLM DEBUG for all products\n In license file: ../rlm/z.lic (5555@paradise):\n Product: test1, ISV: reprise, Floating\n Product: test2, ISV: reprise, Floating\n Product: test3, ISV: reprise, Floating\n Product: rlm_roam, ISV: reprise, Uncounted\n Product: testr1, ISV: reprise, Floating\n Product: testr2, ISV: reprise, Floating\n Checking server machine "paradise" ... server UP\n Checking RLM server at port 5555 ... server UP\n\n In license file: a.lic:\n Product: test, ISV: reprise, Single\n\n 8 product instances found\n}}}\n
!rlmdown - shuts down the license server\nUsage: ''rlmdown'' [-q] [isv]\n\nrlmdown shuts down the first license server in the license path RLM_LICENSE. If the //-q// option is specified, the shutdown happens without a confirming prompt. If the optional //isv// is specified, only that ISV's server is shut down.\n\nIn order to shut down the rlm server itself, specify the isv name as ''RLM''. (Note: RLM must be in capital letters).\n\nNote that (on Unix systems only) the servers can also be shut down by sending a SIGTERM signal to the //rlm// process. SIGTERM shuts down all the servers, including rlm.\n
Format:\n!DEBUGLOG [+]//file_path//\nThe DEBUGLOG option instructs the ISV server to write a debug log to the filename //file_path//. If //file_path// is preceded with a '+' sign, the new data is appended to the file, otherwise the file is overwritten. This may be useful if you have many ISV servers and want to isolate the debug output from one server in a separate file.\n\n''NOTE on the use of DEBUGLOG when running the server as a Windows Service:''\n\nIf no DEBUGLOG is specified in the ISV options file, rlm will write the ISV debug log in:\n\n<location of rlm.exe>\s<isv>.dlog\n\nThis file will be overwritten every time the ISV server starts, since there is no opportunity to specify that the file should be appended to in the default case. In fact, the ISV server logs a few lines to this file at startup time even if a DEBUGLOG is specified in the ISV options file. It is overwritten every time the ISV server starts, but its contents don't change startup to startup, so nothing important is lost.\n\nReprise Software Inc. recommends that the debug log path be specified in the ISV options file, and that the append behavior be enabled with '+'<path>. However, it is important not to specify the debug log name as <isv>.dlog, as this specific file is overwritten at each startup.\n
Format:\n!NOLOG in|out|denied\nThe NOLOG option instructs the ISV server to omit logging to the debug log of either CHECKIN, CHECKOUT, or DENIED messages, as specified. You must specify one NOLOG line for each item which you do not want to be logged.\nExample:\n!NOLOG denied\nThis example causes the ISV server to omit the logging of DENIED events in the debug log.
Format:\n!NOLOG status\nThe NOLOG option instructs the rlm server to omit logging of status requests to the debug log.\nExample:\n!NOLOG status\nThis example causes the rlm server to omit the logging of status requests in the debug log.
Format:\n!INCLUDEALL [user|host|group|host_group|internet] //who//\n\nThe INCLUDEALL line grants all //privileges// to a particular user, host, group, host_group, IP address, or project. If you specify group or host_group, it must be defined by a GROUP or HOST_GROUP line in the RLM options file. Anyone not on the INCLUDEALL list is not allowed to use a capability controlled by any //privilege//.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nFor a list of the //privileges// available, see [[The RLM Options File]].
Format:\n!INCLUDE //privilege// [user|host|group|host_group|internet] //who//\n\nThe INCLUDE line grants the specified //privilege// to a particular user, host, group, host_group, IP address, or project. If you specify group or host_group, it must be defined by a GROUP or HOST_GROUP line in the RLM options file. Anyone not specified by the INCLUDE line is not allowed access to the capabilities defined by //privilege//.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nFor a list of the //privileges// available, see [[The RLM Options File]].
Format:\n!EXCLUDEALL [user|host|group|host_group|internet] //who//\n\nThe EXCLUDEALL line prevents usage of all capabilities defined by all //privileges// by a particular user, host, group, host_group, IP address, or project. If you specify group or host_group, it must be defined by a GROUP or HOST_GROUP line in the RLM options file.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nFor a list of the //privileges// available, see [[The RLM Options File]].
Format:\n!EXCLUDE //privilege// [user|host|group|host_group|internet|project] //who//\n\nThe EXCLUDE line removes the specified //privilege// from a particular user, host, group, host_group, IP address, or project. If you specify group or host_group, it must be defined by a GROUP or HOST_GROUP line in the RLM options file.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nFor a list of the //privileges// available, see [[The RLM Options File]].
!rlmswitchr - switches the report log info to a new file\nUsage: ''rlmswitchr'' //isv new-log-file-name//\n\n//rlmswitchr// causes the ISV server //isv// to close the current reportlog file and begin output to //new-log-file-name//.\nBeginning in RLM v9.1, //rlmswitchr// will fail if the server is not currently writing a report log.
!rlmnewlog - moves the old report log info to a new file\nUsage: ''rlmnewlog'' isv new-log-file-name\n\nrlmnewlog causes the ISV server //isv// to move the current reportlog output to //new-log-file-name//, and continue logging to the original filename.\n\nNote that the //new-log-file-name// must be on the same filesystem as the original reportlog, otherwise the command will fail. The ISV server renames the old reportlog, it does not copy the data. //rlmnewlog// will fail if the server is not currently writing a report log.
!rlmstat - obtains status from the license servers\nUsage: ''rlmstat'' [-a] [-i [isv] ] [-l [ isv] ] [-n [host] ] [-p [product] ] [-u [user] ]\n\n''rlmstat'' retrieves status from the license servers and prints it. Control over the status retrieved from ''rlmstat'' is specified as follows:\n\n|!option|!parameter (meaning if present)| !result |\n| -a | (no parameters) | Print all status from rlm and all ISV servers |\n| -avail | [-i isv] [-p product] -b | Reports free license availability (see below) |\n| -i | display this //isv// only | Display license checkout info from ~ISVs |\n| - l | display this //isv// only | Display license pooling info from ~ISVs |\n| -n | display licenses from this //host// only | Display license checkout info from ~ISVs |\n| -p | display licenses for this //product// only | Display license checkout info from ~ISVs |\n| -u | display licenses from this //user// only | Display license checkout info from ~ISVs |\n\n!Example rlmstat output\n{{{\n% rlmstat -a\nrlmstat v9.1\nCopyright (C) 2006-2011, Reprise Software, Inc. All rights reserved.\n\n\n rlm status on bigserver (port 5053), up 00:03:51\n rlm software version v9.1 (build:3)\n rlm comm version: v1.1\n Startup time: Wed Jul 6 13:27:42 2011\n Todays Statistics (00:03:50), init time: Wed Jul 6 13:27:43 2011\n Recent Statistics (00:03:50), init time: Wed Jul 6 13:27:43 2011\n\n Recent Stats Todays Stats Total Stats\n 00:03:50 00:03:50 00:03:51\n Messages: 9 (0/sec) 9 (0/sec) 9 (0/sec)\n Connections: 7 (0/sec) 7 (0/sec) 7 (0/sec)\n\n --------- ISV servers ----------\n Name Port Running Restarts\n reprise 62503 Yes 0\n\n ------------------------\n\n reprise ISV server status on bigserver (port 62503), up 00:03:49\n reprise software version v9.1 (build: 3)\n reprise comm version: v1.1\n reprise Debug log filename: <stdout>\n reprise Report log filename: <stdout>\n Startup time: Wed Jul 6 13:27:44 2011\n Todays Statistics (00:03:49), init time: Wed Jul 6 13:27:44 2011\n Recent Statistics (00:03:49), init time: Wed Jul 6 13:27:44 2011\n\n Recent Stats Todays Stats Total Stats\n 00:03:49 00:03:49 00:03:49\n Messages: 17 (0/sec) 17 (0/sec) 17 (0/sec)\n Connections: 6 (0/sec) 6 (0/sec) 6 (0/sec)\n Checkouts: 2 (0/sec) 2 (0/sec) 2 (0/sec)\n Denials: 0 (0/sec) 0 (0/sec) 0 (0/sec)\n Removals: 0 (0/sec) 0 (0/sec) 0 (0/sec)\n\n\n ------------------------\n\n reprise license pool status on bigserver (port 62503)\n\n test v1.0\n count: 1, # reservations: 0, inuse: 1, exp: 1-jan-0\n obsolete: 0, min_remove: 20, transactions: 1\n test2 v1.0\n count: 1, # reservations: 0, inuse: 1, exp: 1-jan-0\n obsolete: 0, min_remove: 20, transactions: 1\n test3 v1.0\n count: 100, # reservations: 0, inuse: 0, exp: 1-jan-0\n obsolete: 0, min_remove: 20, transactions: 0\n\n\n ------------------------\n\n reprise license usage status on bigserver (port 62503)\n\n test v1.0: joe@library 1/0 at 07/06 13:27 (handle: 41)\n test2 v1.0: sam@kitchen 1/0 at 07/06 13:28 (handle: 81)\n\n\n}}}\n\nIn this output, the first section (before the line of dashed lines ---------) is the status of the rlm server, the next section is the status of the ISV server //reprise// (there would actually be one section of status for each ISV server if there were more than one running). Next comes the //license pool// info for each ISV server (again, only one section for the //reprise// server), followed by the actual license usage information.\n\nAlso, please note that the expiration date shown in this output is the expiration date of the ''first license to expire'' out of all the licenses used to create the license pool in the license server. When more than one license is used to create a single license pool (licenses are combined when all relevant parameters of 2 different licenses match), then only the ''earliest expiration date'' is shown. The other license(s) may have any expiration date that has not yet expired. To determine the expiration date of all licenses used to make up a license pool the actual license file must be consulted. Also note that licenses from different license files could be combined to make a single license pool.\n\n\nThe meaning of the license usage line:\n{{{\n test v1.0: joe@library 1/0 at 07/06 13:27 (handle: 41)\n}}}\n\nis as follows:\n\n''test'' is the product name\n''v1.0'' is the license version (from the license file) for //test//\n''joe'' is the user who is using the license\n''library'' is the host on which tom is using the license\n''(41)'' is the //license handle// in the server. This handle is used by the //rlmremove// command.\n''1/0'' indicates that 1 unreserved and 0 reserved licenses are in use\n''at 07/06 13:28'' is the time the licenses were checked out\n\n!rlmstat -avail command\nThe //rlmstat -avail// command reports on license availability for a specified license, a specfied ISV, or all licenses from all ~ISVs.\n\nUsage:\n\n//rlmstat -avail [-i isv] [-p product] [-b]//\n\nIf //-i isv// is specified, only licenses from the selected isv are displayed.\nIf //-p product// is specified, only the selected product is displayed.\nIf //-b// is specified, license availability is combined across license servers.\n\nNote that if you are looking for the availability of a license from a particular ISV, it is more efficient to specify the ISV name in the command. If you do not specify the ISV name, rlmstat must contact the rlm server to request a list of ISV servers, then request information from each ISV server. If you specify the ISV, then only that ISV server is contacted.\n\nNote also that there are situations when you may not be able to check out a license that is listed as available. This can happen if, for example, you are on the EXCLUDE list for a particular product, not on the INCLUDE list, already exceeded your MAX usage, etc.\n\nAlso note that you might be able to check out one that is listed as not available. This could happen if that license is shared and you can share an existing checked-out license, or if one of the reservations for the license is for you (//rlmstat -avail// lists free available licenses; reservations are not generally available).\n\nrlmstat -avail is new in RLM v2.0.\n\n!Example rlmstat -avail output\n{{{\n% rlmstat -avail -i reprise\nrlmstat v9.1\nCopyright (C) 2006-2011, Reprise Software, Inc. All rights reserved.\n\nLicense availability for all products from ISV "reprise"\n\n server host: telecard (port 5053)\n test1 v1.000 available: 15\n test1 v1.000 hostid: a8c00301 available: 10\n test5 v3.000 hostid: a8c00301 available: 2\n test5 v3.000 available: 10\n test v1.000 available: 10\n\n server host: spinout (port 5053)\n test1 v1.000 available: 15\n test1 v1.000 hostid: a8c00301 available: 10\n test5 v4.000 hostid: ip=172.16.7.28 available: unlimited\n test5 v2.300 available: 15\n test5 v3.000 hostid: a8c00301 available: unlimited\n test5 v3.000 available: 73\n\n}}}\n\n!Example rlmstat -avail -b output (same situation as above)\n{{{\n% rlmstat -avail -i reprise -b\nrlmstat v9.1\nCopyright (C) 2006-2011, Reprise Software, Inc. All rights reserved.\n\nLicense availability for all products from ISV "reprise"\n\n ISV: reprise\n test1 v1.000 available: 30\n test1 v1.000 hostid: a8c00301 available: 20\n test5 v3.000 hostid: a8c00301 available: unlimited\n test5 v3.000 available: 83\n test5 v4.000 hostid: ip=172.16.7.28 available: unlimited\n test5 v2.300 available: 15\n\n}}}
\nYou can assign a password to a license in order to restrict the ability to check out, or even see the license.\n\nTo do this, specify:\n\n_password = password-string\n\nin the license.\n\nIf specified, a license password restricts access to this license to requests which have specified the same password-string. The password-string is specified with the ~RLM_LICENSE_PASSWORD environment variable, or in the RLM web interface.\n\nNote that the license password does not factor into the license signature, and hence can be changed at any time after the license is signed. Also note that license passwords only work with served licenses, not nodelocked, uncounted or single licenses in local license files.\n\nAlso note that if you do assign a password to a license, and the application fails to supply the correct password, the server will return a "License Server does not support this product" error (status -18) when a checkout is attempted.\n\nNote: Beginning in RLM v9.2, license passwords can be specified on the ISV line, with the new "password=password-text" option. When specified this way, the password on the ISV line applies to all LICENSE or FEATURE lines for the ISV which ''follow'' the ISV line in the license file. If an individual LICENSE line specifies a password, the password from the LICENSE line is used.\n
Format (pre-RLM v9.0):\n!ISV //isvname// [//isv-binary-pathname// [//options-file-filename// [//port-number//]]]\nFormat (RLM v9.0+):\n!ISV //isvname// [//isv-binary-pathname// [//options-file-filename// [//port-number//]]] [binary=//isv-binary-pathname//] [options=//options-file-filename//] [port=//port-number//] [password=password-text]\nThe ISV line specifies an ISV's license server. There is one ISV line in the license file for every //isvname// which has licenses in that file. Note that if a license file contains only nodelocked-uncounted licenses for a particular //isv//, an ISV line is not required for that //isv//.\n\n The //isvname// is the name assigned to the ISV and does not change.\n\nBeginning in RLM v6.0, the ISV server can be delivered as either an executable (as in all older versions of RLM) or as a small, platform-independent ISV server ''settings'' file (named //isvname//.set by default).\n\nThe //isv-binary-pathname// is the filesystem location of the ~ISVs license server binary. This can be any accessible location. The //isv-binary-pathname// is not an input to the license key signature algorithm, so it can be changed at any time. Starting in RLM v3.0, the ISV pathname can be omitted if the isv server is located in the same directory as the rlm binary. If omitted, RLM will first attempt to open an ISV server settings file (//isvname//.set), and if that fails, will attempt to open a license server binary (//isvname//.exe on windows, or //isvname// on unix).\n\nThe third (optional) parameter specifies whether an options file is to be used for this license server. If you would like to specify options (see [[The ISV Options File]]), either specify the location of the file containing these options here, or name the ISV options file //isvname//.opt and place it in the directory which contains the license file which the server reads.\n\nThe fourth (optional) parameter specifies the port # which the ISV server will use. This should normally be omitted, but can be used if you need to access the ISV server across a firewall and the firewall needs to be configured to allow access to the port. Note that you must specify an options file if you want to specify an ISV server port number.\n\nThe fifth (optional) parameter (new in RLM v9.2) specifies a license password to be applied to all LICENSE or FEATURE lines which ''follow'' the ISV line in the license file. If an individual LICENSE line has a password, the password from the LICENSE line is used.\n\nIn the old format, the parameters are strictly positional, and, for example, to specify a port #, the ISV server binary and options file must both be specified. However, in the new format, any of the optional parameters can be specified by themselves. Also note that any number of the positional parameters can be specified, and optional parameters can be added after the positional parameters.\n\nNote that, in the new format, if you specify the same parameter both as a positional parameter and as a keyword=value parameter, the value of the keyword=value parameter will be used.\n\nExamples:\n!ISV reprise /home/reprise/reprise /home/reprise/reprise.opt (old format)\n!ISV reprise options=/home/reprise/reprise.opt binary=/home/reprise/reprise (new format)\n!ISV reprise /home/reprise/reprise port=8765 (new format)\n!ISV reprise /home/reprise/reprise binary=/a/b/reprise\n\nIn these examples, the license server for ISV //reprise// is located at /home/reprise/reprise and (in the first 2 examples) an options file is located at /home/reprise/reprise.opt. In the 3rd example an ISV server port # is specified. In the fourth example, the ISV server binary name /a/b/reprise will be used instead of /home/reprise/reprise.\n\n\nNote: The keyword "VENDOR" can be used instead of "ISV".
RLM has the ability to allow a floating license to roam to a system which will subsequently be disconnected from the network. The resulting license can be used for the number of days specified when the license was set to roam, and is checked back in automatically at the end of this time. In addition, you can return the roamed license back to the license pool early if this is desired.\n\n!How to know if License Roaming is Available\nYour ISV makes the decision to enable roaming licenses. If you have been issued an //rlm_roam// license, then roaming is available to you with the restrictions specified in the //rlm_roam// license.\n\nNote that you must be able to check out an //rlm_roam// license on any system that is disconnected. Practically speaking, this means that disconnected systems need a local license file with a node-locked //rlm_roam// license in it.\n\n!How to make a License Roam\nIf you have an //rlm_roam// license, set the environment variable ''RLM_ROAM'' to the number of days which you would like to use the license (this license will be available until midnight on the last day of the roam, so for example if you specify one day, the license is available until midnight tomorrow). Once ''RLM_ROAM'' is set, run the product and let it check out it's license(s). If the checkout succeeds, then the license is set up to roam. You can repeat this procedure for any other products that have roaming capability enabled.\n\nBe sure your //rlm_roam// license is contained in a license file that is local to this system, otherwise you will not be able to use these licenses.\n\n!While your system is connected to the network\nAfter the initial checkout of the roaming license, but during the time your system is connected to the network, the value of ''RLM_ROAM'' will affect the behavior of the roaming license. If ''RLM_ROAM'' remains set to the original value, the license will be "refreshed" each day to the total roam time. On the other hand, if ''RLM_ROAM'' is set to 0, the original roam end date will remain, and no subsequent checkouts of the license will alter the final roam day. \n\nWhat this means, for example, is that if you set ''RLM_ROAM'' to 14 days, the license will always be available to you 14 days after the last time you checked it out on the network. If, however, you first set ''RLM_ROAM'' to 14 days, check out the license, then set ''RLM_ROAM'' to 0, the license will be available on the disconnected system for 14 days from the date of the first checkout, no matter how many times you check it out while connected.\n\n!While your system is disconnected\nDuring the time your system is disconnected, ''RLM_ROAM'' must remain set to a non-negative value. This license will be available on this system for the number of days you requested, and you no longer need to be able to access the license server from which the license was granted.\n\nOn the network, the license server will show the license checked out to you.\n\nNote: Starting in RLM v4.0, RLM_ROAM no longer needs to be set on the disconnected system. Note that if you are connected to the network and do not set RLM_ROAM, you may check out a license from the license server rather than using the roamed license. If this is not desired, you can set RLM_ROAM to a positive number which will cause the roamed license to be used. Also note that if RLM_ROAM is not set, the checkout of the "rlm_roam" license must come from a local license file, not from the license server.\n\n\n!If you want to return the Roamed License early\nIf your plans change and you would like to return the license before the roaming time has expired, reconnect the system to the network (so that it can contact the original license server), and set the environment variable ''RLM_ROAM'' to -1. Now run the program and let it check out the license. Once the program exits (or does a checkin), the roamed license will be returned to the license pool on the server. Please note that if you change the server node name or port number after you roam the license, you //will not be able// to return the license early.
!rlmhostid - print the hostid of this machine\nUsage: ''rlmhostid'' [[-]32|ether|ip|internet|host|user] [-q]\n\nrlmhostid prints the hostid of the machine it is running on. If the //-q// flag is specified, the hostid is printed without any other output.\n\nHostid types are:\n|!Hostid type|!Description|!Notes|\n|32 | Native machine ID, 32-bit |\n|ether| ethernet address (eg: 00801935f2b5) | Always printed without "ether=" |\n|ip or internet| Internet Address (eg 192.9.1.128) | Always printed as "ip=" |\n|host| Host name (not secure) |\n|user| User name (not secure) |\n\nNote: Beginning in RLM v4.0, if the rlmhostid command prints "(Virtual: some text)" after the hostid, this means that the command is run on a virtual system which is not supported for running an RLM license server. In the case of Solaris systems, license servers can only be run on zone 0 (the "Global" zone).
''Reprise License Manager ^^TM^^ (RLM) - Copyright (C) 2005-2012, Reprise Software, Inc.'' \n\nRLM contains software developed by the ~OpenSSL Project for use in the ~OpenSSL Toolkit (http://www.openssl.org/)\n\nRLM contains software (the [[GoAhead WebServer]]) developed by ~GoAhead Software, Inc. (http://www.goahead.com)\n\nThe RLM documentation is produced with ~TiddliWiki ([[Copyright (c) Osmosoft Limited, 14 April 2005]])\n\nThe //rlmid// options contain copyrighted materials as follows:\n*//rlmid1// devices are manufactured by Aladdin Knowledge Systems, Inc. (now ~SafeNet Inc.).\n*//rlmid2// devices are manufactured by ~SafeNet, Inc.\n\n''Detached Demo, Open Usage, Reprise Software, Reprise License Manager, and Transparent License Policy are all trademarks of Reprise Software, Inc.''
RLM uses a number of environment variables to control licensing behavior. These variables are discussed in this section.\n\nNote: To set an environment variable on Windows systems, bring up the Control Panel, select System, Click on the Advanced Tab, select Environment Variables, then select New or Edit in the User Section.\n\n!//~RLM_COMM_TIMEOUT//\n~RLM_COMM_TIMEOUT sets the application timeout for receipt of messages from the license server. If ~RLM_COMM_TIMEOUT is set, the read timeout will be set to the value of this environment variable. The default is 5 seconds, which should be sufficient in most, if not all, situations. (The default was 3 seconds prior to RLM v9.3) \n\nNote that ~RLM_COMM_TIMEOUT is specified in milliseconds, so for a 7 second timeout, set ~RLM_COMM_TIMEOUT to 7000.\n\n~RLM_COMM_TIMEOUT first appeared in RLM v9.3.\n\n\n!//~RLM_CONNECT_TIMEOUT//\n~RLM_CONNECT_TIMEOUT sets the application timeout for a connection to an individual license server. If ~RLM_CONNECT_TIMEOUT is set, the connection timeout will be set to the value of this environment variable. The minimum connection timeout is 5 seconds, and the default is 10 seconds. If ~RLM_CONNECT_TIMEOUT is set to a negative value, the connect timeout will be the absolute value of ~RLM_CONNECT_TIMEOUT, and if any particular server connection times out, no further attempts will be made to that server again. If ~RLM_CONNECT_TIMEOUT is set to a positive value, a connection will be attempted to the server even if it timed out on the last attempt. This is the default behavior in RLM. \n\n~RLM_CONNECT_TIMEOUT is specified in seconds.\n\n~RLM_CONNECT_TIMEOUT first appeared in RLM v3.0.\n\n!//~RLM_DEBUG//\n~RLM_DEBUG, if set to a product name, will cause any ~RLM-licensed application to output product debugging information about the specified product. If ~RLM_DEBUG is set without a value, the debugging information will be output for all products which can be found.\n\n~RLM_DEBUG was introduced in RLM v9.0.\n\n!//~RLM_DIAGNOSTICS//\n~RLM_DIAGNOSTICS, if set to a file name, will cause any ~RLM-licensed application to output diagnostic information to the specified file. If ~RLM_DIAGNOSTICS is set without a value, the diagnostic information will be written to the standard output, which may or may not be desirable, depending on the application.\n\n~RLM_DIAGNOSTICS was introduced in RLM v8.0.\n\n!//~RLM_EXTENDED_ERROR_MESSAGES//\nIf ~RLM_EXTENDED_ERROR_MESSAGES is set, the internal RLM functions which generate error messages will output more verbose messages (in certain cases) with suggestions for solving the problem. ~RLM_EXTENDED_ERROR_MESSAGES first appeared in RLM v3.0.\n\n!//~RLM_LICENSE//\nThe ~RLM_LICENSE variable specifies the path to one or more license files and/or license servers. See [[The License Environment]] for a complete description of how to use ~RLM_LICENSE.\n\n!//~RLM_LICENSE_PASSWORD//\nThe ~RLM_LICENSE_PASSWORD variable specifies a password for access to particular licenses which have the _password attribute. See [[The License File]] for a complete description of how to use ~RLM_LICENSE_PASSWORD.\n\n!//isv_LICENSE//\nisv_LICENSE (where "isv" is replaced with the ISV name) is used exactly like ~RLM_LICENSE, however if isv_LICENSE is present, it will be used instead of ~RLM_LICENSE.\n\n!//~RLM_PATH_RANDOMIZE//\nSetting ~RLM_PATH_RANDOMIZE (to any value) causes RLM to randomize the license path before any subsequent processing. This is useful in large installations to provide a rudimentary form of load balancing by causing different users with the same setting of //~RLM_LICENSE// or //isv_LICENSE// to use different license servers. Note that ~RLM_PATH_RANDOMIZE has no effect on the //rlm// or //ISV// servers. ~RLM_PATH_RANDOMIZE operates by selecting a new starting point in the license list, and wrapping around from the last license spec to the first. Otherwise, the order or the license list is preserved. ~RLM_PATH_RANDOMIZE first appeared in RLM v2.0.\n\n!//~RLM_PROJECT//\n~RLM_PROJECT communicates project information to the license server. The value of a client's setting of ~RLM_PROJECT (up to 32 characters) is logged in the report log file for later use.\n\n!//~RLM_QUEUE//\n~RLM_QUEUE informs an application that it should queue for a license is none are available. If ~RLM_QUEUE is set, any subsequent application started will queue for it's license if none are available. ~RLM_QUEUE first appeared in RLM v1.1.\n\n!//~RLM_ROAM//\n~RLM_ROAM controls license roaming operations. If ~RLM_ROAM is set to a positive integer N, subsequent checkout requests will attempt to create roaming licenses for N days. If ~RLM_ROAM is set to any negative integer, any subsequent license checkouts will cause a roaming license to be returned to the floating license pool. This last operation must be done when connected to the network such that the original license server can be contacted.\n\n!//RLMSTAT//\nRLMSTAT, if set, will cause the rlm checkout routine to print status as it attempts the checkout. This is sometimes useful to diagnose license checkout failures. The format of this output is:\nRLMSTAT(//location//): (//product_name//) //license_path//: //error//\nwhere:\n* //location// is the letter 'N', 'C', or 'U', meaning:\n** N - attempt to check out a local nodelocked, uncounted (or single) license\n** C - attempt to checkout a license from a license server which is already connected\n** U - attempt to checkout a license from a license server with no prior connection\n* //product_name// is the product name being checked out\n* //license_path// is the path of license files or port@host specs\n* //error// is the error status from the checkout\n\n\n!Obsolete Environment Variables\n\n!//~RLM_DISCONNECTED//\n~RLM_DISCONNECTED informs an application that the system is not connected to the internet. If ~RLM_DISCONNECTED is set, any subsequent application started will not attempt any internet operations outside the local firewall (unless the license server is specified to be outside the firewall). ~RLM_DISCONNECTED first appeared in RLM v1.1.\n~RLM_DISCONNECTED was removed in v3.0, as it was no longer used internally.
Format:\n!TIMEOUTALL //secs//\n\nThe TIMEOUTALL line sets the inactivity timeout for all licenses to //secs// seconds. If the application using a product does not contact the license server for //secs// seconds, the license server will reclaim the license and notify the application that the license was timed out.\nNote that a license could have a min_timeout specification, in which case if you specify a TIMEOUTALL value that is lower, the license's timeout will be set to the minimum. The default minimum timeout in RLM is 3600 seconds (1 hour).\n\nIf multiple TIMEOUTALL options are specified, the last one will be used. Any TIMEOUT option after the TIMEOUTALL option will be used for that specific product.\n\nIf no TIMEOUT or TIMEOUTALL specification is present, the license will never time out.
Format:\n!REPORTLOG [+]//file_path// [std | small | detailed] [auth]\nThe REPORTLOG option instructs the ISV server to write a file suitable for usage reporting to the filename //file_path//. If //file_path// is preceded with a '+' sign, the new data is appended to the file, otherwise the file is overwritten.\n\nThe third (optional) argument specifies the format of the reportlog file. Valid values are:\n*std - write the standard report log file (the default if this field is not present)\n*small - a smaller report log file\n*detailed - write a reportlog that logs checkin/checkout events down to the tenth of a millisecond\n\nThe fourth optional argument, if present, specifies that the reportlog is to be authenticated. This parameter should be the string ''auth'', and if it is to be used, the third parameter (reportlog format) must be present as well. Note that this parameter is no longer required in RLM v4.0, as all reportlogs are authenticated.\n\nIf your server is writing a reportlog, it is important to shut the server down gracefully (ie, don't kill the server, shut it down with the RLM web interface or with an rlmdown command, or via the service controller if running as a Windows service). If you don't do this, the sever won't write the final authentication record to the report log, and you will not be able to verify the last section of the report.\n\nFor details of the various output formats, see Appendix A - [[Reportlog File Format]].\n\nNote - the authentication parameter first appeared in RLM v3.0.\nNote - the authentication parameter is no longer required in RLM v4.0 - all report logs are authenticated.\nNote - prior to RLM v9.3, if a detailed reportlog was specified on Windows, the std format was used. In v9.3, rlm will produce a detailed reportlog, however, the fractional seconds field will always be 0 on Windows.
Format:\n!~NO_OLD_RLMUTIL\n\nThe ~NO_OLD_RLMUTIL line prevents pre-RLM-v9 command-line utilities from performing a reread, remove, or shutdown operation. The pre-v4.0 RLM utilities do not respect the RLM permissions for the reread or shutdown commands, and the pre-v9.0 utilities do not respect the permisions for the remove command. Adding ~NO_OLD_RLMUTIL to your ISV options file will prevent these older utilities from performing these commands, and only a v9 (or newer) RLM command-line utility can be used for this purpose.\n\nBy default, all operations can be performed by all versions of the RLM command-line utilities.\n\nIn order for ~NO_OLD_RLMUTIL to be effective, it must be specified in //both// the rlm and the ISV server options files.\n
Format:\n!ACTIVATE [off | url URL | isv ISVNAME]\n\nThe ACTIVATE line allows you to disable the "Activate License" command, or to set the defaults for the URL and ISV name for activation.\n\nThe 3 forms of the ACTIVATE line are:\n\nACTIVATE off\nACTIVATE url URL\nACTIVATE url ISVNAME\n\nIn the first form, the "Activate License" menu item is disabled and will not appear in the menus.\n\nIn the second form "URL" is the default URL used for activation. For example:\nACTIVATE url www.reprisesoftware.com\n\nIn the third form "ISVNAME" is the default ISV name used for activation. For example:\nACTIVATE isv reprise\n\nACTIVATE is new in RLM v10.0
RLM supports several different kinds of identification for various computing environments, as well as some generic identification which are platform-independent.\n\nRLM's host identification (hostid) types are:\n|!hostid type| !meaning | !example | !Notes |\n| ANY | runs anywhere | hostid=ANY |\n| DEMO | runs anywhere for a demo license | hostid=DEMO |\n| serial number | runs anywhere | hostid=sn=123-456-789 | used to identify a license, any string up to 64 characters long |\n| disksn | Hard Disk hardware serial number | hostid=disksn=~WD-WX60AC946860 | Windows only |\n| 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 |\n| ip (or internet) | TCP/IP address | hostid=ip=192.156.1.3 | always printed as "ip=" |\n| ether | Ethernet MAC address | hostid=ether=00801935f2b5 | always printed without leading "ether=" |\n| rlmid1 | External key or dongle | rlmid1=9a763f21 | External key or dongle |\n| user | User name | hostid=USER=joe |\n| host | Host name | hostid=host=melody |\n\nTo determine the hostid of a machine, use the hostid type from the table above as input to the //rlmhostid// command:\n''rlmutil rlmhostid //hostid type//''\nFor example:\n''rlmutil rlmhostid 32''\nor\n''rlmutil rlmhostid internet''\n\nNote: 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 [[Optional hostid Installation Instructions]].\n\nNote: Beginning in RLM v3.0, IP address hostids can contain the wildcard ('*') character in any position to indicate that any value is accepted in that position.\n\nThe serial number (sn) and rlmid1 hostid types first appeared in RLM v5.0.
Format:\n!~INTERNET_GROUP //name// list-of-ip-addresses\n\nThe ~INTERNET_GROUP line defines a group of IP addresses to be used in an EXCLUDE, EXCLUDEALL, INCLUDE, INCLUDEALL, MAX or RESERVE line. Separate the ip addresses in the list by spaces. Multiple lines that specify the same ~INTERNET_GROUP name will have their lists of ip addresses concatenated. IP addresses can contain the wildcard ('*') character.\n\nExample:\n!~INTERNET_GROUP corporate 1.2.3.4 2.*.*.7 172.16.7.*\n\nExample 2. This example results in a group of 6 IP addresses:\n!~INTERNET_GROUP corporate 1.1.1.1 2.2.2.2 3.3.3.3\n!~INTERNET_GROUP corporate 4.4.4.4 5.5.5.5 6.6.6.6\n
Format:\n!EXCLUDEALL [user|host|group|host_group|internet|internet_group|project] //who//\nor\n!EXCLUDEALL noproject\n\nThe EXCLUDEALL line prevents usage of all products by a particular user, host, group, host_group, IP address, or project.If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file.\n\nAlternately, with //noproject// specified, all checkout requests from users who do not have the ~RLM_PROJECT environment variable set will be rejected.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nIn all cases, the status returned to the user will be ~RLM_EL_ON_EXC_ALL - "User/Host on excludeall list"\n\nNote: //internet// and //project// were added in RLM v2.0. //noproject// was added in RLM v5.0.
Format:\n!~EXCLUDEALL_ROAM [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe ~EXCLUDEALL_ROAM line prevents usage of roaming by a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file. Anyone on the ~EXCLUDEALL_ROAM list is not allowed to set up roaming licenses.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote: internet and project were added in RLM v2.0. //internet_group// was added in RLM v10.0
Format:\n!INCLUDEALL [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe INCLUDEALL line allows usage of all products by a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file. Anyone not on the INCLUDEALL list is not allowed to use any product.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote: internet and project were added in RLM v2.0. //internet_group// was added in RLM v10.0
Format:\n!INCLUDE //product// [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe INCLUDE line allows usage of a product by a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file. Anyone not specified by the INCLUDE line is not allowed to use //product//.\n\nINCLUDE has no effect on Named User licenses (the INCLUDE line will be ignored).\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote: internet and project were added in RLM v2.0. //internet_group// was added in RLM v10.0
Format:\n!~INCLUDEALL_ROAM [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe ~INCLUDEALL_ROAM line allows usage of roaming by a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file. Anyone not on the ~INCLUDEALL_ROAM list is not allowed to set up roaming for any license.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote: internet and project were added in RLM v2.0. //internet_group// was added in RLM v10.0
Format:\n!PRIORITY //num// //product// [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe PRIORITY line causes the order of queued requests to be modified. Any user/host/etc. with an assigned priority will be placed ahead of others in the queue. A new request will go at the end of all equal-priority requests in the queue, but ahead of all requests with a higher-numbered priority. All requests with no specified priority will be last in the queue. PRIORITY can specify a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote that PRIORITY specifications are searched in order until a match is found, and the remainder are disregarded. Thus if a request comes in for user //plum// on host //conservatory//, the following 2 PRIORITY lines would assign this request a priority of 7, not 3:\n\nPRIORITY 7 candlestick user plum\nPRIORITY 3 candlestick host conservatory\n\nIn this case, user //plum// would have a lower priority for the product //candlestick// than other users from host //conservatory//, since a lower number represents a higher priority.\n\n\nNote: PRIORITY was added in RLM v2.0. //internet_group// was added in RLM v10.0
Format:\n!RESERVE //num// //product// [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe RESERVE line reserves //num// licenses of //product// for use by a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file. Note that reservations are subtracted from the number of floating licenses available, and can only be used by the specified user(s).\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote: internet and project were added in RLM v2.0. //internet_group// was added in RLM v10.0
Format:\n!EXCLUDE //product// [user|host|group|host_group|internet|internet_group|project] //who//\nor\n!EXCLUDE //product// noproject\n\nThe EXCLUDE line prevents usage of a product by a particular user, host, group, host_group, IP address, or project. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file.\n\nAlternately, with //noproject// specified, checkout requests for //product// from users who do not have the ~RLM_PROJECT environment variable set will be rejected.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nIn all cases, the status returned to the user will be ~RLM_EL_ON_EXC - "User/Host on exclude list"\n\nNote: //internet// and //project// were added in RLM v2.0. //noproject// was added in RLM v5.0. //internet_group// was added in RLM v10.0
Format:\n!MAX //num// //product// [user|host|group|host_group|internet|internet_group|project] //who//\n\nThe MAX line limits the specified user or group to //num// licenses of //product//. If you specify group, host_group, or internet_group, it must be defined by a [[GROUP]] or HOST_GROUP or INTERNET_GROUP line in the options file. If you specify ''user'', the special name ''*'' indicates that all users are subject to the maximum limit.\n\nPortions of the INTERNET address can be specified with a '*' which matches any address, e.g. 172.16.7.*\n\nNote: internet and user ''*'' were added in rlm v2.0. //internet_group// was added in RLM v10.0
All software that uses RLM attempts to read a license file or communicate with a license server. The specification of the license file or the license server is done with the license environment.\n\nIf the software is ~ISV-specific (eg, an application program), the first place that is checked is any license file or port@host specified in the environment variable //isv//_LICENSE (if it is defined), where //isv// is name of the ISV (e.g. reprise_LICENSE).\n\nIf //isv//_LICENSE is not defined (in the case of ISV software), or for generic software (RLM utilities, the //rlm// server) the path specified by the environment variable //~RLM_LICENSE// is checked, if //~RLM_LICENSE// is defined.\n\nIf neither environment variable is defined, the program's default location for the license is checked next. In the case of the RLM utilities and the rlm server, this is any file ending in //.lic// in the current directory. Note that the RLM utilities will substitute the path specification from a //-c// option in place of the current directory.\n\nFinally, any //.lic// file in the directory containing the binary will be checked.\n\nThe format of the environment variable (~RLM_LICENSE or //isv//_LICENSE) is:\n\n!//license_spec1//\nor\n!//license_spec1:license_spec2:license_spec3: .... :license_specN// (UNIX)\n!//license_spec1;license_spec2;license_spec3; .... ;license_specN// (Windows)\n\nwhere:\n\n//license_spec// is a license specification of the form:\n\nport@host\nor\nlicense_file_pathname\nor\ndirectory pathname (containing license files, all of which are added to the list)\nor\n<actual text of license>\n\n{{{\nNote that the separator character is ':' for Unix systems and ';' for Windows systems.\n\nAlso note that the license file cannot be placed in a path where any component of the pathname contains the '@' character.\n}}}\n\n!Example\n\n% setenv ~RLM_LICENSE 1700@myhost:/home/reprise/reprise.lic\n\nIn this example, the server at port 1700 on host "myhost" is checked first, then if the request is not satisfied, the license file at /home/reprise/reprise.lic is used. Note that this search order may be modified if the environment variable ~RLM_PATH_RANDOMIZE is set.\n\n% setenv ~RLM_LICENSE 1700@myhost:<LICENSE isv prod1 1.0 1-jan-09 uncounted hostid=any key="1234...">\n\nThis example specifies the license for "prod1" directly in the environment variable, in addition to using the server at port 1700 at host "myhost".\n\nNote: The ability to specify the license directly was added in RLM v3.0.\nNote: The ability to add a directory to the ~RLM_LICENSE environment variable was added in RLM v6.0.
RLM has the ability to transfer a set of licenses from one license server to another. This is useful, for example, in situations where a temporary project involves a number of users who need access to the software and the primary license server is across a WAN with a high-latency connection. In this case, a number of licenses can be moved to a server on the part of the WAN with the users. Once the project is complete, the licenses can be returned to the primary server.\n\nWhen licenses are transferred from the primary (''source'') license server, they are no longer available at the ''source'' server, and are then available at the ''destination'' server. The licenses are available at the ''destination'' server as long as the ''source'' server is up; in other words, if the source server goes down or the network loses connectivity, the ''destination'' server will lose it's complement of transferred licenses.\n\nLicense transfers are always initiated by the ''destination'' server - the server which is going to receive the licenses. The license transfer is specified in the RLM administration GUI on the ''destination'' server.\n\n!Setting up a license transfer\nAny platform which your ISV supports can be used as the destination for a license transfer. The particular machine does not need to have any ~RLM-licensed applications present - all you need is the rlm (or rlm.exe) binary as well as an ISV server binary or settings file.\n\nLicense transfers are accomplished by creating a set of ''transfer definition''s. Each ''transfer definition'' describes the ''source'' license server, the licenses you wish to transfer, and some parameters of those licenses.\n\nTo set up the license transfer, do the following:\n*place the rlm and ISV servers into a directory, and create a license file that specifies the HOST and ISV lines:\n\n{{{\nHOST hostname any port\nISV isvname isvname\n}}}\n\n(Note that we used "any" as the hostid. The hostid is irrelevant, because this license server will act as a client of the ''source'' server and check out licenses from it - these transferred licenses are not ever going to be locked to the ''destination'' server.)\n\n* Next, start rlm - rlm will start up, and start the ISV server.\n* Next, point your browser to the rlm admin page (hostname:5054), and select ''Status'' from the menu on the left-hand side.\n* Next, select ''Transfer'' from the right-hand side of the list of buttons for the ISV for which you wish to edit a transfer definition. This will bring up the ''Edit License Transfer Definitions'' page, which will indicate that no license transfers have been defined. Select ''Add New Transfer Definition...'' at the bottom of the page, and you will be able to specify the license transfer parameters:\n!Add License Transfer Definition for ISV //isvname//\n{{{\nTransfer server type: Choicelist: {RLM | ISV-defined}\nSource Server Hostname: \nSource Server Port: \nBackup Server Hostname: \nBackup Server Port: \nProduct: \nMinimum Version: \nCount: \nDays to hold license;\n}}}\n*** Fill out this form as follows:\n**In the first section of this form, you select the type of license server on which the transferred licenses are served. "RLM" indicates an RLM license server. "~ISV-defined" indicates another licensing system for which your ISV has added support, if applicable. \n**Next, you specify the ''source'' license server with a hostname and a port number. (Some other licensing systems will use a backup server name and port # - RLM does not use this).\n**Next, you specify the product name, minimum allowable version, and the number of licenses you would like to transfer to this (the ''destination'') server.\n**Finally, if you have RLM v10.0 or later, you have the option to specify "Days to hold license". If you specify this as a non-zero value, the license transferred is a "disconected (roamed)" license. This license can be used even when the destination license server is not in communications with the source license server. For this to work, your ISV must have provided you with an "rlm_roam" license, or enabled this capability in their license server.\n\n* Finally, click ''Add Transfer'' at the bottom of the form. The transfer specification will be saved.\n\nIf you would like these licenses to be transferred immediately, select ''Reread/Restart Servers'' on the left-hand side of the main form. This will cause the ISV server to reread it's license files and transfer definitions, and process the license transfer. If you have already transferred licenses of this product to this destination server and you wish to change the number of licenses, you must delete the first transfer definition and re-create it with the new number of licenses, then perform a reread on the server. When you delete the old transfer definition, all clients using that license will receive an error on their next heartbeat (~RLM_EL_SERVER_LOST_XFER, -51). In most cases, you will be able to delete the old transfer, create the new one, and perform a reread on the server within the time the client does it's next heartbeat to the server.\n\nOnce transfer definitions are present, pressing the ''Transfer'' button on the status page will display a list of transfer definitions. Each of these can be independently enabled/disabled or deleted.\n\n!Restrictions on License Transfer\nNot all licenses can be transferred to another server. In particular, the following licenses cannot be transferred:\n* user-based licenses\n* host-based licenses\n* named-user licenses\n* token licenses\n\nNote that any license to be transferred must be able to be checked-out on the destination license server. In particular, this means that most node-locked licenses cannot be transferred (unless you set up a separate destination server on each node-locked host to accept the licenses). Other license restrictions, such as platforms= will restrict licenses which can be transferred as well.\n\nTransferred licenses cannot roam. If you attempt to roam a transferred license, you will receive a -31 (~RLM_EL_TOOMANY_ROAMING - "too many licenses roaming") error (pre RLM v10.0), or a -57 (~RLM_EL_NONE_CANROAM - "This license not allowed to roam") on RLM v10.0 or later.\n\nWhen you disable a transfer, the licenses are returned to the source server immediately. All clients will be notified that the licenses are no longer available on their next heartbeat check. In this sense, disabling a transfer is identical to deleting the transfer, with the exception that the transfer can be reinstated by re-enabling it and doing a reread on the server.\n\n!Additional notes on disconnected (roamed) transfers\n\nFor disconnected (roamed) transfers, the GUI also presents a "Refresh" option, if the transfer is enabled. If "Refresh" is pressed, the transferred license will be checked back in and then checked back out again, in order to refresh the roam time to the specified number of days. Note that the server performs this refresh action each time it is started (but not on a reread). The "Refresh" button allows you to reset the # of days of disconnected operation at any point that the server is running and the source license server is up.\n\nBoth "disable" and "delete" operations on disconnected (roamed) transfers cause the transferred license to be returned to the source server. You should always delete or disable a disconnected (roamed) transfer when the source server is up, so that the destination server can return the licenses cleanly. RLM makes every attempt to catch errors in the return of roamed license, but any error here will cause the transferred license to remain checked-out on the source server. Note that when RLM detects any error in returning the license, it keeps the transfer definition in place, so that you can return it when the source server is up. So the source server has to be up to return the license, anyway.\n\n!Additional notes on ~ISV-defined transfers\n\nFor the ~ISV-defined transfer type, each individual ISV may impose other restrictions on what types of licenses can be transferred. This, of course, can vary for other license managers as well.\n\n\nLicense Transfer is new in RLM v7.0. ~ISV-defined transfer types are new in RLM v7.0BL4. Disconnected (roamed) transfers are new in RLM v10.0.
The license server consists of at least two processes\n*The generic server, called //rlm//\n*At least one ISV server, named //isv//\n\nThe //rlm// server is provided by Reprise Software, and is completely generic. The ISV server is configured to contain license key validation that is ~ISV-specific.\n\nThe //rlm// server handles requests from clients and directs them to the appropriate ISV server. In addition, the //rlm// server watches for failures in ISV servers and restarts them when appropriate. The //rlm// server also provides status to the various utilities, when appropriate.\n\nThe //rlm// server initiates a reread of the license files (for itself and any ISV servers) at midnight every night.\n\nThe rlm server is delivered with an embedded Web Server to perform normal administration tasks. For more information on the web server interface, see [[The RLM Web Server]] or <<slider web_server_s [[The RLM Web Server]] "Click Here" "Click here to display information on the RLM Web Server">> \n\n!rlm startup options\nThe //rlm// command is:\n{{{\n% rlm [-c license_file] [-dat] [-dlog [+]logfile]\n [-nows] [-ws port] [-x [rlmdown|rlmremove]]\n [-install_service] [-service_name sname]\n [-isv_startup_delay seconds] [-v] [-info]\n [-noudp]\n}}}\n\nThe ''-c license_file'' option specifies which license file to use. This option overrides the setting of the ~RLM_LICENSE environment variable. Note that the -c option first appeared in RLM v2.0. Beginning in RLM v6.0, the ''license_file'' parameter can be a directory containing license files, all of which will be processed.\n\nThe ''-dat'' option specifies that license files should have the extension ".dat", rather than ".lic". If -dat is specified, the //rlm// server will search for all files ending in ".dat" instead of ".lic" as documented elsewhere. This option first appeared in RLM v3.0.\n \nThe ''-dlog logfile'' specifies the pathname for the server debug log. If ''logfile'' is preceded by the '+' character, the logfile will be appended, otherwise it is overwritten. This option first appeared in RLM v2.0. (Note: starting in RLM v4.0, all ISV servers will write their output to the same logfile specified in the -dlog option.)\n\nThe ''-info'' option causes RLM to print information about all copies of rlm that are running on this computer, including copies which have run in the prior 24 hours, then exit. This option was introduced in RLM v9.3BL2.\n\nThe ''-install_service'' and ''-service_name sname'' options are used to run the //rlm// server as a service under windows. See the description of running the //rlm// server as a service below. These options first appeared in RLM v2.0.\n\nThe ''-isv_startup_delay //seconds//'' option specifies that when running as a Windows service, rlm should delay //seconds// seconds before starting up the ISV servers. If not specified, there is no delay. This is useful if a license file specifies a hostid of type rlmid1 or rlmid2 (hardware keys), the server is started at system boot time, and the key driver is not yet started at the time the ISV server needs to read it. This option was introduced in RLM v8.0BL6.\n\nThe ''-nows'' and ''-ws port'' options control the operation of the embedded Web Server. The //-nows// option instructs the //rlm// server to not start the embedded web server. The //-ws port// option instructs the //rlm// server to use //port// as the port number for the web server.\n\nThe ''-noudp'' option tells RLM to not bind the UDP port (5053) used for replying to broadcast messages from clients in RLM v10.0 and later.\n\nThe ''-v'' option causes RLM to print it's version and exit. This option was introduced in RLM v9.3BL2.\n\nThe ''-x [rlmdown | rlmremove]'' option controls whether the rlmdown and/or rlmremove commands will be processed by the server. Specifying only ''-x'' will disable both commands. Specifying either command name after the -x will disable just that command. The -x option first appeared in RLM v2.0.\n\nThese options can appear in any order on the command line.\n\nIf you want to generate a report log file, specify this on an ~ISV-by-ISV basis in the individual ISV's options file. See the description of the REPORTLOG line in [[The ISV Options File]] for more information.\n\nNote that if the //rlm// server cannot bind the web server port (5054 by default), it will exit. Note that the web server default port was 9000 prior to RLM v6.0.\n\nAlso note that, prior to RLM v3.0, if there was not at least one license file with the current hostname (as returned by gethostname()), or "localhost", the servers would not run. This condition generates a warning in RLM v3.0 and later.\n\nStarting in RLM v10.0, if the ISV server pathname is incorrect in a license file which RLM is processing, RLM will attempt to start that ISV server using the path information in other license files, if present.\n\n!Running the //rlm// server as a service on Windows\n\nOn Microsoft Windows servers, you may want to install and run the //rlm// server as a Windows service process. A service process can start automatically at boot time and remain running as long as the system is up, regardless of user logins and logouts.\n\nFor information on how to run the //rlm// server as a service, <<slider rlm_as_service [[RLM as a Service]] "Click Here" "Click here to display information on how to run the //rlm// server as a Service on Windows">> \n\n!Starting the //rlm// server at system boot time on Unix systems\n\nOn most Unix systems, system services are started at boot time, usually via startup scripts located in /etc/rc.<something>. For example, on Solaris, the startup script might be placed in /etc/rc2.d/S98rlm. On Linux systems, the script could be located in /etc/init.d/rlm, with a link to /etc/rc5.d/S98rlm. Note that you must install this startup script as root.\n\nThe startup script should //su// to a different user so that the //rlm// servers are not running as root.\n\nFor an example of a Unix startup script for the //rlm// server, <<slider rlm_unix_startup [[Example RLM Unix Startup Script]] "Click Here" "Click here to display an example RLM startup script for Unix">> \n\n!License Server Startup Processing\nLicense servers use [[The License Environment]] to find their license file. In addition, any file whose name ends in ''.lic'' in the current directory when the //rlm// server is started (or when the rlmreread command is issued) is implicitly added to the end of the license file path. Finally, and file whose name ends in ''.lic'' in the directory where the //rlm// binary resides is added to the list of license files processed. (Note: license files in the //isv// server's binary directory are ''not'' processed, only the //rlm// binary directory is searched.)\n\nLicense servers ignore //port@host// specifications in the License Environment. Once the list of license files is created, the license servers process all the resulting license files. The //rlm// server starts all ISV servers in all license files, and the ISV servers process and support all licenses in all license files with valid hostids.\n\nWhen the //rlm// server starts, it uses the port # from the first file with the hostname on which it is running. In rlm v2.0 and later, the //rlm// server will attempt to use all the port #s in all the license files. It ''must'' be able to bind the port # in the first file. Once this is done, it attempts to use the port number from each additional file, logging either success or failure in the debug log. This means that when you receive a new product or license file, it can be installed in the application and rlm server directories without changing the port number in that file, which simplifies license administration.\n\nISV servers process all licenses in all files that have a valid //hostid// (by this we mean a //hostid// that corresponds to the computer on which the license server is running). The ISV servers attempt to combine licenses whenever possible - see the next section - and when combined the license counts add to create a single //pool// of licenses. ISV servers log (in the debug log) licenses with invalid signatures and (in RLM v2.0) licenses that will expire within 14 days. ISV servers do not process single-use (count==//single//) licenses.\n\nBeginning in RLM v5.0, ISV servers will detect that they are running on a virtual machine, and by default will refuse to run. The decision to run or not on a virtual machine is an ~ISV-by-ISV decision.\n\n!ISV server open file limits\nBeginning in RLM v6.0, ISV servers on Unix platforms will attempt to increase their open file limit. If a server is able to increase it's open file limit, a line similar to the following will appear in the debug log when the server first starts up:\n\n mm/dd hh:mm (isvname) File descriptor limit increased from 256 to 65536\n\nIf you do not wish the ISV server to unlimit it's open descriptor limit, set the ~RLM_NO_UNLIMIT environment variable in the process where you run the server:\n\n % setenv ~RLM_NO_UNLIMIT anything\n\n\n\n!How Licenses are Pooled by the ISV Server\nWhen the ISV server processes all it's licenses in the license file, it combines as many as possible into single //pools// of licenses. In order for 2 licenses to be combined into a single license pool, the following license fields must match ''//exactly//'':\n*Product Name\n*Product Version\n*License Sharing specification\n*License Timezone specification\n*License Platform list\n*Both licenses must be counted or uncounted\n*License node-locked hostid\n*Both licenses must be user-based or host-based (or neither)\n*Neither license can be a named-user license\n*License password\n\nOnce pooled, the following fields are processed as shown:\n| !Field | !Result |\n| count | both counts added together |\n| exp-date | earlier date is remembered |\n| hold | maximum of the 2 values |\n| max_roam | minimum of the 2 values |\n| min_checkout | maximum of the 2 values |\n| min_timeout | maximum of the 2 values |\n| soft_limit | both soft_limit values added together |\n| contract | if original is empty, use new |\n| customer | if original is empty, use new |\n| issuer | if original is empty, use new |\n| type | if original is empty, use new |\n\nFor all other fields, the field in the original license (ie, the first to appear in the license file) is used.\nNote that different ''named_user'' licenses are //never// combined into one license pool.\n \n!License Server Administration\nThere are various administration commands that can be used to cause the license servers to reread their license files, to remove licenses from certain users, etc. For a description of these administration commands, see [[License Administration Tools]]. In addition, options can be specified for each ISV server in [[The ISV Options File]]. You can restrict access to administration commands via [[The RLM Options File]].
When you receive a product licensed with RLM, your ISV will provide an installation procedure that installs the license management component along with the application. Typically, they will make the licensing installation as transparent as possible.\n\nThis section describes what happens to install RLM, in the event you need to troubleshoot the installation.\n\nThe licensing component of your new application consists of 4 separate files:\n*The generic license server, //rlm// on Unix, //rlm.exe// on Windows.\n*The ISV's license server, //isv// on Unix, //isv.exe// on Windows.\n*The RLM utilities, //rlmutil// on Unix, //rlmutil.exe// on Windows. These utilities are (often installed as their separate command names, see "[[License Administration Tools]]"\n*The license file which describes your rights to the product.\n\nFor typical installations, all four components will be placed in the same directory, or perhaps the three binaries will be in one directory with the license file in a different directory. If the license file is in a separate directory, Reprise Software recommends installing a link to the license file in the directory with the binaries (note that the name of this file, or link, should end in ".lic"). In this way, license servers, utilities, and application programs will all be able to locate the license without any additional environment settings for users. All that remains to get licensing working is to start the license servers (if the licenses are floating or node-locked counted licenses). If you did not locate the license file (or a link to it) in the binary directory, you need to provide a pointer to the license file (or license server) to the application, using the //~RLM_LICENSE// environment variable.\n\nTo start the license server (only required for counted licenses):\n# place the license file into the binary directory (or startup directory) and name it //something.lic// If you do not do this, then set the ~RLM_LICENSE environment variable to the path of the license file.\n# execute the //rlm// command:\n{{{\n% rlm > output_file\n}}}\n\nTo enable your users to find the license file or license server, either\n\n# Put the license file (named //something//.lic) in the binary directory (RECOMMENDED), OR\n# setenv RLM_LICENSE //license_file_path//, OR\n# setenv RLM_LICENSE //port//@//host//, where //port// is the port # in the license file, and //host// is the hostname in the license file.\n\nNote: if you are using RLM v10.0 or later (both clients and servers), and you are running on a local-area network, the client will broadcast to locate the license server, and no other configuration is required beyond setting up the license server.
\nYou can install RLM as a service either in the RLM web interface or in a command window. Once installed as a service, it remains installed until it is explicitly deleted as a service. Installing RLM as a service does not start RLM; services are started via the Windows Services control panel, and at boot time. \n\nTo install using the web interface, select "Manage Windows Service" from the main menu on the left. You will get a form with 3 data fields:\n* service name\n* logfile name\n* optional command-line arguments\n\nAll 3 fields will be filled in with default values. You can just select "Install Service", and the "rlm" service will be installed for you. By default, the logfile is put in the directory with the rlm.exe binary, and it is named rlm.log. Also, by default, rlm will search for all license files in this directory.\n\nIf you select "Remove Service", the service name specified in the form will be removed.\n\nNOTE: If the instance of rlm which you are running is actually running as a service, you will ''not'' be able to Remove the Service (since it is running). To remove the service, you will have to stop the service, and then either use the service control panel in Windows, or run rlm in a command window and use the Remove Service option in the web interface.\n\nOptionally, you can install RLM as a service in a command window. To do this, use the rlm program itself (in a command window), with special arguments:\n\n//rlm -install_service -dlog [+]logfile [-service_name sname] <rlm runtime args>//\n\nwhere:\n* //logfile// is the pathname for the server debug log. This parameter is required. If preceded by the '+' character, the logfile will be appended, rather than created.\n* //sname// is an optional name for the installed service. If not specified, //sname// defaults to "rlm". If //sname// contains embedded whitespace, it must be enclosed in double quotes.\n* <rlm runtime args> are any other command line arguments to be passed to rlm when it is started.\n\nExample:\n| rlm -install_service -service_name rlm-xyz -dlog c:\slogs\sserver.log -c c:\slicenses\sxyz.lic |\n\nThis installs rlm as a service under the name "rlm-xyz". When started via the Services control panel or at boot time, rlm will be passed the "-c c:\slicenses\sxyz.lic" args, and it will write it's debuglog information to the file c:\slogs\sserver.log\n\nInstalled RLM services are also deleted with the rlm program. Services must be stopped via the service control panel before they can be deleted. Note that deleting a service deletes it from the Windows service database; it does not delete the rlm executable or associated license file(s):\n \nrlm -delete_service [-service_name sname]\n \nwhere:\n* sname is an optional name for the installed service. If not specified, service_name defaults to "rlm". If service_name contains embedded whitespace, it must be enclosed in double quotes.\n\nNotes:\n* It is desirable to use the -c <license file> command line argument with RLM when installed as a service. Use of environment variables with Windows services is undesirable, as the environment passed to started services is the one in effect at boot time.\n\n* On systems which run RLM license servers, it is a good idea to install each ISV's instance of rlm with a service_name argument which reflects the ISV or ~ISVs whose licenses are being served by that instance of rlm. For example, if a system ran two instances of RLM as services, where the first instance served license for ~ISVs "Blue" and "Green", and the second instance served license for ISV "Yellow", they might be installed as "rlm ~Blue-Green" and "rlm Yellow", respectively.\n\n* Because the Service Controller on Windows invokes services under a special user account in a special default directory, it is necessary to use full paths:\n** for the -c <license file> argument on the rlm command line\n** in ISV daemon paths in the license file\n** in options file paths in the license file\n** in debug log paths in the ISV options file\n** in report log paths in the ISV options file\n** for the //-dlog debug_log// argument on the command line\n\n*NOTE on the use of DEBUGLOG when running the server as a Windows Service:\nIf no DEBUGLOG is specified in the ISV options file, rlm will write the ISV debug log in:\n<location of rlm.exe>\s<isv>.dlog\nThis file will be overwritten every time the ISV server starts, since there is no opportunity to specify that the file should be appended to in the default case. In fact, the ISV server logs a few lines to this file at startup time even if a DEBUGLOG is specified in the ISV options file. It is overwritten every time the ISV server starts, but its contents don't change startup to startup, so nothing important is lost.\nReprise Software Inc. recommends that the debug log path be specified in the ISV options file, and that the append behavior be enabled with '+'<path>. However, it is important not to specify the debug log name as <isv>.dlog, as this specific file is overwritten at each startup.\n\n* Beginning in RLM v8.0, when running as service, rlm now changes its working directory to the directory where rlm.exe is installed. This is so that log files will be written there instead of in c:\swindows\ssystem32 as in prior versions (if log file paths are not specified as absolute paths.) rlm.exe checks to make sure that it can write to that directory before changing its working directory. If it can't be written, rlm leaves its working directory as c:\swindows\ssystem32.\n\n* The web interface service installation is new in RLM v7.0\n\n* Prior to RLM v4.0 when running rlm as a service, it is strongly recommended that you specify a debug log location for each ISV server. This is done in [[The ISV Options File]] for each ISV server, using the [[DEBUGLOG]] keyword. If no location is specified for the debug log, the ISV server's debug information is lost when running as a service. Starting in RLM v4.0, the ISV servers place their debug output in the same file as the rlm server's debug log, as specified in the -dlog option, so no DEBUGLOG specification is necessary.\n\n* Starting in v9.4 when you install RLM as a service, it starts and then stops the installed service. This is so that if there are any firewall issues - ports blocked that rlm needs to use - the warnings come at service installation time rather than when rlm is started for the first time.\n\n* Starting in v10.0, RLM checks the path you specify for the debug log (-dlog <log> or in the "Server Debug Log box in the web interface). If this file cannot be written, an error is printed and the service install fails.\n\n\n
The RLM options file allows control over access to the //status//, //reread//, //shutdown// administration commands as well as control over the editing of options files. Options are provided to either allow (INCLUDE or INCLUDEALL) or disallow (EXCLUDE or EXCLUDEALL) administration command usage. Additionally, options are provided to create groups of users (GROUP) or hosts (~HOST_GROUP) or IP addresses (~INTERNET_GROUP).\n\nIn addition, the RLM options file allows you to turn off logging of status requests (to the debug log) via the NOLOG option.\n\nFinally, the RLM options file allows you to set the defaults for the "Activate License" command in the menu.\n\nThe RLM options file is called //rlm.opt//, and should be placed in the directory from which you run the rlm (or rlm.exe) binary.\n\nIf you would like to add comments to the options file, start the line with the '#' character.\n\nThere are 8 privileges which can be controlled in the RLM options file. Each privilege is specified with the appropriate privilege name in the rlm options file. Note that these privilege names are the same names that are used in the //RLM password file// if you are controlling access to the RLM web interface via user login. If you use the RLM password file, you should not use these lines in the RLM options file - in other words, you should use one mechanism or the other, but not both.\n\n!RLM privileges controlled by the RLM options file\n| !Privilege | !Name to use in RLM options file | !Meaning |\n| edit_meter | edit_meter | Allows modifying count for meter counters |\n| edit_options | edit_options | Allows editing options files for ISV servers |\n| edit_rlm_options | edit_rlm_options | Allows editing options files for the rlm server and license files |\n| edit_xfer | edit_xfer | Allows editing server-server license transfer settings for ISV servers |\n| logfiles | logfiles | Enables the functions which change log files - switch, switchr, newlog |\n| manage_service | manage_service | Allows editing windows service setup |\n| remove | remove | Allows the user to remove a license from a running process |\n| reread | reread | Allows access to the functions which do reread commands on license servers |\n| shutdown | shutdown | Allows access to the functions which shut down license servers |\n| status | status | Allows display of status and debug log information from the license servers |\n\nThe RLM options file syntax is a subset of [[The ISV Options File]] syntax. The ''privilege'' names ''status'', ''reread'', ''shutdown'', ''logfiles'', ''edit_meter'', ''edit_options'', ''edit_rlm_options'', ''manage_service'' and ''edit_xfer'' are used where a product name would be used in an ISV options file. By default, all privileges are granted to all users unless otherwise restricted in the rlm options file.\n\nA user with no privileges assigned will have access to the "Activate License", "Diagnostics", "RLM Manual...", "System Info", and "About" commands.\n\nNote that the RLM web interface does not have access to the username or hostname (the rlmutil utilities do pass the username and hostname), so, to be most effective, command restrictions should be done based on IP addresses. By default, all commands are enabled (unless disabled with the -x rlmdown or -x rlmremove rlm startup options, in which case rlm options have no effect.).\n\n''Legal characters in the RLM options file''\nIn general, all options file fields are white-space delimited, meaning that no data item can contain embedded spaces, tabs, newlines or carriage returns. In addition, the following four characters are illegal in data items in the ISV or RLM options (and license) file: "<", ">", "&", and double-quote ("). Note: single quote (') and back-quote (`) were illegal prior to RLM v8.0.\n\nNote that all lines in option files (RLM or ISV) as well as license files //must// be shorter than 1024 characters. Anything over 1024 characters will be truncated.\n\nThe [[ACTIVATE]] option controls whether the "Activate License" button is present, and, if present, the default activation URL and ISV name.\n\nThere is one additional option available in the ISV options file: [[NO_OLD_RLMUTIL]]. This option goes on a line by itself, with no parameters. If specified, the RLM command-line utilities prior to RLM v9.0 will not be able to perform an rlmdown, rlmreread, or rlmremove on this server. By default, all versions of the RLM utilities are enabled unless [[NO_OLD_RLMUTIL]] is specified in both the RLM and the ISV options files.\n\nNote that everything in the RLM options file is case-insensitive.\n\nThe RLM Options File first appeared in RLM v4.0. The remove privilege and ~NO_OLD_RLMUTIL were added in RLM v9.0.\nThe logfile privilege was added in RLM v9.1. The ~EDIT_METER privilege was added in RLM v9.3.\n\nIn the following example RLM options file, status commands are only allowed from hosts on subnet 172.16.7.*, no one on host "excluded_host" can do a reread command, and only users on IP address 172.16.7.93 can do a shutdown. Note that each command (INCLUDE, EXCLUDE, etc) must be on a separate line. Also, RLM will not process reread or shutdown requests from pre-v9 command-line utilities.\n\nNO_OLD_RLMUTIL\nINCLUDE status internet 172.16.7.*\nEXCLUDE reread host excluded_host\nINCLUDE shutdown internet 172.16.7.93\n\n\nFor a detailed description of each option, click the appropriate tab below. Note that ''privilege'' should be one of "''status''", "''shutdown''", "''reread''", "''edit_options''", or "''edit_rlm_options''":\n\n<<tabs tabsClass\n"ACTIVATE" "ACTIVATE option description" [[ACTIVATE]]\n"EXCLUDE" "EXCLUDE option description" [[RLM Options - EXCLUDE]]\n"EXCLUDEALL" "EXCLUDEALL option description" [[RLM Options - EXCLUDEALL]]\n"GROUP" "GROUP option description" [[RLM Options - GROUP]] \n"HOST_GROUP " "HOST_GROUP option description" [[RLM Options - HOST_GROUP]]\n"INTERNET_GROUP " "INTERNET_GROUP option description" [[INTERNET_GROUP]]\n"INCLUDE" "INCLUDE option description" [[RLM Options - INCLUDE]] \n"INCLUDEALL" "INCLUDEALL option description" [[RLM Options - INCLUDEALL]]\n"NO_OLD_RLMUTIL" "NO_OLD_RLMUTIL option description" [[NO_OLD_RLMUTIL]]\n"NOLOG" "NOLOG option description" [[RLM Options - NOLOG]]\n>>
\n[[How To Use This Manual]]\n\n[[RLM License Administration Manual]]\nv10.0 © 2006-2013 Reprise Software, Inc. All rights reserved.\n\nReprise License Manager ^^TM^^ (RLM)\nCopyright © 2005-2013 [[Reprise Software, Inc|http://www.reprisesoftware.com]] All rights reserved.\n\n
RLM License Administration Manual v10.0, January, 2013 ''//(v10.0BL2)//''\n\nReprise License Manager ^^TM^^ \nCopyright © 2005-2013, Reprise Software, Inc. All rights reserved.\n!Contents\n[[Welcome]]\n[[Who Should Read This Manual?]]\n[[Introduction To RLM]]\n[[What's New in RLM v10.0]]\n[[Installing an RLM-licensed Product]]\n[[The License Server]]\n[[The License File]]\n[[License Administration Tools]]\n[[The RLM Web Server]]\n[[Token-Based Licenses]]\n[[The RLM Options File]]\n[[The ISV Options File]]\n[[How to Queue for Licenses]]\n[[How to use Roaming Licenses]]\n[[Failover License Servers]]\n[[Transferring Licenses to Another Server]]\n[[RLM Environment Variables]]\n[[RLM Performance Testing]]\n\nAppendix A - [[Reportlog File Format]]\nAppendix B - [[RLM hostids]]\nAppendix C - [[Optional hostid Installation Instructions]]\nAppendix D - [[RLM Version History]]\nAppendix E - [[Revision History]]\n
For the current list of ~Frequently-Asked Questions, please see our website at http://www.reprisesoftware.com/support/faq.php\n
Reference for Administration of the Reprise License Manager --- Copyright © 2006-2013 Reprise Software, Inc.
\nCertain hostids in the RLMID family (~RLMID1) require device-specific installation on the target computer. These instructions must be passed on to your customer in order for them to use the device.\n\n!Installing ~RLMid1 Devices\n\nThe ~RLMid1 device is a hardware key manufactured by Aladdin Knowledge Systems (now Safenet, Inc). Installation on a target system can be accomplished in two ways:\n*use Windows "Found New Hardware" to automatically load the drivers (preferred), or\n*use the ~RLMID1 driver installer (from the Reprise Software website) to do the driver installation\n\n\n!Using Windows to automatically install drivers\n\nIn order to use Windows to automatically do the driver installation, simply plug the device into the computer, and Windows will detect the new device. If you first get a permissions screen asking if it is OK to use Windows Update to locate the driver, indicate that permission is granted.\n\nYou will get the "Found New Hardware" wizard which will install the drivers for the "USB Protection Device" for you. (Note: the device may alternately be called "HASP HL 3.xx" or "Aladdin USB Key" or "Safenet Inc. USB Key").\n\n\n[img[RLMID1 install start|rlm_enduser_images/rlmid1_install_start.gif]]\n\nSelect "Install the Software Automatically (recommended)", and click "Next". Windows will locate the driver and install it. \n\nYou will then get the "Completing the Found New Hardware Wizard", shown below; click "Finish".\n\n\n\n[img[RLMID1 install complete|rlm_enduser_images/rlmid1_install_complete.gif]]\n\n\nThat is all there is to it.\n\n\n!Installing the drivers using the installation program.\n\nIf for some reason Windows fails to update the driver automatically, or if the target system is not connected to the internet, use the driver installer located at:\n\nhttp://www.reprisesoftware.com/drivers/rlmid1.zip\n\nOr you can download the driver directly from the ~SafeNet site at:\n\nftp://ftp.aladdin.com/pub/hasp/Sentinel_HASP/Runtime_%28Drivers%29/Sentinel_HASP_Run-time_setup.zip\n\n\nTo run the installer:\n*save the installer (rlmid1.zip) to disk\n*extract the zip file\n*navigate into the rlmid1 directory, and run the ~RLMID1 installer application\n*when the installer comes up, leave "Modify" selected (or select it) and press "Next->"\n\n\n[img[RLMID1 installer 1st screen|rlm_enduser_images/rlmid1_1.gif]]\n\n\n*On the "Select Features" screen, click "Next->"\n\n[img[RLMID1 installer 2nd screen|rlm_enduser_images/rlmid1_2.gif]]\n\n\n\n*On the "Ready to Modify the Application" screen, click "Next->"\n\nYou will now see the "HASP SRM Run-time has been installed" screen. Click "Finish". \n\n[img[RLMID1 installer 3rd screen|rlm_enduser_images/rlmid1_3.gif]]\n\n\nThe drivers are installed and you are ready to use the ~RLMID1 devices.\n\n Note that an ~RLMID1 device can be used by any ~RLM-licensed application on the system, in other words, there is nothing ~ISV-specific about the device.
!RLM Embedded Web Server\nThe //rlm// server contains an embedded //Web Server// which can be used to perform most administration of the rlm server itself. The web server contains the functionality of all the rlmXXXX utilities except rlmhostid. The web server allows you to retrieve server and license status (similar to //rlmstat//), cause the servers to re-read the license files (//rlmreread//), switch debug (//rlmswitch//) or report log (//rlmswitchr//) files, move the current report log file to a new name (//rlmnewlog//), or shut down the license servers (//rlmdown//). Using this web-based interface, you can administer the license servers from any platform, and you do not need to install the rlm utilities - you only need a web browser.\n\nIn addition, starting in RLM v4.0, the web server allows you to edit server option files (if you have access to the ''edit_options'' capability - for ISV servers, or the ''edit_rlm_options'' capability - for rlm itself.) Also, RLM v4.0 allows you to view the recent debug log information from any of the servers if you have access to the ''status'' capability. Also, starting in v4.0, access to the ''status'', ''reread'', and ''shutdown'' commands is controlled by the appropriate capability as specified in [[The RLM Options File]].\n\nThe web server is started automatically on port 5054 when rlm is started. To use the web server, simply point your browser to: //http//:////~ServerHostName:5054// and select the operation you would like to perform. You will be prompted for any required information. (Note: RLM ran the web server on port 9000 prior to v6.0).\n\nIf you would like to run the web server on a different port, specify the //-ws NNNNN// command-line argument when starting rlm, where //NNNNN// is the desired port.\n\nThe RLM web server is 100% self-contained in the rlm binary; no additional html files are required for operation.\n\nThe remaining sections will describe some of the main functions of the web interface.\n\n!Access Control to the RLM Web Interface\nBeginning in RLM v10.0, it is possible to require users to log in to the RLM Web Interface.\n\nThe login capability is provided via the //rlm password file//, named //rlm.pw//. If this file exists in the directory with the rlm binary, then the RLM Web Interface will require users to log in before they can perform any actions. Reprise Software recommends that you protect access to this file so that ordinary users can't write it. The //RLM password file//, as well as the directory which contains it, must be read-write to the rlm process.\n\nThe //RLM password file// has one line for each user, formatted as follows:\n\n//username:password:list-of-permissions//\n\nThe //username// must not contain a ':' character.\n\nIf the //password// field is blank, then the user can log in without supplying a password. To change their password, select the "Change Password" menu item once logged in as that user. The //password// field is an encrypted hash of the actual password (similar to the Unix password file).\n\nThe //list-of-permissions// field is a comma-separated list of the various privileges which you can assign to this user. These names are the same names you would use in the RLM options file if you were controlling access without logins enabled, with the addition of the special "all" permission, which enables all operations. If you use the //RLM password file// to control access, you should not use the RLM options file to control access.\n\n!RLM privileges assignable in the RLM password file\n| !Privilege | !Meaning | !Notes |\n| all | Special privilege name, enables all privileges |\n| edit_meter | Allows modifying count for meter counters | Enables "status" privilege even if not present |\n| edit_options | Allows editing options files for ISV servers |Enables "status" privilege even if not present |\n| edit_rlm_options | Allows editing license files and options files for the rlm server | Enables "status" privilege even if not present |\n| edit_xfer | Allows editing server-server license transfer settings for ISV servers |Enables "status" privilege even if not present |\n| logfiles | Enables the functions which change log files - switch, switchr, newlog |\n| remove | Allows the user to remove a license from a running process | Enables "status" privilege even if not present |\n| reread | Allows access to the functions which do reread commands on license servers |\n| shutdown | Allows access to the functions which shut down license servers | Enables "status" privilege even if not present |\n| status | Allows display of status and debug log information from the license servers |\n\nA user with no privileges assigned will have access to the "Activate License", "Diagnostics", "RLM Manual...", "System Info", "About", "Change Password", and "Logout" commands.\n\nA couple of example password line entries shown here:\n\n{{{\n tom:$5ukMApW1jixwcrGqRALO91:all\n harry::edit_options,edit_rlm_options,reread\n}}}\n\nUser "tom" has a password assigned, and can perform all actions with the web interface.\nUser "harry" has no password (therefore no password is required to log in), and has the edit options, edit rlm options, and reread privileges assigned. He will also be able to view status.\n\n\n\n\n!Intro Screen\nThe intro screen of the RLM web server is shown below. There are 3 sections to the rlm web interface:\n* a top banner with the Reprise logo and title\n* a command area on the lower left, and \n* a general view area in the main lower-right hand side of the screen. \n\nThe top section of the view area displays some general information about rlm command options to run the web server. On the left-hand side is a list of administration commands which are discussed later.\n\nNote that, beginning in RLM v10.0, every user will not see all the commands on the left-hand side of the menu, depending on the privileges assigned to that user in the password file or in the RLM options file.\n\n\n[img[RLM web server intro screen image|rlm_enduser_images/rlm_intro_screen.gif]]\n \n\n\n\n!Main Status screen \nIf you select //Status// from the menu on the left, the main status screen is displayed in the view area as shown below. \n\nThe top section displays the host information where the rlm server is running - host name and port #. \n\nBelow this is status of the RLM server itself, followed by buttons to edit rlm options and display the last few lines of the rlm debug log. \n\nNext is a table of ISV servers, one per line, with a number of buttons on the right-hand side of each line to retrieve ISV server status, license status, display the last few lines of the debug log, reread or restart the server, edit server options, or shut down the ISV server. Note that these buttons (and the corresponding columns) will only appear if the user running the web server has access to these functions, as specified in the rlm options file. \n\nThe status screen provides access to the shutdown and reread/restart commands for all the ISV servers, as well as option file editing and debug log viewing for both rlm and the ISV servers.\n\n[img[RLM web server main status screen image|rlm_enduser_images/rlm_status_screen.gif]]\n\n\n\n!Server Status\nIf you click on an ISV button in the //Server Status// column in the ISV server status display, you will see the detailed status display for this ISV server (shown below) in the view area. This display shows some server statistics in a table at the top, followed by a table of all the licenses which this ISV server is serving. \n\nThere are several columns in this table which will appear or not, depending on the particulars of the licenses which this server is serving. For example, there are columns for //hostid// (in the case of node-locked licenses), //roaming// (in the case where some licenses are roamed out to disconnected systems), and //named count// (named user count - in the case of named user licenses). In the example shown here, there are no node-locked licenses, and no licenses are roaming, so these 2 columns do not appear.\n\nAlso, please note that the expiration date shown in this table is the expiration date of the ''first'' license to expire out of all the licenses used to create the license pool. When more than one license is used to create a single license pool (licenses are combined when all relevant parameters of 2 different licenses match), then only the earliest expiration date is shown. The other license(s) may have any expiration date that has not yet expired. To determine the expiration date of all licenses used to make up a license pool the actual license file must be consulted. Also note that licenses from different license files could be combined to make a single license pool.\n\nAt the far right-hand side of each license line, there are 2 columns. The first column has buttons which, if pressed, will generate a list of users of that product. The second column has buttons which are used to maintain the named user list for named user licenses. Note that if this server is not serving any named user licenses, the 2nd column will not appear. Also, only named user licenses will have edit buttons in this column. In the example below, only the first license is a named user license.\n\n[img[RLM web server ISV server status screen image|rlm_enduser_images/isv_status_screen.gif]]\n\n\n\n!License Status\nIf you click on the ''usage...'' button in the "Show License Usage" column above, you will see the license status screen, as shown below.\n\n[img[RLM web server license status screen image|rlm_enduser_images/license_status_screen.gif]]\n\n\n\n!Maintaining Named User Licenses\nIf you click on the ''edit...'' button in the "Edit Named User List" column above, you will see the "Edit Named User Definitions" screen, as shown below. This form contains a table of all the named users for this license, as well as a list of recently deleted named users. You can delete any named user from the list by pressing the ''Delete'' button to the right-hand side of their name. Pressing this button will present a confirmation screen, which then allows you to remove that user from the list. Note that the user cannot be removed from the list if he/she currently has any licenses checked out at the server (including roaming licenses). \n\nOnce deleted, a user must remain off the list for a minimum amount of time as specified in the license. \n\nAt the bottom of this screen are 2 buttons for adding named users to the list. The first button ''Add Group...'' brings up a form which has a choicelist of all GROUP definitions from this ISV server's options file. If you select a group to add, group members will be added to the named user list until the list is full, or the group is exhausted.\n\nBelow the ''Add Group...'' button is an ''Add New User...'' button, which is used to add an individual user to the named user list.\n\nPress the ''Back'' button if you do not wish to make any changes to the named user list.\n\n[img[RLM web server named user editing screen image|rlm_enduser_images/edit_named_user.gif]]\n\n\n\n\n!Server Shutdown\nIf you select //Shutdown// from the menu on the left (or from the Shutdown column in the ISV server status display), you will see the ''Shutdown License Server'' screen below in the view area. If you enter an ISV name that particular ISV server will be shut down. If you leave the ISV name blank or enter "all", all ISV servers will be shut down. Note that you cannot shut down rlm from the shutdown screen. The shutdown will happen when you click the ''SHUT DOWN SERVER'' button. If you do not wish to shut down any servers, use the browser ''back'' button, or select a different command from the list on the left.\n\n\n[img[RLM web server shutdown screen image|rlm_enduser_images/rlm_shutdown_screen.gif]]\n\n\n\n\n\n!Server Reread/Restart\nIf you select //Reread/Restart// from the menu on the left (or from the //REREAD/RESTART// column in the ISV server status display), you will see the ''Reread/Restart Servers'' screen below in the view area. If you enter an ISV name that particular ISV server will be restarted if it is not running, or it will be sent a reread command if it is running. If you leave the ISV name blank or enter "all", all ISV servers will be restarted or reread their license files, as appropriate. If you select //rlm//, the rlm server itself will reread it's license and option files. The reread/restart will happen when you click the ''REREAD LICENSES'' button. If you do not wish to send the reread command to any servers, use the browser ''back'' button, or select a different command from the list on the left.\n\n\n[img[RLM web server REREAD/RESTART screen image|rlm_enduser_images/rlm_reread_screen.gif]]\n\n\n\n\n\n!Switch ISV server Reportlog\nIf you select //Switch Reportlog// from the menu on the left, you will see the ''Switch Reportlog For License Server'' screen below in the view area. Enter an ISV name and a new filename for the reportlog, then that particular ISV server will begin writing it's reportlog to the filename specified. The switch command will be sent when you click the ''SWITCH REPORT LOG'' button. If you do not wish to switch the report log, use the browser ''back'' button, or select a different command from the list on the left.\n\n\n[img[RLM web server Switch Report Log screen image|rlm_enduser_images/rlm_switchr_screen.gif]]\n\n\n\n\n\n!New ISV server Reportlog\nIf you select //New Reportlog// from the menu on the left, you will see the ''New Reportlog For License Server'' screen below in the view area. Enter an ISV name and a new filename for the reportlog, then that particular ISV server will rename the current reportlog to the filename specified, and continue logging to the original reportlog filename. The command will be sent when you click the ''MOVE DATA TO NEW LOGFILE'' button. If you do not wish to rename the report log, use the browser ''back'' button, or select a different command from the list on the left.\n\n\n[img[RLM web server New Report Log screen image|rlm_enduser_images/rlm_newr_screen.gif]]\n\n\n\n\n\n!Switch Debug Log for ISV Server or rlm\nIf you select //Switch Debuglog// from the menu on the left, you will see the ''Switch Debug Log For License Server'' screen below in the view area. Enter an ISV name (or //rlm//) and a new filename for the debug log, then that particular ISV server (or rlm) will begin writing it's debug log to the filename specified. The switch command will be sent when you click the ''SWITCH DEBUG LOG'' button. If you do not wish to switch the debug log, use the browser ''back'' button, or select a different command from the list on the left.\n\nNote that on Unix systems, all servers (rlm plus all ISV servers) initially write their debug log to the same file (stdout of the rlm process). Once you switch any server to a different file, it is not possible to combine the debug log output again.\n\n\n[img[RLM web server Switch Debug Log screen image|rlm_enduser_images/rlm_switch_screen.gif]]\n\n\n\n\n!RLM System Info\nIf you select //System Info// from the menu on the left, you will see the RLM system information screen below in the view area. This information contains the platform type and hostid information for the system where the ''rlm'' process is running (NOTE: ''not'' where your browser is running). In addition, starting in RLM v9.3BL2, this screen will display a list of all rlm processes running on this computer (including processes which are not currently running but which have run in the prior 24 hours).\n\n[img[RLM web server SYSINFO screen image|rlm_enduser_images/rlm_sysinfo_screen.gif]]\n\n\n\n\n!Activate License\nIf you select //Activate License// from the menu on the left, you will be prompted for the information necessary to activate a license from an ISV server's internet site. The information is collected in several steps. The initial screen is shown below. Click on ''BEGIN License Activation'' to step through the screens which will collect the data required to activate a license.\n\n[img[RLM web server Activate License screen image|rlm_enduser_images/rlm_activation_screen.gif]]\n\n\n\n\n!RLM Manual/About...\nThese last two commands display RLM information. The ''RLM Manual'' button displays the latest version of this manual from the Reprise Software, Inc. website at http://www.reprisesoftware.com/RLM_License_Administration.html\n\nThe ''About...'' command displays the intro screen seen at the beginning of this section.
[[RLM License Administration Manual]]\n[[Welcome]]\n[[Who Should Read This Manual?]]\n[[Introduction To RLM]]\n[[What's New in RLM v9.1]]\n[[Installing an RLM-licensed Product]]\n[[The License Server]]\n[[The License File]]\n[[License Administration Tools]]\n[[The RLM Web Server]]\n[[Token-Based Licenses]]\n[[The RLM Options File]]\n[[The ISV Options File]]\n[[How to Queue for Licenses]]\n[[How to use Roaming Licenses]]\n[[Failover License Servers]]\n[[Transferring Licenses to Another Server]]\n[[RLM Environment Variables]]\n[[RLM Performance Testing]]\n\n[[Reportlog File Format]]\n[[RLM hostids]]\n[[Optional hostid Installation Instructions]]\n[[RLM Version History]]\n[[Revision History]]\n\n[[Frequently-Asked Questions]]
\nTo download the RLM License Administration bundle, go to the [[Reprise Website Download area|http://www.reprisesoftware.com/support_and_downloads.htm]], select the License Administration bundle, click "I agree" to the license terms, then select the kit(s) you want to download. Save these on your system, then uncompress and (on unix) extract the binaries with the //tar xvf// command. On windows, the kit is in a winzip archive.\n\nEach kit has a descriptive name on the website. The file names of the kits follow Reprise Software's platform naming conventions, with ".tar.gz" appended for Unix, or ".zip" for Windows:\n|!Platform|!Platform Name|!Kit file name|\n|~HP-UX on ~PA-Risc| hp_h1 | hp_h1.tar.gz |\n|IBM AIX | ibm_a1 | ibm_a1.tar.gz |\n|Linux on Intel X86| x86_l1, x86_l2 | x86_l1.tar.gz, x86_l2.tar.gz |\n|Mac on Intel X86| x86_m1 | x86_m1.tar.gz |\n|Mac on PPC| ppc_m1 | ppc_m1.tar.gz |\n|Solaris on Intel| x64_s1 | x64_s1.tar.gz |\n|Solaris on Sparc| sun_s1 | sun_s1.tar.gz |\n|Windows on Intel X86 | x86_w1 | x86_w1.zip |\n\nTo unpack the License Administration bundle, follow these steps:\n\nAt the shell prompt on Unix: \n\n % gunzip platform.tar.gz\n % tar xvf platform.tar\n\n\nThat is all there is to it - the kit contains pre-built binaries and this manual.\n\nOn Windows, the kit is in winzip format. Extract the binary directory (x86_w1 for 32-bit or x64_w1 for 64-bit) to a convenient location. \n
This document is the [[RLM License Administration Manual]]. \n\nMoving your mouse near the title of the section causes a few links to appear on the right-hand side (close - edit - references). Clicking "close" causes that section to disappear. Alternately, clicking "close all" on the far right closes all open manual sections.\n\nWhen a link appears in a section of the manual, clicking the link makes that section appear just below the current section. Clicking the link again causes the section to disappear. (note: the "click again to make the section disappear" behavior can be changed in the "options" menu on the right, under "Advanced Options", deselect the checkbox labeled "Clicking on links to sections that are already open causes them to close").\n\nYou can also type a keyword (or portion of a word) in the search box on the top right-hand side of the page and all sections which reference that keyword will be displayed with the keyword in @@bgcolor(yellow):yellow highlight@@.\n\nThe menu item on the right titled "export visible sections" will take whatever is displayed on the screen and format it to a new html file with the name <filename>.export.html, where <filename>.html was the name of this file. This is useful if you would like to print certain sections of the manual.\n\n''Note: //You can edit this manual.// Whether you think that is good or bad depends on you.'' To edit a section, double-click on it (or select "edit" from the menu on the top of the section), make your changes, then click "done". If you want to avoid inadvertent edits, remove write permission on the file now.\n\nThis documentation is delivered in ~TiddlyWiki format. For more information about ~TiddlyWiki, see [[the TiddlyWiki home page|http://www.tiddlywiki.com/]]. ~TiddlyWiky is [[Copyright (c) Osmosoft Limited, 14 April 2005]]\n\n''Terms and Conventions Defined''\nWe use several terms throughout the manuals which we define here:\n| ''Term'' | ''Meaning'' |\n| RLM | Reprise License Manager |\n| ISV | Independent Software Vendor. This is the company which provides software licensed with RLM to their //customer//. The ISV is a customer of Reprise Software, Inc. |\n| end-customer or customer | The company which purchases software from an ISV. |\n
You are most likely reading this manual because one or more of your software vendors (~ISVs) have included RLM in their product(s) to enforce their license agreements. This manual describes the components of RLM that you need to understand in order to accomplish day-to-day license administration tasks.\n\nRLM allows your organization to know that you are using purchased software within the license limits set by your ISV. In addition, RLM collects usage information (at your option) for later reporting and analysis. This usage information is provided in a fully-documented report log format, described in Appendix A of this manual.\n\nWhen one of your ~ISVs delivers software to you that incorporates RLM, in addition to the normal application files, you will receive some additional RLM components:\n* the rlm (generic) license server provided by Reprise Software, called "rlm" on Unix systems, or "rlm.exe" on Windows. This is the same for every ISV who uses RLM.\n*the rlm utilities ("rlmutil" on Unix, "rlmutil.exe" on Windows) provided by Reprise Software. This is the same for every ISV who uses RLM.\n* A custom license server, built from components from Reprise Software by your ISV. This server will have a different name for each ISV.\n* a license file to describe your rights to the product. This license file is unique to your site.\n\nIn addition to these components which your ISV supplies, you can create an ISV options file to control various aspects of operation of each ~ISVs product. This options file is described later in this manual. In addition, an RLM options file allows you to restrict access to various administration commands.\n\nRLM is a client-server system, with license requests transmitted over TCP/IP from the software application to a license server that controls license usage rights.\n\n!What sets RLM apart?\nRLM was designed from the start to emphasize //''openness''//, //''transparency''//, and //''simplicity''//.\n\nRLM is //''open''// because we publish the format of our report log file, so that you can always examine and generate usage reports on licensing activity from the RLM servers.\n\nRLM is //''transparent''// in the sense that we do not allow "back doors" which lead to unique behaviors from one ISV to another. In addition, we have removed policy from the application code, and placed it into the license key itself, so that everyone will be able to understand the license terms without having to understand a particular implementation by an ISV. \n\nRLM is //''simple''// because we include functionality like truly automatic selection of license servers from a set of multiple, independent servers. In older license management systems, the ISV ends up writing much code to manage multiple license servers. This is handled by RLM itself.\n\n!Software License Management Basics\nRLM is similar in structure to most popular license managers. RLM consists of 3 major components:\n#a client library\n#a license server (RLM has 2 license servers - a generic server called //rlm// and an ~ISV-specific server.)\n#a text file which describes the licenses granted (the //license file//).\n\nYour ~ISVs application is linked with the client library which provides access to the license management functions. \n\nThe license server is used for floating licenses and logging of usage data. You, as a License Administrator, have the ability to control certain aspects of the license server's operations by specifying options in [[The ISV Options File]].\n\nThe RLM client library (linked into your ~ISVs application) and the license server are both controlled by license authorizations stored in a text file called the //license file//. \n\nMost license managers provide ~APIs with calls to control many of the aspects of licensing behavior, as well as options within the license servers to control licensing behavior. The design philosophy of RLM is to preserve the simplicity of the system for both ~ISVs and License Administrators by avoiding all unnecessary options in the client library and the license servers and moving all these options to the license file, where they are visible and understandable by everyone. In general, license policy should be kept out of the application and the license server, and placed into the license itself. This makes for a more understandable licensing system for both ~ISVs and License Administrators. The API is simpler, and the license server performs in a more standard way from ISV to ISV. This prevents license management confusion by customers. We learned this the hard way when we supported hundreds of customers in the past, and applied these lessons to the design of RLM.
!License Administration Tools\nThe rlm server is delivered with an embedded Web Server to perform normal administration tasks. For more information on the web server interface, see [[The RLM Web Server]].\n\nIn addition, the RLM kit is delivered with several command-line administration tools to perform various administration tasks on the license servers as well as to retrieve information about licensing parameters. While the RLM web interface is the preferred method to administer RLM license servers, the command-line tools are provided as a convenience for use in administration scripts and programs. License Administrators can manage rlm by using the administration tools, as described in detail below: [[rlmdebug]], [[rlmdown]], [[rlmhostid]], [[rlmnewlog]], [[rlmremove]], [[rlmreread]], [[rlmstat]], [[rlmswitch]], and [[rlmswitchr]]. On UNIX platforms, //rlmutil// is an all-in-one utility which is installed with hard links to all the utility program names. On windows, separate .exe files are provided for each utility.\n\nRLM has the ability to restrict usage of the ''remove'', ''reread'', ''shutdown'', ''status'' and ''option editing'' requests. All restrictions are done via [[The RLM Options File]] (new in RLM v4.0). For a description of how to restrict command usage, see [[The RLM Options File]].\n\nAll utilities take the following options:\n|!option|!meaning|\n| -c license_spec | use 'license_spec' instead of the current directory to find license files. 'license_spec' can be either a license file or a port@host specification. Note that prior to RLM v4.0 the ~RLM_LICENSE environment variable takes precedence over a //-c license_spec// specification. Starting in RLM v4.0, the -c option overrides ~RLM_LICENSE. |\n| -dat | use *.dat as the license file instead of *.lic (new in rlm v3.0) |\n| -h | print usage information and exit |\n| -q | don't prompt/quiet (for rlmdown/rlmremove/rlmswitch/rlmhostid). -q also turns off the verification of license checksums and corresponding error messages for all commands. |\n| -v | print version number and exit |\n| -z //password// | use //password// as license password for command (enclose in quotes if //password// contains white space (new in RLM v9.4) |\n\n<<tabs tabsClass\nrlmanon "rlmanon command description" [[rlmanon]]\nrlmdebug "rlmebug command description" [[rlmdebug]]\nrlmdown "rlmdown command description" [[rlmdown]]\nrlmhostid "rlmhostid command description" [[rlmhostid]]\nrlmnewlog "rlmnewlog command description" [[rlmnewlog]]\nrlmrefresh "rlmrefresh command description" [[rlmrefresh]]\nrlmremove "rlmremove command description" [[rlmremove]]\nrlmreread "rlmreread command description" [[rlmreread]]\nrlmstat "rlmstat command description" [[rlmstat]]\nrlmswitch "rlmswitch command description" [[rlmswitch]]\nrlmswitchr "rlmswitchr command description" [[rlmswitchr]]\n>>
Format:\n!LICENSE //isv// //product// //version// //exp-date// //count// [sig=]//license-key// [optional parameters]\n\nThe LICENSE line defines the usage rights to a //product//. All fields in the license line are case-insensitive (with the exception of short, ie, less than 62-character, license keys), and none may be modified by the License Administrator.\n!Fixed (positional) parameters\nThe first 6 parameters are required on every license, and are present in the order shown above.\n|!//isv//|\n//isv// is the name of the ISV granting the rights.\n\n|!//product//|\n//product// is the name of the product for which license rights are being granted.\n\n|!//version//|\n//version// is the highest-numbered product version supported by this license, in the form "N.M". For example, 1.0, 2.37, or 2006.12\n\n|!//exp-date//|\n//exp-date// is the date the license expires, in the form dd-mmm-yyyy, for example, 1-jul-2007. A non-expiring license can be specified with either a year of "0" (ie, "1-jan-0"), or simply the word "permanent".\n\n|!//count//|\n//count// is the number of licenses granted. ''0'' or ''uncounted'' means an uncounted, node-locked license. ''uncounted'' and ''0'' are 100% equivalent. \n\n''single'' means a node-locked, single-use license. ''single'' is different from ''1''. A license with a count of 1 is a regular counted license, and requires a license server. A license with the keyword ''single'' is a single-use, nodelocked license. This license does not require a license server, and in fact license servers will not process this license. ''single'' licenses are a convenient way to issue single-use licenses without the License Administrator having to configure a license server.\n\n''token'', ''token_locked'', and ''token_unlocked'' are used to specify a ~Token-Based License; this license must also have the ''token=...'' optional parameter (see [[Token-Based Licenses]]). The only optional parameter on a //token-based// license which is used by RLM is the start date. All other optional parameters are ignored.\n\nNote that "single", "token", "token_locked", and "token_unlocked" were all added in RLM v2.0.\n\n|!//license-key//|\n//license-key// is a digital signature of all the license data, along with the hostid on the HOST line, if present. If a license has a non-zero count, it always requires a HOST line. An uncounted license does not require a HOST line, and even if there is a HOST line, the hostid of the license server is not used in computation of it's //license-key//. The //license-key// will have "sig=" prepended after the license has been signed by the //rlmsign// utility.\n\nNote that if the //license-key// is preceded by //sig=//, it can be present after any or all of the optional parameters.\n\n!Optional Parameters\nOptional parameters are sometimes present in a license, and can be present in any order. Optional parameters are allowed only once per license. Note that parameter names which begin with the underscore ("_") character can be either added or modified by the License Administrator without invalidating the license signature.\n\n|!//disable="computing-environment-list"//|\n//disable=// specifies that clients running in the appropriate computing environment cannot use this license.\n\n//computing-environment-list// is a list of different computing environment descriptions; if the application is running in any of these environments, the license will not be usable. \n \n//computing-environment-list// is a space-separated list of the following environments (note: (put the list in quotes if more than one item is specified):\n*''~TerminalServer'' - disable use of Windows Terminal Server or Remote Desktop.\n*''VM'' - Disable use on Virtual Machines.\n\nExample:\n//disable=~TerminalServer//\n//disable=vm//\n//disable="vm ~TerminalServer"//\n\n//disable=// first appeared in RLM v4.0, with the single environment //~TerminalServer//. //VM// was added in RLM v5.0.\n\n\n|!//_failover_host=hostname//|\n//_failover_host// specifies the hostname of the machine which is running the failover license server. This field is used only on an "rlm_failover" license, and is set by the License Administrator to the failover server's hostname. See [[Failover License Servers]] for more information.\n\n|!//hold=n//|\n//hold// specifies that a license is to be "held" checked-out by the license server after the application performs a checkin call or exits. The license will remain checked-out for the number of seconds //n// specified after application checkin or exit. //hold// is typically used in the case of licenses that have a very short duty-cycle, in order to provide a "fairer" measure of concurrent usage.\n\n//hold// and //min_checkout// both perform this function in slightly different ways. //hold// always keeps the license checked out for the specified amount of time, whereas //min_checkout// keeps the license checked out for an additional time only if the license was checked back in by the application before the specified minimum time.\n\n|!//host_based[=n]//|\n//host_based// indicates that the specified number of licenses (or all licenses) must be reserved to hosts in the options file. Note that the special host '*' does not count as being reserved. If fewer than the required number of licenses are reserved, the license server will log an error and discard the license. Also note that licenses reserved to a HOST_GROUP are not counted. Thus, all reservations must be to individual hosts. host_based first appeared in rlm v2.0.\n\n|!//hostid=hostid-string//|\nThe optional hostid at the end of the line specifies that the licenses can only be used on the specified host. Uncounted licenses always require a hostid. Counted licenses generally do not have a hostid, but it could be present, in which case we would call this license a "node-locked, counted" license. (For a description of the various hostids that RLM supports, see [[RLM hostids]].\n\nStarting in RLM v5.0, the hostid on a LICENSE line can be a //hostid list//. The //hostid list// is a space-separated list of valid hostids, enclosed in double-quotes. The license can be used on //any// of the hostids in the list. The list must contain at most 25 hostids, and can be no longer than 200 characters.\n\nFor example, this hostid list would allow the license to be used in any of the 4 specified environments:\n\nhostid="ip=172.16.7.200 12345678 rlmid1=83561095 user=joe"\n\n|!//issued=issue-date//|\nThe optional //issued=issue-date// attribute is used in conjunction with the //replace// keyword. See the description of //replace// for a description of how the issue-date affects license replacement.\n\n|!//max_roam=days//|\n//max_roam// is used to specify the maximum number of //days// which a license can be held by the server and used on a disconnected system.\n\n|!//max_roam_count=count//|\n//max_roam_count// specifies the maximum number of licenses which can roam. If unspecified, all licenses are allowed to roam. If set to 0, no licenses are allowed to roam. If 2 licenses are pooled, their max_roam_count values are added. Finally, the ROAM_MAX_COUNT option can lower this value, if specified. (The ROAM_MAX_COUNT option will never raise this value). max_roam_count is new in RLM v8.0.\n\n\n|!//min_checkout=n//|\n//min_checkout// specifies that a license is to be "held" checked-out by the license server after the application performs a checkin call or exits, only if the license did not remain checked out for the minimum interval specified by //n//. The license will remain checked-out such that the total checkout time is //n// seconds. //min_checkout// is typically used in the case of licenses that have a very short duty-cycle, in order to provide a "fairer" measure of concurrent usage.\n\n//hold// and //min_checkout// both perform this function in slightly different ways. //hold// always keeps the license checked out for the specified amount of time, whereas //min_checkout// keeps the license checked out for an additional time only if the license was checked back in by the application before the specified minimum time.\n\n|!//min_remove=n//|\n//min_remove// specifies the lowest value, in seconds, a License Administrator can set the //MINREMOVE// value for a license. If not specified in the license, the RLM default of 120 seconds (2 minutes) is used. If min_remove is set to -1, then rlmremove is disabled on this license.\n\n|!//min_timeout=n//|\n//min_timeout// specifies the lowest value, in seconds, a License Administrator can set the //timeout// value for a license. If not specified in the license, the RLM default of 3600 seconds (1 hour) is used.\n\n|!//options=options-list//|\nThe //options// specification is used to encode options for the product license. The options field is a string (up to 64 characters in length) which is completely defined by the ISV. The options are used to calculate the license signature, but otherwise are unused by RLM. Note that if the string contains embedded white space, it must be enclosed within double quotes. //options=// was added in RLM v5.0.\n\n|!//_password=password-text//|\nThe //_password// specification limits who can use this license to users who know the password. For details of the _password specification <<slider password_restrictions [[License Password Specification]] "CLICK HERE" "Click here to see how to use a password with a license.">> \n\n|!//platforms=platform-list//|\nThe //platforms// specification limits the types of computers which can use this license. For details of the platfoms specification <<slider platform_restrictions [[Platform Restrictions]] "CLICK HERE" "Click here to see how to limit Applications to running on certain platforms">> \n\n|!//replace=[product-list]//|\nThe //replace// specification causes this license to replace other license(s). For details of the replace specification <<slider replace_spec [[Replace Older Licenses]] "CLICK HERE" "Click here to see how to replace older licenses">>\n\n|!//share=UHI[:nnn]//|\n//share// specifies how a license is shared between separate clients (processes). \nFor details of the //share=// option <<slider license_sharing [[License Sharing]] "CLICK HERE" "Click here to see how the share option operates.">> \n\n|!//soft_limit=n//|\nA license can have a //soft_limit// that is lower than it's count of available licenses. For details of the //soft_limit=// option <<slider soft_limit [[License soft_limit]] "CLICK HERE" "Click here to see how the soft_limit option operates.">> \n\n|!//start=start-date//|\n//start=// specifies a //start-date// before which this license is not valid. The format is the same as the expiration date.\n\n|!//timezone=timezone-spec//|\n//timezone=// allows the specification of a set of valid timezones for the client machine that performs the license checkout. The //timezone-spec// is a 24-bit HEX number, with one bit set for each timezone you wish to be valid. Bit 0 represents GMT and each bit to the "left" of bit 0 represents one timezone (one hour) west of GMT. Thus bit 5 would be EST, bit 8 would be PST, bit 23 would be one hour east of GMT, etc. Note that RLM uses the current local time, so the timezones will move by one hour when Daylight Savings Time is in effect (ie, PST varies from 7 to 8 hours west of GMT).\n\n|!//token="<product1 ver1 count1>[ <product2 ver2 count2> ... <productN verN countN>]"//|\n//token=// specifies the list of products which are checked out when a //token-based// license is requested. See [[Token-Based Licenses]] for a complete description.\n\n|!//user_based[=n]//|\n//user_based// indicates that the specified number of licenses (or all licenses) must be reserved to users in the options file. Note that the special user '*' does not count as being reserved. If fewer than the required number of licenses are reserved, the license server will log an error and discard the license. Also note that licenses reserved to a GROUP are not counted. Thus, all reservations must be to individual users. user_based first appeared in rlm v2.0.\n\n''The following fields are not used by RLM, but are present to identify licenses:''\n\n|!//contract=contract-info//|\n//contract=// is meant to hold the customer's purchase order or software agreement number. This can be used to display to the user to validate a support contract, etc. It is not used by RLM.\n\n|!//customer=who//|\n//customer=// is to identify the customer of the software. This can be an added incentive to keep honest users honest, as it is unlikely that Mega ~South-East Airlines would want to use a license that was issued to Main St. Bank., for example. //customer// is not used by RLM.\n\n|!//issuer=who//|\n//issuer=// is used to identify the organization which issued the license. It is not used by RLM.\n\n|!//_line_item="descriptive_text"//|\nThe //_line_item// field is used to map a particular product to the item purchased. This field will be logged into the report log at the start when all products supported are logged, so that a report writer can generate reports based on purchased products, as opposed to product names used for licensing purposes. If the descriptive text contains spaces, it should be enclosed in double-quote (") characters. The contents of the //_line_item// field can be modified (or the field can be added) without invalidating the license signature. _line_item first appeared in RLM v3.0.\n\n|!//type=type-spec//|\n//type=// is used to identify the type of license. //type-spec// is a string containing one or more of the values:\n*"beta"\n*"demo"\n*"eval"\nFor example, //type="beta eval"// or //type="eval"//. The contents of the license //type// field are retrieved by the rlm_license_type() call. //type// is not used by RLM.\n\n\nThe maximum length and types of license fields are as follows:\n\n| !field | !type | !max data length (excluding keyword=) or value range |\n| isv | string | 10 characters |\n| product | string | 40 characters |\n| version | string, in the form nnn.mmm | 10 characters |\n| exp-date | string, in the form dd-mmm-yyyy | 11 characters |\n| count | positive integer | 2**31 - 1 |\n| hold | positive integer - seconds | 2*31 - 1 |\n| host_based | int | count of licenses which must be reserved |\n| hostid (single) | string | 72 characters |\n| hostid (list) | space-separated, quoted string | 200 characters, max of 25 hostids |\n| issued | string, in the form dd-mmm-yyyy | 11 characters |\n| _line_item | string, License Administrator defined | 64 characters |\n| max_roam | positive integer - days | 2**31 - 1 |\n| max_roam_count | positive integer - count | 2**31 - 1 |\n| min_checkout | positive integer - seconds | 2*31 - 1 |\n| min_remove | integer - seconds (-1 for no remove available) | 2**31 |\n| min_timeout | positive integer - seconds | 2**31 - 1 |\n| password | string | 32 characters |\n| platforms | string | 80 characters |\n| share | enumerated | 3 ("uhi") + :integer |\n| soft_limit | integer | 2**31 - 2 |\n| start | string of the form dd-mmm-yyyy | 11 characters |\n| timezone | int | bitmap with bits 0-23 set |\n| user_based | int | count of licenses which must be reserved |\n| contract | string - unused by RLM | 64 characters |\n| customer | string - unused by RLM | 64 characters |\n| issuer | string - unused by RLM | 64 characters |\n| type | string - consisting of "demo" "eval" and/or "beta" | 14 characters |\n\n!Examples:\n!LICENSE reprise write 1.0 permanent uncounted 987435978345973457349875397345 hostid=IP=172.16.7.3\n!LICENSE reprise calc 1.0 1-aug-2008 5 987435978345973457349875398749587345987345\nIn the first example, the //write// product is licensed to a host with an IP address of 172.16.7.3. This is a non-expiring, node-locked, uncounted license. The second example is for 5 licenses of product //calc// which expire on the first of August 2008. The first license would not require a HOST line, whereas the second one would.\n\nNote: The keyword "FEATURE" can be used in place of "LICENSE".\nNote: Licenses are always additive, in other words, the counts on 2 license lines of the same product/isv/version/hostid would be added together by the license server and the total number of licenses would be available.
RLM has the ability to allow a floating license to //roam// to a system which will subsequently be disconnected from the network. The resulting license can be used for the number of days specified when the license was set to roam, and is checked back in automatically at the end of this time. In addition, the user can return the //roamed// license back to the license pool early if this is desired.\n\n''ISV control over license roaming''\nAs an ISV, you control whether licenses are able to roam, and how long they can be checked-out in the disconnected state.\n\nLicense Roaming is only available to systems that are able to check out an //rlm_roam// license issued by you. Note that this license must be available at all times - when the initial product checkout is done as well as when operating in a disconnected fashion. In other words, you must issue an uncounted, node-locked //rlm_roam// license. This license can, of course, be node-locked to "ANY" hostid.\n\nThe characteristics of the //rlm_roam// license also restrict how roaming can be used. For example, if the //rlm_roam// license specifies //platforms=x86_w//, then only 32-bit Windows systems would be able to check out roamed licenses. If //rlm_roam// specifies //max_roam=7//, then roamed licenses could only be checked out for 7 days. You can apply the //max_roam// attribute to any product license as well, but //max_roam// on the //rlm_roam// license applies to all products, so you only need to specify it once if you want to set a global maximum.\n\nAny value of //max_roam_count// on the //rlm_roam// license is ignored. //max_roam_count// is only effective on individual licenses.\n\nOnce issued, the contents of the //rlm_roam// license, as well as the restrictions on the other product licenses will be in effect, but your customer controls roaming operation from that point on.\n\nIf you have issued an //rlm_roam// license and wish to disable roaming for a particular product license, set the //max_roam// attribute on the product license to -1.\n\nFor a description of how roaming works from the user perspective, see [[How to use Roaming Licenses]].
\nAn License Administrator can specify a TIMEOUT value for any idle license. If the license remains idle (i.e. does not communicate with the license server) for this amount of time, the license server performs an automatic checkin of the license and informs the application (if it is still running).\n\n//min_timeout=n// specifies the lowest value an License Administrator can set for the timeout value for a license. If not specified in the license, the RLM default minimum of 3600 seconds (1 hour) is used.\n\n
The RLM License Administration bundle includes several useful binaries as well as a copy of this manual. The License Administration bundle includes a performance test program called ''rlmtests''.\n\n(For details on how to download the RLM License Administration bundle, see [[Download the License Administration Bundle]]).\n\nThe performance test can be run by typing the command ''rlmtests'' at the shell on Unix or in a command window on Windows. When run, ''rlmtests'' creates the licenses required and starts a license server, then it runs the tests, reporting the results on the screen.\n\n!The Tests\n''rlmtests'' performs 2 categories of tests:\n*checkout performance tests\n*server capacity tests\n\nThe checkout performance tests consists of 6 separate tests, named "A" through "F". Each of these tests does performance measurements in different scenarios, as shown in the table below.\n| !Test | !Server Environment | !Test Details | !Notes |\n| A | No clients connected | One rlm_init() followed by a loop of rlm_checkout() calls | The server must maintain the total number of checkout contexts over the course of this test |\n| B | No clients connected | One rlm_init() followed by a loop of rlm_checkout()/rlm_checkin() calls | This is the fastest test, because the server is only handling one checkout context at a time. |\n| C | No clients connected | Loop of rlm_init()/rlm_checkout()/rlm_checkin()/rlm_close() calls | Similar to test "B", with the overhead of initialization on each call. |\n| D | 300 (default) clients connected | Same as "A" | Similar to "A" except that the server now has a number of clients that it is managing. |\n| E | 300 (default) clients connected | Same as "B" | Similar to "B" except that the server now has a number of clients that it is managing. |\n| F | 300 (default) clients connected | Same as "C" | Similar to "C" except that the server now has a number of clients that it is managing. |\n\nThe server capacity test attempts to determine the total number of clients that the server can handle. This test starts up a number of sub-processes which each simulate 1000 clients connected to the server. Sub-processes are started until a checkout fails (or when 50 sub-processes all succeed.) During the course of this test, the checkout performance time is reported as each sub-process completes.\n\n!The Test Environment\n''rlmtests'' runs the client and server on the same machine by default. However, you can run the server on a separate machine from the test client by specifying the "-s" option on the machine that is to run the server, and the "-a hostname" option on the client machine to specify the server machine name.\n\nNote that ''rlmtests'' depends on having the rlm, isv server, rlmutil, and rlmsign binaries in the same directory as ''rlmtests''. This will be the case when you install the RLM kit. If you wish to run ''rlmtests'' from another directory, be sure to copy the other binaries as well.\n\n!rlmtests options\n''rlmtests'' usage is as follows:\n\n''rlmtests'' [-a //host//] [-c //loopcount//] [-d] [-h] [-l //static#//] [-p //port#//] [-s] [//subprocess_client_count//]\n\nWhere:\n* -a //host// - run the client side only against the server on machine //host//. Note that the server must be already running on //host//.\n* -c //loopcount// - controls the number of iterations for the loops for tests ~A-F. Default is 12000. (note that not all the loops use this count, but all are scaled in proportion to this number).\n* -d - turn on debugging output.\n* -h - print help text and exit.\n* -l //static#// - use //static#// simulated clients for tests ~D-F (300 default).\n* -p //port#// - use //port#// for the server port (should be specified on both server and client side if running on different machines). The default port # is 30000.\n* -s - run as the server side only.\n* //subprocess_client_count// is the number of simulated clients which each subprocess will run in the server capacity tests. The maximum value is 2000.\n\n\nNote: rlmtests was first introduced in RLM v3.0.
The RLM servers create a reportlog in three formats, selectable by the License Administrator. The 3 formats are "std", "small", and "detailed". (Note that prior to RLM v9.3 there was no "detailed" format on Windows; specifying "detailed" would produce a standard report output. Starting in RLM v9.3, the detailed report will be produced, but all fractional seconds fields will be 0) The formats differ only in the contents of the checkout and checkin records, as described below. Common to all formats are the classes of data logged, and the data for all except checkin and checkout records.\n\nThe reportlog format has a version number in the start record. All data described applies to all versions of the reportlog, except where indicated.\n\nThe data is:\n\n*authentication data (added in RLM v3.0)\n*checkin\n*checkout\n*dequeue (added in RLM/reportlog v1.1)\n*isv-specific data (added in RLM v2.0)\n*license denial\n*license in use (added in RLM/reportlog v10.0)\n*log file start\n*log file end (can correspond to a switch to a new logfile)\n*meter transaction data (added in RLM v9.3)\n*periodic timestamps\n*queue (added in RLM/reportlog v1.1)\n*roam extend\n*server shutdown\n*server reread of license/option file\n*support for a product (feature) - one for each //license pool// at log file start time\n\nNote: in every reportlog entry which contains a username or a hostname, the field is presented without quotes. However, if the corresponding value is empty, a pair of double-quotes ("") will be placed in the reportlog where the username or hostname would be. This is new in RLM v9.0.\n\nA reportlog consists of the following data:\n{{{\nlog file start records\none PRODUCT support line for each supported product\none license in use record for each currently-checked-out license\nall license activity data, including checkouts, checkins, AUTH records, etc.\none license in use record for each currently-checked-out license\noptional SWITCH line\nEND line\nfinal AUTH line\n}}}\n\nThe format of the data logged is:\n\n\n!''Authentication data''\n** AUTH section //signature//\n\nThis line specifies the authentication signature (//signature//) for the preceding data in the file. If any of the data since the last AUTH line is modified, the authentication value will no longer be correct. This would typically be used by an ISV if they are using the report log data for post-use billing. The ISV can run a utility in order to verify the authentication records in a report log. Report writers can (and should) ignore this line.\n\n!''checkin''\n"standard" format:\n** IN //why product version user host "isv_def" count cur_use cur_resuse server_handle// mm/dd hh:mm:ss \n\n"detailed" format:\n** IN //why product version user host "isv_def" count cur_use cur_resuse server_handle// mm/dd hh:mm:ss.tenths_of_msec\n\n"small" format:\n** IN //why count server_handle// hh:mm\n\nThe //server_handle// parameter is a hex number. All other numbers are decimal.\n\nThe //isv_def// field contains the value of the optional ~ISV-defined field. This field is new in reportlog v1.1\n\nThe //why// parameter is one of:\n|why value| Reason |\n| 1 | "Normal" checkin by application |\n| 2 | Application exited, automatic checkin |\n| 3 | License removed by (rlmremove) utility |\n| 4 | License removed by server after timeout |\n| 5 | License hold/minimum checkout period expired |\n| 6 | Client requested license dequeue |\n| 7 | Portable hostid removed |\n| 8 | Failed host back up |\n| 9 | Server lost it's transferred licenses |\n| 10 | Meter ran out of count during a periodic decrement |\nNote: //why// values of 4, 5 and 6 are new in v1.1, value 7 is new in RLM v5.0, values 8 and 9 are new in RLM v7.0. 10 is new in RLM v9.3.\n\nThe //cur_use// and //cur_resuse// fields indicate the current number of free licenses in use and reservations in use after this checkin. These fields are new in reportlog v2.0.\n\nOn Windows, //tenths_of_msec// will always be 0.\n\n!''checkout''\n"standard" format:\n** OUT //product version pool# user host "isv_def" count cur_use cur_resuse server_handle share_handle process_id // "//project//" "//requested product//" "//requested version//" mm/dd hh:mm:ss \n\n"detailed" format:\n** OUT //product version pool# user host "isv_def" count cur_use cur_resuse server_handle share_handle process_id // "//project//" "//requested product//" "//requested version//" mm/dd hh:mm:ss.tenths_of_msec "//client_machine_os_info//" "//application argv0//" roam_days roam_handle\n\n"small" format:\n** OUT //product version user host "isv_def" count server_handle share_handle // hh:mm\n\nNote: the //project// field will contain the contents, if any, of the //~RLM_PROJECT// environment variable of the application that checked out the license. This project name has a maximum of 32 characters.\n\nThe //isv_def// field contains the value of the optional ~ISV-defined field. This field is new in reportlog v1.1\n\nThe //cur_use// and //cur_resuse// fields indicate the current number of free licenses in use and reservations in use after this checkout. These fields are new in reportlog v2.0.\n\nThe //server_handle, share_handle, and process_id// parameters are hex numbers. All other numbers are decimal.\n\nThe //share_handle// field contains the value of the handle of a shared license. This field is new in reportlog v1.1. Note that the //share_handle// is the handle of the first license that was checked out in this group of shared licenses. It is possible (and perhaps even likely) that the handle associated with the group will change if the first license is checked in before other shared licenses are checked in. In this case, new checkouts will specify a //share_handle// of a different license in the group of shared licenses.\n\nThe //requested product// and //requested version// fields represent the requested product and version in the application's checkout call. In the case of a token-based license, the product (or products) actually checked out will differ, and //requested product// and //requested version// provide what the application actually requested. This data is new in reportlog v2.0 (RLM v2.0).\n\nThe //process_id// field is the PID of the process requesting the license. This data is new in reportlog v2.0 (RLM v2.0).\n\nThe //client_machine_os_info// field is a combination of the platform type and OS version running on the client machine. This string is a maximum of 41 bytes long, and is in the format:\n "rlm_platform_name os_version"\nFor example:\n "x86_w2 5.1" - a windows system running Windows XP.\n\nThis field is new in reportlog v8.0 (RLM v8.0).\n\nThe //application argv0// field is the argv[0] of the product requesting the license. This field is new in reportlog v8.0 (RLM v8.0).\n\nThe //roam_days// field is the (hex) number of days for which the license will roam. This will appear on the initial checkout of a roaming license as well as on the subsequent checkout when the server checks out an already-roaming license. This field is new in reportlog v9.0 (RLM v9.0)\n\nOn Windows, //tenths_of_msec// will always be 0.\n\nThe //roam_handle// field is the server handle (in hex) of a roaming license re-checkout. This field will be non-zero when the server checks out an already-roaming license (as it does when starting up). This field is new in reportlog v9.0 (RLM v9.0)\n\n!''dequeue''\n"standard" format:\n** DEQUE //why product version user host "isv_def" count server_handle// mm/dd hh:mm:ss \n\n"detailed" format:\n** DEQUE //why product version user host "isv_def" count server_handle// mm/dd hh:mm:ss.tenths_of_msec\n\n"small" format:\n** DEQUE //why count server_handle// hh:mm\n\nThe //server_handle// parameter is a hex number. All other numbers are decimal.\n\nThe dequeue record is new in v1.1. Note that the dequeue record is identical to the checkin record except the keyword is "DEQUE" rather than "IN". A dequeue record is generated on all other servers when a client is granted a license on one server.\n\nOn Windows, //tenths_of_msec// will always be 0.\n\n!''isv-specific data'' \n** log mm/dd hh:mm:ss isv-specific-data-here\n\nIndividual ~ISVs can log unformatted data to the report log. This data appears in a "log" record. Note: The isv-specific data is new in reportlog v2.0 (RLM v2.0).\n\n!''license denial''\n"standard" and "small" formats:\n** DENY //product version user host "isv_def" count why last_attempt// mm/dd hh:mm\n\n"detailed" format:\n** DENY //product version user host "isv_def" count why last_attempt// mm/dd hh:mm:ss.tenths_of_msec\n\nThe //why// parameter is an RLM_LICENSE error status return (~RLM_EL_xxxx) as documented in [[RLM Status Values]].\n\nThe //last_attempt// parameter is 0 if the application will attempt another checkout, or non-zero if this is the last attempt it will make to check the license out. Thus, denials with //last_attempt// set to 0 are not "true" denials of the license to the application, they are simply denials of the license at this license server. A report writer should only report application license denials when //last_attempt// is set to a non-zero value.\n\nThe //isv_def// field contains the value of the optional ~ISV-defined field. This field is new in reportlog v1.1\n\nThe detailed format is new in reportlog v4.0. Prior to v4.0, it was identical to the standard and small formats.\n\nOn Windows, //tenths_of_msec// will always be 0.\n\n!''license in use''\nThe license in use record has only a single format, for all 3 reportlog formats:\n\n** INUSE //product version pool# user host "isv_def" count server_handle process_id mm/dd hh:mm:ss\n\nThe //isv_def// field contains the value of the optional ~ISV-defined field.\n\nThe //server_handle and process_id// parameters are hex numbers. All other numbers are decimal.\n\nThe //process_id// field is the PID of the process requesting the license.\n\nLicense in use records are new in RLM v10.0, and appear both at the beginning and the end of the report log if any licenses are in use at that time.\n\n!''log file start'' \n**RLM Report Log Format //d//, version //x.y// //authentication flag//\n**REPROCESSED with rlmanon vx.y\n**ISV: <isvname>, RLM version a.b ~BLc\n** <several lines of header text>\n**START //hostname// mm/dd/yyyy hh:mm \n**LICENSE FILE //filename//\n\nThe //d// in the first line is the format: 0 for "std", 1 for "small", and 2 for "detailed"\n//x.y// is the reportlog version. Reportlog v1.0 corresponds to RLM version 1.0. reportlog v1.1 corresponds to RLM v1.1. The //authentication flag// is either blank (no authentication) or the string "'', authenticated''". (Note: Authentication first appeared in RLM v3.0, reportlog format 3.0. Starting in v4.0, all report logs are authenticated).\n\nThe second line will be present if the //rlmanon// utility was used to anonymize the reportlog data. The version of rlmanon corresponds to the RLM version. //rlmanon// first appeared in RLM v4.0, however while this was added in RLM v4.0, this line can appear in any reportlog version, since //rlmanon// can process any version of reportlog. Note that this line can be repeated if multiple runs of //rlmanon// were made on the same log file.\n\nThe third line displays the ISV name, and the RLM software version of the ISV server (a.b ~BLc, BL means "~BuiLd").\n\nIn general, numeric data is in decimal format. The 3 exceptions to this are //server_handle, share_handle, and process_id// parameters which are always hex numbers.\n\nThe LICENSE FILE line(s) are new in reportlog v2.0. There will be one LICENSE FILE line for each license file which the server is processing.\n\n!''log file end''\n** SWITCH to //filename// (if an rlmswitch was done)\n** END mm/dd/yyyy hh:mm \n\n\n!''meter decrement''\nAll formats:\n** ~METER_DEC //license_handle// //meter_counter// //amount_decremented// mm/dd/hh:mm:ss[.tenths_of_msec]\n\nA //meter decrement// record will immediately follow a checkout record for a metered license. In addition, an additional //meter decrement// record will appear periodically when the meter is decremented for this product. The //license handle// is a hex value; both //meter counter// and //amount decremented// are decimal.\n\nThe format is the same for all reportlog types, with the exception of the time - in the detailed reportlog format, tenths of milliseconds are added.\n\n//meter decrement// records are new in RLM v9.3.\n\n!''periodic timestamp'' \n** TIMESTAMP mm/dd/yyyy hh:mm\nTimestamps are performed by the ISV servers every night just after midnight.\nBeginning in RLM v9.3, timestamps are added to the log file every 30 minutes\n\n!''queue''\n"standard" format:\n** QUE //product version user host "isv_def" count server_handle // "//project//" "//requested product//" "//requested version//" mm/dd hh:mm:ss \n\n"detailed" format:\n** QUE //product version user host "isv_def" count server_handle // "//project//" "//requested product//" "//requested version//" mm/dd hh:mm:ss.tenths_of_msec\n\n"small" format:\n** QUE //product version user host "isv_def" count server_handle // hh:mm\n\nThe //server_handle// parameter is a hex number. All other numbers are decimal.\n\nNote: the queue message is new in RLM v1.1 (reportlog v1.1).\nNote: the "requested product" and "requested version" fields were added in RLM v5.0 (reportlog v5.0).\n\nThe //project// field will contain the contents, if any, of the //~RLM_PROJECT// environment variable of the application that checked out the license. This project name has a maximum of 32 characters.\n\nThe //isv_def// field contains the value of the optional ~ISV-defined field.\n\nOn Windows, //tenths_of_msec// will always be 0.\n\nIf the queued license becomes available, a checkout record will be logged with the same handle. If the client abandons the checkout, however, no other records will be logged.\n\n!''roam extend''\nThe roam extend record has only a single format, for all 3 reportlog formats:\n\n** ~ROAM_EXTEND //product version pool# user host "isv_def" #days_extended server_handle process_id// mm/dd hh:mm:ss\n\nThe //isv_def// field contains the value of the optional ~ISV-defined field.\n\nThe //#days_extended// parameter is the # of days which the roam was extended. So, if a license was originally roaming for 6 days, then extended to 10 days, this parameter will be 4, independent of which day the extension was done.\n\nThe //server_handle and process_id// parameters are hex numbers. All other numbers are decimal.\n\nThe //process_id// field is the PID of the process requesting the license.\n\nRoam extend records are new in RLM v10.0.\n\n!''server shutdown''\n** SHUTDOWN //user// //host// mm/dd hh:mm:ss \n\n!''server reread of license/option file''\n** REREAD //user// //host// mm/dd hh:mm:ss \n\n!''support for a product''\nThere will be one record per license pool for each product served. These lines come immediately after a START or REREAD record. Note that there is not a one-to-one correspondance between the ''support'' records and LICENSE lines in the license file.\n** PRODUCT //name version pool# count #reservations soft_limit "hostid" "contract" "customer" "issuer" "line_item" "options" share max_share type named_user_count meter_type meter_counter meter_initial_decrement meter_period meter_period_decrement//\n\n''NOTE:'' The //soft_limit, contract, customer, and issuer// fields are new in the v1.1 reportlog. The //hostid// and //pool#// fields are new in the v2.0 reportlog. The //line_item// field is new in the v3.0 reportlog.\nThe //options//, //share//, //max_share//, //type//, and //named_user_count// are new in the RLM v5.0 reportlog. The five //meter_// parameters are new in RLM v9.3.\n\n//count// is the number of free licenses (ie, non-reserved licenses)\n//#reservations// is the number of reserved licenses (not generally available).\n//pool#// is an internal server pool identifier. This number appears in checkout records in some formats.\n//line_item// is the contents of the product's //_line_item// field, used for mapping license product names to actual purchased products.\nmeter_type is always 0 in RLM v9.3. Other values may be defined in later versions. A non-zero value in //meter_counter// indicates a metered license.\n//meter_counter// is the counter which is used for this product.\n//meter_initial_decrement// is the amount to be decremented from the meter when a license is checked out.\n//meter_period// is the number of minutes before an additional decrement is performed (0 means no periodic decrements)\n//meter_period_dec// is the amount to be decremented from the meter each //meter_period// minutes.\n\n\n! Reportlog version change history\n| ! v10.0 reportlog changes |\n| All logfiles will now log all licenses currently in use both at the start and the end of the reportlog, with the new "INUSE" record. |\n| The ROAM_EXTEND record is added. |\n| ! v9.3 reportlog changes |\n| Windows systems will now produce a detailed reportlog, however, all fractional seconds fields will be 0. |\n| //meter decrement// records added. |\n| metering parameters added to the //support// record |\n| The logfile is timestamped every 30 minutes |\n| ! v9.0 reportlog changes |\n| roam days and roam handle added to the OUT record for detailed format. |\n| All fields which have a username or a hostname will now contain only an empty pair of double-quotes ("") if the corresponding value is empty. This only happens when rlm cannot determine the username or hostname on the system using the standard system calls. |\n| ! v8.0 reportlog changes |\n| client machine OS version added to the OUT record for detailed format. |\n| application argv[0] added to the OUT record for detailed format. |\n| ! v5.0 reportlog changes |\n| requested product and requested version added to QUE record for std and detailed formats. |\n| requested product and requested version will always be empty strings in OUT records that result from a de-queueing of a previously-queued request. |\n| options, share, max_share, type, and named_user_count added to PRODUCT support record |\n| Portable hostid removed - status 7 - added to checkin reasons. |\n| ! RLM v4.0 reportlog changes |\n| REPROCESSED line added for //rlmanon//. Note that this line can appear in any version reportlog, since //rlmanon// can process all reportlog versions. Report writers can ignore this line, it is in the file for informational purposes only. |\n| "detailed" format added to DENIAL records to add seconds and fractional seconds. |\n| REREAD END records were not generated prior to v4.0. This record is removed. |\n| New denial status -45 (~RLM_EL_NOT_NAMED_USER) added |\n| All report logs are authenticated. |\n| ! v3.0 reportlog changes |\n| NOTE: the v3.0 reportlog is incorrectly logged as v2.0 in the "RLM Report Log" line. The version in the ISV line will correctly indicate that it is a v3.0 logfile. |\n| line_item added to PRODUCT records |\n| ", authenticated" added to the end of the 'RLM Report Log' (first) record if this reportlog is authenticated |\n| AUTH records added (for authenticated reportlogs) |\n| ! v2.0 reportlog changes |\n| LICENSE FILE line added in header section |\n| isv-specific data ("log" records) added |\n| cur_use and cur_resuse fields added to IN records (standard and detailed formats) |\n| process_id, requested_product, and requested_version added to OUT records (standard and detailed formats) |\n| hostid and pool# added to PRODUCT records |
RLM License Administration Manual\n
\nA Roaming license is a license that is checked out from the license server and used on a disconnected system. During this time, the license server holds the license checked-out just as if the system were still connected to the license server. \n\nRoaming licenses are only allowed if you issue your customer an //rlm_roam// license that is valid on the disconnected system.\n\nIf you do not specify //max_roam// in an individual license, RLM limits the maximum number of days that a license can roam to 30 days. To disable roaming on a particular license, set //max_roam// to-1 for that license.\n\nAlso note that if you specify //max_roam// on the //rlm_roam// license itself, this //max_roam// specification will apply to all of your products which do not have //max_roam// specifications.\n\n
The license file contains information which configures the license servers and describes all the licenses granted from the ISV to their customer. License Files have 3 types of lines:\n# HOST Lines that specify the license server host\n# ISV Lines which specify the ISV's license server information, and\n# LICENSE Lines which describe license grants from the ISV to the customer.\n\nApplications, License Servers, and License Administration Tools locate the license file using [[The License Environment]].\n\n{{{\nNote: the license file cannot be placed in a path where any component of the pathname contains the '@' character. \n}}}\n\n''Special License Names''\nAny product name beginning with "rlm_" is reserved to Reprise Software.\n\nThe product name //rlm_roam// is treated specially by RLM. //rlm_roam// indicates that roaming has been enabled by an ISV. If an ISV issues an //rlm_roam// license, then roaming is enabled on any computer which is able to check out the //rlm_roam// license while in a disconnected state.\n\n''Legal characters in the license file''\nIn general, all license file fields are white-space delimited, meaning that no data item can contain embedded spaces, tabs, newlines or carriage returns. In addition, the following four characters are illegal in data items in the license (and options) file: "<", ">", "&", and double-quote ("). Note: single quote (') and back-quote (`) were illegal prior to RLM v8.0. ISV license names cannot begin with the characters "rlm_".\n\nNote that all lines in option files (RLM or ISV) as well as license files //must// be shorter than 1024 characters. Anything over 1024 characters will be truncated.\n\nEverything in the license file is case-insensitive, with the following three exceptions:\n* //isv-binary-pathname// on ISV lines [Note: case-sensitive on Unix systems only]\n* //options-file-filename// on ISV lines [Note: case-sensitive on Unix systems only]\n* short (~62-character) license keys (keys with bits/character of 6)\n\n\n|!Note: any time RLM processes a username, it will replace any white space in the name with the underscore '_' character. This is true for usernames used as hostids, in server option files, or passed between client and server.|\n\nFor a detailed description of each type of line, click on the appropriate tab below:\n<<tabs tabsClass\nHOST "HOST line description" [[HOST Line]]\nISV "ISV line description" [[ISV Line]]\nLICENSE "LICENSE line description" [[LICENSE Line]]\nUPGRADE "UPGRADE line description" [[UPGRADE Line]]\n>>\n\n''Types of Licenses''\nWhile there is a single format for the license file, the licenses you receive from your software suppliers can have many different meanings. The following licensing attributes which are present in all licenses:\n\n*''Locking: Node-locked'' (counted or uncounted), ''Username-locked'' (counted or uncounted), or ''Floating licenses''. For details <<slider lic_locking [[License Locking]] "CLICK HERE" "Click here to see the options for license locking">>\n*''Expiration: Expiring or non-expiring licenses'', For details, <<slider lic_expiration [[License Expiration]] "CLICK HERE" "Click here to see the options for license expiration">>\n*''Version: By version number or by product release date.'' For details <<slider lic_version [[License Version]] "CLICK HERE" "Click here to see the options for license versions">>\n*''License Count'': Each license has a count of available licenses. If this count is "0" or "uncounted", the license count is not enforced. Otherwise, only the specified number of license checkouts are allowed.\n\n''In addition, licenses can have the following optional attributes:''\n*''Hold time.'' For details <<slider hold_time [[Hold Time Specification]] "CLICK HERE" "Click here to see the options for Hold Time">> \n*''License Issue Date.'' If //issued=dd-mmm-yyyy// is specified in the license, this license issue date will be used in the computation of license replacement. If no issue date is present, the license start date is used. If neither is present, then this license will be replaced by any license specifying a //replace=// keyword with this license's product name.\n*''Maximum Roam Days.'' For details <<slider roam_days [[Roam Maximum Specification]] "CLICK HERE" "Click here to see how to limit Roam Time">> \n*''Minimum checkout time.'' For details <<slider min_checkout_time [[Minimum Checkout Time Specification]] "CLICK HERE" "Click here to see the options for Minimum Checkout Time">> \n*''License Password.'' For details <<slider license_password [[License Password Specification]] "CLICK HERE" "Click here to see how to use a license password">>\n*''Replacement Licenses.'' For details <<slider replacement_licenses [[Replace Older Licenses]] "CLICK HERE" "Click here to see how to replace older licenses">> \n*''Platform Restrictions.'' For details <<slider platform_restrictions [[Platform Restrictions]] "CLICK HERE" "Click here to see how to limit Applications to running on certain platforms">> \n*''Effective Start Date.'' If //start=dd-mmm-yyyy// is specified in the license, the license cannot be used before the specified date.\n*''License Soft Limits.'' For details <<slider license_soft_limit [[License soft_limit]] "CLICK HERE" "Click here to see how to use soft limits on licenses">>\n*''Sharing of licenses between different processes.'' For details <<slider license_sharing [[License Sharing]] "CLICK HERE" "Click here to see how to share licenses between running processess">> \n*''Timezone Restrictions.'' For details <<slider timezone_restrictions [[Timezone Restrictions]] "CLICK HERE" "Click here to see how to limit Applications to running in certain timezones">> \n*''Minimum License Timeout specification.'' For details <<slider min_timeout_spec [[Minimum Timeout]] "CLICK HERE" "Click here to see how to specify the minimum timeout for a license.">> \n\nFinally, the license can be tagged with additional data, which is not used by RLM, but which can be used by applications to present to the user:\n*''Customer.''\n*''Contract.''\n*''Issuer.''\n*''Type.''
~Token-Based licenses are licenses that are defined in terms of another license. For example, an application could request a license for product ''write''. If this were a //normal// license, the product ''write'' would appear in the license file (if the request succeeds) with a license count (or //uncounted//). On the other hand, if this were a //token-based// license, the product ''write'' would appear in the license file without a count, but with a specification of one or more other products which are used to satisfy the request. When the license server encounters a request for a //token-based// license, it uses the other products specified in the license to satisfy the request, rather than the originally-requested product. These other licenses are called the //primary// licenses.\n\nThere are two main uses for token-based licenses. The first use of token-based licenses allows a customer to mix-and-match different products as their needs change. If several products are all defined in terms of a single pool of //primary// licenses, the License Administrator can control license usage as needs demand. This can be a benefit to both ~ISVs and customers, since as new products are introduced, if they are licensed based on the same //primary// license, all customers instantly have access to the new products without having to go through a purchase-order cycle.\n\nAnother use of token-based licenses is to allow alternate licenses to satisfy a request for a product. To use the familiar example, if product ''write'' checks out a //write// license, the addition of a //token-based// license for //write// mapping it to //office// would allow an //office// license to be used in the case where no //write// licenses are available. Even though the //office// license is a more expensive license, the customer is allowed to continue working by consuming the more expensive //office// license. Several //token-based// licenses can be used in this way, and the order of the licenses in the license file will determine the order that alternate checkouts are attempted.\n\nA token-based license differs from a normal license in four ways:\n* The count field contains one of the 3 token keywords (''token'', ''token_locked'', or ''token_unlocked'') rather than an integer, ''uncounted'', or ''single''.\n* The license has a token spec: ''token="<prod ver count> ... <prodN verN countN>"''\n* The only optional parameter on a token-based license which is used by RLM is the start date. All other optional parameters are ignored.\n* License option processing is different for //token-based// licenses. See below.\n\n\n!Types of //token-based// Licenses\nWhen a product is specified as a //token-based// license, requests for that product are turned into requests for the //primary// license(s) specified in the ''token='' part of the license. For example, consider this license for product ''test'' (//primary// license ''dollars''):\n|!LICENSE reprise test 1.0 permanent token sig=xxxx token="<dollars 2.0 5>" |\n|!LICENSE reprise dollars 2.0 permanent 10 sig=xxxx |\nThis license is called a //simple token-based// license. Any //token-based// license that maps a checkout of one product into a (single) //primary// license is a //simple token-based// license.\n\nA //token-based// license can map one request into multiple checkouts, however. In this case, it is called a //compound token-based// license. Using our product ''test'' as an example again:\n|!LICENSE reprise test 1.0 permanent token sig=xxxx token="<dollars 2.0 5> <cents 3.4 53>" |\n|!LICENSE reprise dollars 2.0 permanent 100 sig=xxxx |\n|!LICENSE reprise cents 3.4 permanent 1000 sig=xxxx |\nNow, a request for 1 license of ''test'' v1.0 would result in the license server checking out 5 v2.0 licenses of the product ''dollars'', and 53 v3.4 licenses of the product ''cents''. If ''both'' of these primary licenses are available, the checkout request for ''test'' succeeds, otherwise it fails. Note that when a //compound token-based// license is checked out, the RLM functions return information about the first license in the list only. In this example, RLM functions would return information about the //dollars// license.\n\n\n!The License Count Keywords\nIn a //token-based// license, the count keyword is one of:\n*token\n*token_locked\n*token_unlocked\n\n//token// and //token_unlocked// imply that the //token-based// license itself does not include the license server hostid in its license signature. This makes the license usable in //''any''// license file. Note that //token// and //token_unlocked// are 100% equivalent.\n\n//token_locked// means that the //token-based// license includes the license server hostid in it's signature, and is valid only in //this// license file.\n\n!The //token=// keyword\nIn a //token-based// license, the //token=// keyword specifies the //primary// licenses which are checked out in response to a request for the //token-based// license itself. Specify one or more licenses to be checked out. These licenses can also be //token-based// licenses themselves (in which case the //primary// license(s) will be the ultimate expansion of all //token-based// licenses). The format is:\n\n''token="<product1 ver1 count1>[ <product2 ver2 count2> .... <productN verN countN>]"''\n\nThe request for the one of the original license turns into checkouts of:\n*//count1// of //product1, ver1//\n*//count2// of //product2, ver2//\n* ...\n*//countN// or //productN, verN//\n\n\n!Nesting //token-based// licenses.\nThe definition of a token-based license can include other licenses which are token-based licenses themselves. For example:\n\n|!LICENSE reprise test 1.0 permanent token sig=xxxx token="<t2 2.0 5>"|\n|!LICENSE reprise t2 2.0 permanent token sig=xxxx token="<dollars 2.0 5>"|\nIn this example, a request for one test v1.0 license results in 25 dollar v2.0 licenses checked out.\n\nNote that the license server uses nesting of greater than 20 levels to detect token "loops", so any licenses nested this deeply will be rejected. Also note that nesting has no effect on whether a //token-based// license is //simple// or //compound// - this is determined solely by whether a single request maps into a single checkout or not.\n\n!Restrictions on //token-based// licenses\nThere are a few restrictions on //token-based// licenses:\n* All //token-based// licenses are processed by the license server, so there can be no uncounted, node-locked //token-based// or //primary// licenses that operate without a license server. (However, a license server can serve a node-locked, uncounted //primary// license.)\n* All individual checkouts for a //compound token-based// license are satisfied by a single license server. This means that if a license turns into checkouts of //primary// licenses a, b, and c, where only a and b are available on one server and only c is available on a second server, the request will fail.\n* Queuing is not allowed for //compound token-based// licenses. This would lead to license server insanity.\n\n\n!rlmremove and //token-based// licenses\nThe //token-based// license itself cannot be removed. If any of the //primary// licenses are removed, the server will remove all //primary// licenses, and the application will notice a loss of license on the next heartbeat. In this sense, the //token-based// license works just like a regular, non //token-based// license.\n\n!Report Log\nWhen a //token-based// license is checked out, the name of the license requested (and it's version) is logged in the checkout record for each resulting //primary// license checkout.\n\n!License Administration Options\nThe only options that apply to the //token-based// license itself are the include and exclude keywords:\n*INCLUDE\n*INCLUDEALL\n*~INCLUDEALL_ROAM\n*EXCLUDE\n*EXCLUDEALL\n*~EXCLUDEALL_ROAM\nAll other License Administration options have no effect on the //token-based// license.\n\nAll options affect the //primary// licenses, however.\n\nToken-based licenses were added in RLM v2.0
Format:\n!UPGRADE //isv// //product// //from-version// //to-version// //exp-date// //count// [sig=]//upgrade-key// [optional parameters]\n\nThe UPGRADE line defines an upgrade from an older version (//from-version// or higher) to a newer version (//to-version//) of an existing //product//. All fields in the upgrade line are case-insensitive (with the exception of short, ie, less than 62-character, license keys), and none may be modified by the License Administrator with the exception of the parameters whose names begin with an "_" character.\n\nWe refer to the license specified by the UPGRADE line as the //upgrade license//, and the license it operates on as the //base license//.\n\nAn UPGRADE license will convert //count// licenses of //product// of version //from-version// or higher into //to-version//. Note that an UPGRADE license will never operate on a base license that is >= //to-version//. \n\nIn order for the upgrade to be performed, certain parameters of the //upgrade license// must match the parameters of a //base license// in order for that license to be eligible to be ''upgrade''d.\n\nCertain licenses can never be upgraded. In particular, token-based licenses (the token definitions themselves) will never be upgraded. Also, named-user licenses are not eligible for upgrades.\n\nIn order for a license to be upgraded, the following parameters must match on the //base license// and the //upgrade license//:\n*License Disable specification\n*License Options\n*License Sharing specification (share and max_share)\n*License Timezone specification\n*License Platform list\n*Both licenses must be //counted// or //uncounted// or //single//\n*License node-locked hostid\n*Both licenses must be user-based or host-based (or neither)\n\nNote that this list is the same as the criteria for a license server combining multiple licenses into a license pool.\n\nIf the license is eligible for an upgrade, //count// licenses of the //base license// will be transformed into //to-version// licenses. An ''upgrade'' can be performed on multiple //base licenses//, until the //count// on the //upgrade license// is exhausted.\n\nNote that license "replace" processing is done (both in client and server) before upgrade processing. This means that an upgrade license should not specify replacement of the //base license// which it is going to upgrade, because the //base license// will no longer exist when the upgrade is done.\n\nThere are 3 upgrade cases:\n*fewer //base licenses// than //upgrade licenses// - in this case, the extra //upgrade licenses// are "wasted", and the license server issues a warning. All //base licenses// are upgraded.\n*same number of //base licenses// and //upgrade licenses// - all //base licenses// are upgraded.\n*fewer //upgrade licenses// than //base licenses// - in this case, //count// licenses are upgraded, and the remaining //base licenses// remain at their old version.\n\n| Note that the 3rd case above is the most useful - if you are upgrading all instances of an existing license, a //replace// option on a new license will do this just as well. The only advantage to the //upgrade license// in the first two cases is that the //base license// is required, ie, the //upgrade license//, by itself, grants no rights. |\n\nWhen a license is ''upgrade''d by the license server, the new licenses will have their parameters modified as follows:\n\n| !Field | !Result for Served //counted// (or //uncounted//) licenses | !Result for Unserved //single// or //uncounted// licenses |\n| exp-date | earlier date is used | earlier date is used |\n| hold | maximum of the 2 values | - undefined - |\n| max_roam | minimum of the 2 values | - undefined - |\n| max_roam_count | minimum of the 2 values | - undefined - |\n| min_checkout | maximum of the 2 values | - undefined - |\n| min_remove | maximum of the 2 values | - undefined - |\n| min_timeout | maximum of the 2 values | - undefined - |\n| soft_limit (upgrading all) | larger of 2 deltas from license count is used | - undefined - |\n| soft_limit (partial upgrade) | upgrade soft limit is preserved for the new version, base license soft limit //delta// is preserved (minimum value 0) for the old version | - undefined - |\n| user_based, host_based (upgrading all) | If licenses have a specification, the value closest to the license count is used | - undefined - |\n| user_based, host_based (partial upgrade) | If licenses have a specification, upgrade spec is preserved for the new version; base license spec //delta// (count-user_based) is preserved (minimum value 1) for the old version | - undefined - |\n| contract | if //base license// is empty, use //upgrade license//. On partial upgrade, if //upgrade license// is empty, use value from //base license// for the new version. | if //base license// is empty, use //upgrade license//. |\n| customer | if //base license// is empty, use //upgrade license// On partial upgrade, if //upgrade license// is empty, use value from //base license// for the new version. | if //base license// is empty, use //upgrade license//. |\n| issuer | if //base license// is empty, use //upgrade license// On partial upgrade, if //upgrade license// is empty, use value from //base license// for the new version. | if //base license// is empty, use //upgrade license//. |\n| type | if //base license// is empty, use //upgrade license// On partial upgrade, if //upgrade license// is empty, use value from //base license// for the new version. | if //base license// is empty, use //upgrade license//. |\n\n\n!Fixed (positional) parameters\nThe first 7 parameters are required on every upgrade line, and are present in the order shown above.\n|!//isv//|\n//isv// is the name of the ISV granting the rights.\n\n|!//product//|\n//product// is the name of the product for which license rights are being upgraded.\n\n|!//from-version//|\n//from-version// is the lowest-numbered product version which is eligible for an ''upgrade'', in the form "vN.M". For example, 1.0, 2.37, or 2006.12\n\n|!//to-version//|\n//to-version// is the highest-numbered product version supported by the license once it is ''upgrade''d, in the form "vN.M". For example, 1.0, 2.37, or 2006.12\n\n|!//exp-date//|\n//exp-date// is the date the upgrade expires, in the form dd-mmm-yyyy, for example, 1-jul-2007. A non-expiring upgrade can be specified with either a year of "0" (ie, "1-jan-0"), or simply the word "permanent".\n\n|!//count//|\n//count// is the number of licenses to be upgraded. ''0'' or ''uncounted'' means an uncounted, node-locked license is to be upgraded. ''uncounted'' and ''0'' are 100% equivalent. \n\n''single'' means a node-locked, single-use license is to be upgraded. ''single'' is different from ''1''. See the [[LICENSE Line]] for more information.\n\n''token'', ''token_locked'', and ''token_unlocked'' are not allowed in an UPGRADE license. All other optional parameters are ignored.\n\n|!//upgrade-key//|\n//upgrade-key// is a digital signature of all the upgrade data, along with the hostid on the HOST line, if present. If an upgrade license has a non-zero count, it always requires a HOST line. An upgrade to an uncounted license does not require a HOST line, and even if there is a HOST line, the hostid of the license server is not used in computation of its //upgrade-key//. The //upgrade-key// will have "sig=" prepended after the license has been signed by the //rlmsign// utility.\n\nNote that if the //upgrade-key// is preceded by //sig=//, it can be present after any or all of the optional parameters.\n\n\n!Optional Parameters\n\nOptional parameters are sometimes present in a license, and can be present in any order. Optional parameters are allowed only once in an UPGRADE line. The syntax and meaning of optional parameters for the UPGRADE line are identical to the same parameters for the LICENSE line. Note that ''token'' and ''named_user'' are not allowed on an UPGRADE line. See the [[LICENSE Line]] for information on the optional parameters.\n\n\n!Example:\n!LICENSE reprise write 1.0 permanent 5 sig=.....\n!UPGRADE reprise write 1.0 2.0 1-aug-2015 5 sig=.....\n\nIn this example, the 5 licenses of the //write// product have been upgraded from v1.0 to v2.0. Note that this license file would require a HOST line, since the licenses are counted.
!v10.0 - January-2013 - First v10.0 release (~BL2)\n\nv10.0 - November-2012 - First v10.0 beta release (~BL1)\n\n!v9.4 - July-2012 - First v9.4 release (~BL2)\n\nv9.4 - June-2012 - First v9.4 beta release (~BL1)\n\n!v9.3 - 15-February-2012 - v9.3 release (~BL2)\n\n!v9.2 - 28-Sept-2011 - v9.2 release (~BL2)\n\n!v9.1 - April-2011 - v9.1 release (~BL3)\n\nv9.0 - 5-Jan-2011 - v9.0 release (~BL3) release to fix bugs ~P218-P221.\n!v9.0 - 15-Dec-2010 - v9.0 release (~BL2)\nv9.0 - Nov-2010 - First v9.0 beta release (~BL1)\n\nv8.0 - 1-Jun-2010 - v8.0 release (~BL6) release to fix bugs ~P198-P200.\nv8.0 - 11-Mar-2010 - v8.0 release (~BL4) - release to fix bugs ~P187-P197\n!v8.0 - 26-Jan-2010 - v8.0 release (~BL3)\nv8.0 - Dec-2009 - Second v8.0 beta release (~BL2)\nv8.0 - Nov-2009 - First v8.0 beta release (~BL1)\n\nv7.0 - 1-Sept-2009 - ~BL4 - release to fix bugs ~P156-P168\n!v7.0 - 11-Jun-2009 - v7.0 release (~BL3)\nv7.0 - May-2009 - First v7.0 beta release (~BL2)\n\nv6.0 - 5-Feb-2009 - ~BL3 - release to fix bugs P139, P140, and ~P142-P145, add x64_m1 platform.\n!v6.0 - 9-Jan-2009 - v6.0 release (~BL2)\nv6.0 - 25-Nov-2008 - First v6.0 beta release (~BL1)\n\nv5.0 - Dec-2008 - ~BL6 - release to fix P137\nv5.0 - Sept-2008 - ~BL5 - release to fix ~P124-P125, and ~P127-P129\nv5.0 - 22-Aug-2008 - ~BL4 - release to fix ~P116-P119, and ~P121-P123\n!v5.0 - 1-Jul-2008 - v5.0 release (~BL2)\nv5.0 - 23-May-2008 - First v5.0 beta release (~BL1)\n\nv4.0 - 30-Jun-2008 - ~BL6 - release to fix P102, P104, P107, P109, and P115\n!v4.0 - 18-Jan-2008 - v4.0 release (~BL4)\nv4.0 - 19-December-2007 - Third v4.0 beta release (~BL3)\nv4.0 - 11-December-2007 - Second v4.0 beta release (~BL2)\nv4.0 - 16-November-2007 - First v4.0 beta release (~BL1)\n\nv3.0 - 9-Nov-2007 - ~BL6 - patch release for P62, P67, P81, ~P83-P88, and P90\nv3.0 - 7-Sep-2007 - ~BL4 - patch release for P51, P68, P71, ~P74-P79 and E72\n\n!v3.0 - 24-Jul-2007 - v3.0 release (~BL3)\nv3.0 - 28-June-2007 - Second v3.0 beta release - with activation and Java (~BL2)\nv3.0 - 11-May-2007 - First v3.0 beta release (~BL1)\n\nv2.0 - 18-Apr-2007 - ~BL9 - patch release for ~P44-P50, P52, P54, and P56. Added IBM AIX support. \nv2.0 - 13-Feb-2007 - ~BL6 - patch release for P30, ~P34-P37\nv2.0 - 12-Jan-2007 - ~BL5 - patch release for ~P25-P28\n\n!v2.0 - 13-Dec-2006 - v2.0 release (~BL4)\nv2.0 - 7-Nov-2006 - Second v2.0 beta release (~BL2)\nv2.0 - 9-Oct-2006 - First v2.0 beta release (~BL1)\n\nv1.1 - 1-Nov-2006 - v1.1 patch release - fixes for P19, P21, and P22 (~BL7)\nv1.1 - 12-Oct-2006 - v1.1 patch release - fix for P18 (~BL6)\n\n!v1.1 - 31-Jul-2006 - v1.1 release (~BL4)\nv1.1 - 17-July-2006 - v1.1 beta release #3\nv1.1 - 7-July-2006 - v1.1 beta release #2\nv1.1 - 23-June-2006 - v1.1 beta release\n\n!v1.0 - 8-May-2006 - v1.0 release\nv0.3 - 25-Apr-2006 - Fourth release of manuals, for v0.3BL3 Beta Release.\nv0.3 - 27-Mar-2006 - Third release of manuals, corresponding to v0.3 Beta Release.\nv0.2 - 6-Mar-2006 - Second release of manuals.\nv0.1 - 12-Feb-2006 - First release of the manuals for beta-test.
This section describes the various versions of RLM, and the features added in each version.\n\n!v10.0 - January, 2013\n| !Features Added |\n| rlm client broadcasts to locate the server |\n| rlm web interface now username/password protected, with multiple user privileges |\n| rlm web interface commands now appear only if the user has the appropriate privilege |\n| rlm web interface allows license file editing, based on edit_rlm_options privilege |\n| the rlm options file now allows setting defaults for the activate license command |\n| INTERNET_GROUP option |\n| when rlm is installed as a service, it checks that the debug log path can be written |\n| rlm searches all license files to find one with a good ISV server |\n| rlm redirects browsers which connect to the main port |\n| ~Server-Server license transfers can now utilize a disconnected mode of operation, if your ISV allows this capability |\n\n!v9.4 - June, 2012\n| !Features Added |\n| rlm command-line utilities now accept a license password with the “-z password” option |\n| When installing RLM as a service on Windows, the installation now starts and stops the service to trigger firewall prompts |\n\n!v9.3 - February, 2012\n| !Features Added |\n| The ~EDIT_METER privilege has been added to the RLM options file |\n\n!v9.2 - September, 2011\n| !Features Added |\n| Disk Serial Number hostid |\n| _primary_server keyword for rlm_failover licenses |\n\n!v9.1 - April, 2011\n| !Features Added |\n| The LOGFILES privilege has been added to the RLM options file |\n| _password license attribute added |\n\n\n!v9.0 - Dec, 2010\n| !Features Added |\n| Checkout records in the debug log now contain information on roaming licenses |\n| RLM servers log information about which licenses were replaced (in the debug log) |\n| new ISV line format with optional keyword=value parameters |\n| multiple GROUP and ~HOST_GROUP lines now concatenate in the ISV Options file |\n| The REMOVE privilege has been added to the RLM options file. |\n| rlm and ISV servers can now disable older versions of rlmutil |\n\n\n!v8.0 - Jan, 2010\n| !Features Added |\n| Optimized license sharing |\n| When running as a service, rlm changes working directory to binary directory |\n| rlm logs the client machine's OS to the report log |\n| rlm logs the client's argv[0] to the report log |\n| rlm web interface shows all license file and log file paths |\n| rlm web interface puts all activated license files into the directory specified with -c |\n| single-quote and back-quote characters are now legal in license and option files |\n| max_roam_count license keyword |\n\n!v7.0 - June, 2009\n| !Features Added |\n| ~Server-Server license transfers |\n| ~RLM_EL_FAILED_BACK_UP status when failed server restarts |\n| failover servers no longer pool licenses from failed servers |\n| license line checksum (_ck=) |\n| license rehosting via refresh activation and rlmrefresh utility |\n\n\n!v6.0 - January, 2009\n| !Features Added |\n| Platform-independent ISV server settings and the Generic ISV server |\n| rlmid2 hardware key |\n| rlm_act_request() supports HTTP proxy servers |\n| ISV servers increase their open file limit |\n| port@host can be specified as host@port |\n| ~RLM_LICENSE environment and the -c option can contain directories |\n| RLM default port # changed from 28000 to 5053 |\n| RLM admin port # changed from 9000 to 5054 |\n| UPGRADE licenses |\n| min_checkout |\n\n\n!v5.0 - May, 2008\n| !Features Added |\n| Serial Number hostid type |\n| rlmID1 (dongle) hardware key |\n| hostid lists |\n| ISV servers don't exit on reread if no license file exists |\n| Virtual machine detection in ISV servers |\n| disable= now accepts VM keyword to disable licenses on Virtual Machines |\n| options= license attribute |\n| multiple instances of a single ~ISV-defined hostid type allowed |\n| NOPROJECT keyword for EXCLUDE and EXCLUDEALL |\n| At least 5 IP addresses now supported for hostids (previously only one) |\n| The rlmver command-line utility has been removed |\n\n\n!v4.0 - December, 2007\n| !Features Added |\n| report log anonymizer (rlmanon) added |\n| rlm web interface allows editing option files |\n| rlm web interface displays debug log |\n| report log detailed format adds seconds, tenths of seconds for Denials |\n| Automatic report log rotation |\n| rlm options file controls access to administration functions |\n| RLM web interface displays recent debug log information |\n| RLM web interface allows editing server options file |\n| RLM_ROAM no longer needs to be set on the disconnected system |\n| -c overrides RLM_LICENSE for rlmutil |\n| Named User licensing |\n| ''disable=~TerminalServer'' license attribute |\n| multiple ethernet device support on linux and mac |\n| ethernet address is default hostid on linux and mac |\n| Windows volume serial number hostid added |\n| Windows volume serial number is default hostid |\n\n\n\n!v3.0 - June, 2007\n| !Features Added | !Platforms Added |\n| Internet Activation | Java Linux |\n| rlm -dat command-line option | Java Windows |\n| rlmtests performance tests |\n| rlm servers ignore hostnames in license file |\n| The rlm web interface now reports the Process ID (PID) of licenses in use |\n| rlm logs status requests in the debug log |\n| client node can access license server by any name |\n| ISV server pathname optional on ISV line |\n| ~RLM_CONNECT_TIMEOUT environment variable |\n| ~RLM_EXTENDED_ERROR_MESSAGES environment variable |\n| maximum license share count |\n| _line_item license keyword |\n| license in a string |\n| improved error messages in web interface and rlmsign |\n| PID of process using license is displayed in web interface |\n| Wildcards allowed in IP addresses used as a hostid |\n\n\n!v2.0 - Dec, 2006\n| !Features Added | !Platforms Added |\n| Failover License Servers | ~HP-UX ~PA-Risc 32-bit |\n| Token-based licensing | ~HP-UX ~PA-Risc 64-bit |\n| user/host based licenses | IBM AIX RS/6000 32-bit |\n| Nodelocked, single-use licenses (no server) | IBM AIX RS/6000 64-bit |\n| options to disable rlmdown and rlmremove |\n| ~RLM_PATH_RANDOMIZE environment variable |\n| ISV servers notify of licenses expiring within 14 days |\n| rlm binds all TCP/IP ports in all license files |\n| rlm -c license_file command-line option |\n| rlm runs as a service on Windows |\n| rlmstat -avail reports on license availability |\n| transient attribute on ~ISV-defined hostids |\n| System Info in rlm web interface |\n| min_remove license keyword |\n| PRIORITY License Administration option |\n| TIMEZONE License Administration option |\n| MAX accepts '*' for all users |\n| License Administration management by PROJECT |\n| MINREMOVE License Administration option |\n\n\n!v1.1 - July, 2006\n| !Features Added | !Platforms Added |\n| Held licenses | MAC intel 32-bit |\n| Shared licenses | MAC PPC 32-bit |\n| License Replacement | Linux x64 - 64-bit |\n| License timeout | Solaris x64 - 64-bit |\n| Roaming licenses | Windows x64 - 64-bit |\n| Intelligent license queuing |\n| ~ISV-defined hostids |\n| Clock rollback detection |\n| contract= license attribute |\n| customer= license attribute |\n| issued= license attribute |\n| issuer= license attribute |\n| platforms= license attribute |\n| soft_limit= license attribute |\n| start_date= license attribute |\n| timezone= license attribute |\n| type= license attribute |\n\n\n!v1.0 - May, 2006\nThis version contains the basic RLM functionality:\n| !Features | !Platform Support |\n| Node-locked licenses | linux x86 |\n| Floating licenses | sun solaris 32-bit |\n| Expiration dates | sun solaris 64-bit |\n| Transparent multiple server connections | windows 32-bit |\n| ~Public-Key authentication |\n
RLM v10.0 has important new features for License Administrators. This section lists the new features along with pointers to the relevant sections in the manual.\n\n!What's new\n\n*''//The rlm server now supports client broadcasts to locate the server//''. The broadcast is fixed on UDP port 5053, and can be disabled on the server side with the //-noudp// startup option. Reprise Software recommends leaving broadcast support enabled.\n\n*''//The rlm web inteface no longer displays the "Manage Windows Service" menu item//'' on non-windows systems.\n\n*''//The rlm options file now allows setting the defaults for the "Activate License" command.//'' See [[The RLM Options File]] for more information.\n\n*''The RLM web interface can now be username/password protected, with access rights assigned to each user.'' See [[The RLM Web Server]] for more information.\n\n*''//The RLM Web Interface now only displays menu items for commands which the user can execute, based on the assigned privileges//''.\n\n*''//The RLM Web Interface now allows editing of license files, based on the assigned privileges. The 'edit_rlm_options' privilege controls access to editing license files.//''.\n\n*''//The RLM and ISV options files now accept the new INTERNET_GROUP definitions.//'' See [[The RLM Options File]] and [[The ISV Options File]] for more information.\n\n*''//When you install RLM as a service on Windows, the installation will now check that the debug log path can be written.//'' IF the path cannot be written, the install will fail. See [[The License Server]] or [[RLM as a Service]] for more information.\n\n* ''//If rlm processes multiple license files, and the ISV server pathname is incorrect in the first license file, rlm will attempt to use the path in the other license file(s) to start the ISV server//''.\n\n* ''//When a web browser incorrectly connects to RLM's main port//'' (i.e., not the web server admin port), rlm will now either redirect the browser to the admin web interface (if it is running), or generate an HTTP 404 – Not Found error.\n\n* ''//~Server-Server license transfers can now utilize a disconnected mode of operation, if your ISV allows this capability.//'' See [[Transferring Licenses to Another Server]] for more information.\n
RLM provides the capability for a license server to take over the license compliment of another server which has gone down. This server which takes over the license load of the failed server is called the //failover license server//. The server whose licenses are being taken over is called the //primary server//. During the time that the failover server is serving the licenses, no roaming operations are permitted on the licenses.\n\n{{{\nNOTE: When using //failover// servers, there cannot be a firewall \nbetween the two servers. This is an unsupported configuration.\n}}}\n\nThe ability for a server to take over the load of another server is selected on an ~ISV-by-ISV basis, and enabled by an //rlm_failover// or //rlm_failover_server// license in the license file of the server that is to take over.\n\nWhile the //failover license server// can be serving it's own compliment of licenses, Reprise Software recommends that it should have no licenses of it's own, but simply be standing by, waiting for one (or more) other server(s) to fail so that it can take over.\n\nIn order to enable a failover license server, the ISV issues an //rlm_failover// or //rlm_failover_server// license with the following characteristics:\n*count=some non-zero value\n*hostid=<hostid of the //primary server//>\n*_failover_host=<hostname of the //primary server//> in the case of an //rlm_failover// license, OR\n*_failover_host=<port@host of the //primary server// //rlm// process> in the case of an //rlm_failover_server// license.\n\n(Note: beginning in RLM v9.2, the ''_failover_host'' keyword has been replaced with the ''_primary_server'' keyword. ''_failover_host'' will continue to work, but new software installations should use ''_primary_server'' instead.)\n\nThe difference between an //rlm_failover// license and an //rlm_failover_server// license is whether rlm checks for the machine being down (//rlm_failover//) or the rlm process on the machine being down (//rlm_failover_server//) before serving the licenses from the failed server.\n\nNote: Reprise Software recommends that ~ISVs set _primary_server (_failover_host) to ''localhost'' (or ''5053@localhost'') when issuing the //rlm_failover or rlm_failover_server// license. This value would be changed by you, the License Administrator, to the name of the //primary server// upon installation. Setting this to ''localhost'' insures that the //failover license server// will not be activated by mistake if the license is not edited.\n\nThe //rlm_failover// license must be a ''counted'' license; otherwise the server will not use it. (If it were not a counted license, the //rlm_failover or rlm_failover_server// license can be used on any server, which could result in multiple servers taking over ''at the same time'' for the //failed server//.)\n\nIn order to enable the //failover license server//, the //rlm_failover// (or //rlm_failover_server//) license needs to be in one of the license files it is using, and the license file(s) for the //failed server// also need to be processed by the //failover license server//.\n\nWhen a license server encounters a //rlm_failover// or //rlm_failover_server// license, it does several things:\n*Starts a separate thread in the license server to periodically monitor the health of the //failed server//. This is done by attempting TCP/IP connection(s) to ports on the //failed server// in order to determine whether the server is up or down. No attempt is made to determine whether the license server is up - if the computer is up, the //failover license server// will not take over serving licenses.\n*If the //failed server// should go down, enables all licenses in license files for the //failed server// by performing the equivalent of an //rlmreread// command.\n*When the //failed server// comes back up, disables all licenses in license files for the //failed server// by performing the equivalent of an //rlmremread// command.\n\n!Configuring //Failover License Servers//\nReprise Software recommends configuring //failover license servers// as stand-alone servers that do not serve their own compliment of licenses. In other words, Reprise recommends configuring a license server that has only //rlm_failover// (and/or //rlm_failover_server//) licenses for the other license servers on the network. In general, one license server configured in this way should be sufficient to support failover of all other license servers on the network.\n\nThe exception would be a case where each individual license server is serving thousands of clients, in which case we recommend that you configure a //failover license server// for each one or two of the normal license servers.\n\nNote that failover license servers do not support license roaming operations. Actually, this is determined on a license pool by license pool basis - any license pool that contains any licenses from a failed server will not support any of the roaming operations.\n\n!Example //Failover License Server// license file\n\nThe following license file would specify a license server that is acting as a failover server (on node "failover_host", hostid 11111111) for the license server on hostid "12345678" (node "main_server"):\n\n\nHOST failover_host 11111111 1700\nISV reprise\nLICENSE reprise rlm_failover 1.0 permanent 1 hostid=12345678 _primary_server=main_server sig="x"\n\nAlternate LICENSE line:\nLICENSE reprise rlm_failover_server 1.0 permanent 1 hostid=12345678 _primary_server=5053@main_server sig="x"\n\n\nNote that the hostid in the LICENSE line for the //rlm_failover// or //rlm_failover_server// license is the hostid of the server on the node ''main_server'').\n\n!Installing //Failover License Servers//\nWhen you receive the //rlm_failover// license file, do the following to install your //failover license server//:\n# Install //rlm// and your //ISV server// on the //failover license server// node. \n# Install all license files from the //primary server//.\n# Edit the license file with the //rlm_failover// or //rlm_failover_server// license to put the hostname of the //primary server// in the //_primary_server=// (or //_failover_host=//) field, and the hostname of the //failover license server// on the HOST line. (Put the port@host of the rlm process on the //primary server// in the //_primary_server=// (or //_failover_host=//) field for the case of //rlm_failover_server// licenses).\n# Install any ISV options in an options file, and make it accessible to the //ISV server// either through it's license file or by giving it the default options filename of //isv.opt//.\n# Insure that //rlm// will process all the license files above, and start //rlm//.\n# Modify your user's ~RLM_LICENSE environment variables to include //port@host// of the //failover license server//. OR be sure to include the //failover license server's license file// where your application will find it. If you omit this step, the //failover license server// will take over, but your application will not be able to check out a license from the //failover server//.\n\nNote: //Failover License Servers// are new in RLM v2.0.
Format:\n!TIMEOUT //secs// [//product//]\n\nThe TIMEOUT line sets the inactivity timeout for a license to //secs// seconds for //product//. If the application using //product// does not contact the license server for //secs// seconds, the license server will reclaim the license and notify the application that the license was timed out.\nNote that a license could have a min_timeout specification, in which case if you specify a TIMEOUT that is lower, the TIMEOUT will be set to the minimum. The default minimum TIMEOUT in RLM is 3600 seconds (1 hour).\n\nIf no TIMEOUT or TIMEOUTALL specification is present, the license will never time out. \n\nIf multiple TIMEOUT options are specified for the same product, the last one will be used. If TIMEOUTALL is specified after a TIMEOUT option, the TIMEOUTALL value will be used.\n\nStarting in rlm v2.0, if //product// is not specified, the timeout applies to all products. This is equivalent to TIMEOUTALL.
Format:\n!~HOST_GROUP //name// list-of-hostnames\n\nThe ~HOST_GROUP line defines a group of hostnames to be used in an EXCLUDE, EXCLUDEALL, INCLUDE, INCLUDEALL, MAX or RESERVE line. Separate the hostnames in the list by spaces. Prior to RLM v9.0, only the first definition of a particular group name is used. Starting in RLM v9.0, multiple lines that specify the same ~HOST_GROUP name will have their lists of hostnames concatenated.\n\nExample:\n!~HOST_GROUP corporate node_a node_b node_c\n\nExample (rlm v9.0+). This example results in a group of 6 hosts:\n!~HOST_GROUP corporate node_a node_b node_c\n!~HOST_GROUP corporate node_d node_e node_f\n
The RLM options file allows control of the use of licenses by various users and groups of users within your organization. Options are provided to reserve licenses ([[RESERVE]]), and to either allow ([[INCLUDE]] or [[INCLUDEALL]]) or disallow ([[EXCLUDE]] or [[EXCLUDEALL]]) license use. Additionally, options are provided to create groups of users ([[GROUP]]) or hosts ([[HOST_GROUP]]), or IP addresses ([[INTERNET_GROUP]]), and to control the maximum number of licenses a user or group can check out ([[MAX]]).\n\nLogging of the license servers is controlled by the ([[DEBUGLOG]]) and ([[REPORTLOG]]) options. In addition, you can suppress debug logging of checkin/checkout/denied entries with the [[NOLOG]] option. Automatic report log file rotation is supported in ISV servers via the [[ROTATE]] option (new in RLM v4.0).\n\nControl over license roaming is provided with the [[INCLUDEALL_ROAM]], [[EXCLUDEALL_ROAM]], [[ROAM_MAX_DAYS]], and [[ROAM_MAX_COUNT]] options.\n\nLicense timeout is controlled via the [[TIMEOUT]] and [[TIMEOUTALL]] options.\n\nLicense timezone restrictions are controlled with the [[TIMEZONE]] option.\n\nClient license caching is controlled with the [[CLIENT_CACHE]] option.\n\nLicense queuing behavior can be modified with the [[EXPRESS]] and [[PRIORITY]] options.\n\nThere is one additional option available in the ISV options file: [[NO_OLD_RLMUTIL]]. This option goes on a line by itself, with no parameters. If specified, the RLM command-line utilities prior to RLM v9.0 will not be able to perform an rlmdown, rlmreread, or rlmremove on this server. By default, all versions of the RLM utilities are enabled unless [[NO_OLD_RLMUTIL]] is specified in both the RLM and the ISV options files.\n\nThe ISV options file is specified on the [[ISV Line]] in [[The License File]].\n\n''How The ISV Options File is located''\n\nThe ISV options file can be located in 3 ways:\n* You can specify the ISV options file location on the [[ISV Line]] in [[The License File]].\n* If no specification is on the ISV line, rlm will look for <ISV>.opt (where <ISV> is the name of the ISV) in the location with the first license file.\n* If there is no options file in either of the first 2 locations, rlm will look for <ISV>.opt in the working directory where you started the rlm server.\n\n\n''Legal characters in the ISV options file''\nIn general, all options file fields are white-space delimited, meaning that no data item can contain embedded spaces, tabs, newlines or carriage returns. In addition, the following four characters are illegal in data items in the ISV or RLM options (and license) file: "<", ">", "&", and double-quote ("). Note: single quote (') and back-quote (`) were illegal prior to RLM v8.0.\n\nNote that all lines in option files (RLM or ISV) as well as license files //must// be shorter than 1024 characters. Anything over 1024 characters will be truncated.\n\nIf you would like to add comments to the options file, start the line with the '#' character.\n\nNote that everything in the ISV options file is case-insensitive with the exception of the file pathname in the DEBUGLOG and REPORTLOG lines (case-sensitive on Unix systems only).\n\nFor a detailed description of each option, click the appropriate tab below:\n\n<<tabs tabsClass\n"CLIENT_CACHE" "CLIENT_CACHE option description" [[CLIENT_CACHE]] \n"DEBUGLOG" "DEBUGLOG option description" [[DEBUGLOG]] \n"EXCLUDE" "EXCLUDE option description" [[EXCLUDE]]\n"EXCLUDEALL" "EXCLUDEALL option description" [[EXCLUDEALL]]\n"EXCLUDEALL_ROAM" "EXCLUDEALL_ROAM option description" [[EXCLUDEALL_ROAM]]\n"EXPRESS" "EXPRESS option description" [[EXPRESS]] \n"GROUP" "GROUP option description" [[GROUP]] \n"HOST_GROUP " "HOST_GROUP option description" [[HOST_GROUP]]\n"INTERNET_GROUP " "INTERNET_GROUP option description" [[INTERNET_GROUP]]\n"INCLUDE" "INCLUDE option description" [[INCLUDE]] \n"INCLUDEALL" "INCLUDEALL option description" [[INCLUDEALL]] \n"INCLUDEALL_ROAM" "INCLUDEALL_ROAM option description" [[INCLUDEALL_ROAM]] \n"MAX " "MAX option description" [[MAX]] \n"NO_OLD_RLMUTIL" "NO_OLD_RLMUTIL option description" [[NO_OLD_RLMUTIL]]\n"NOLOG" "NOLOG option description" [[NOLOG]] \n"PRIORITY" "PRIORITY option description" [[PRIORITY]]\n"REPORTLOG" "REPORTLOG option description" [[REPORTLOG]]\n"RESERVE " "RESERVE option description" [[RESERVE]]\n"ROAM_MAX_COUNT" "ROAM_MAX_COUNT option description" [[ROAM_MAX_COUNT]] \n"ROAM_MAX_DAYS" "ROAM_MAX_DAYS option description" [[ROAM_MAX_DAYS]] \n"ROTATE" "ROTATE option description" [[ROTATE]]\n"TIMEOUT" "TIMEOUT option description" [[TIMEOUT]] \n"TIMEOUTALL" "TIMEOUTALL option description" [[TIMEOUTALL]]\n"TIMEZONE" "TIMEZONE option description" [[TIMEZONE]] \n>>
Format:\n!~CLIENT_CACHE //secs// [//product//]\n\nThe ~CLIENT_CACHE line sets the cache time for a license to //secs// seconds for //product//. If the license for //product// does not have a "client_cache" specification, the ~CLIENT_CACHE option as no effect.\n\nThe cache value //secs// can be set to between 0 and 2 times the value in the license's //client_cache// parameter. Attempting to set it to more than 2 times the license parameter will result in a log line similar to the following:\n\n07/17 10:40 (reprise) foo: ~CLIENT_CACHE value (200) > 2x license value (120) , 120 used.\n\nIf //product// is not specified, the cache value applies to all products.\n\nExamples:\n\n~CLIENT_CACHE 0\n\n - disables client caching for all licenses\n\n This is logged:\n\n 07/17 10:40 (reprise) Setting ~CLIENT_CACHE for all products to 0 secs.\n\n~CLIENT_CACHE 200 foo\n\n sets client cache to 200 seconds for "foo". In this example, "foo" had a client_cache value of 60 in the license, so it was limited to 120:\n\n 07/17 10:40 (reprise) Setting ~CLIENT_CACHE for foo to 200 secs.\n 07/17 10:40 (reprise) foo: ~CLIENT_CACHE value (200) > 2x license value (120), 120 used.\n\n~CLIENT_CACHE first appeared in RLM v10.1