AD_ELMD(1)Elan License Manager 3.0 AD_ELMD(1) NAME ad_elmd - Elan License Manager vendor daemon SYNOPSIS ad_elmd [ -D -e path -f -i -l file -m size -n -p # -r file -s # -v # -z # ] DESCRIPTION The ad_elmd command starts the Elan License Manager vendor daemon. This should usually be executed when the system is booted from your system startup script, /etc/rc2. No licensed Elan License Manager application will be able to run if ad_elmd is not active. When running, ad_elmd will process client requests, which include issuing and returning licenses, and interfacing with elmadmin(1) to list the current users of licensed applications. For each Elan License Manager licensed application, there are one or more key files. These files are expected to be found in the key directory. The default key directory is defined by elm_keydir in elm_salt.c. A different key directory or directories may be specified with the -e option to ad_elmd, described below. The key directory may also be specified within the client application via elm_init(3) or elm_control(3). Key files may be freely installed or updated while ad_elmd is running. Keys will automatically be reread if ad_elmd detects a modification date change. The key file itself has the same name as the feature. The file is usually created by elmadmin(1) when the application is first installed. This is accomplished via a command of the form: elmadmin -c alias If an alternate key location is desired, the command would instead be elmadmin -c -e keypath alias Refer to elmadmin(1) for other options. Each key file contains the encrypted key which encodes the feature name, the maximum number of licenses available for the feature, and the feature's expiration date. The manager ad_elmd(1) reads this key and will not issue more licenses than indicated or past the expiration date. OPTIONS -D Debug mode: [1] Cause the log file to be flushed after each message. Normally it is flushed after each packet is processed. (There can be many messages per packet, depending on the verbosity (-v) level.) [2] Allow SIGQUIT to take the default action of creating a core file and exiting. [3] In background mode, do no chdir. Normally, ad_elmd runs with the current working directory set to /. The message "DEBUG mode is on" will be printed to the log file if -D is used. Please also see the -v flag below for changing the verbosity level of ad_elmd. -e path Optionally specify the key directory, or set of directories, and load all keys found in the directories. If none is specified, the default vendor defined key directory, defined by elm_keydir in elm_salt.c, is used. Directories are specified as a colon (:) separated list of directory names. For example: ad_elmd -e /local/elan:/local/express:/usr/lib/elm A key directory may also be specified within a client with elm_init(3) or the ELMC_SETKEYDIR option of elm_control(3). If so specified, the client's key directory is searched first, followed by those specified with -e, if any. -f Normally, ad_elmd will run in the background (it forks a child process, detaches from the terminal, and the parent exits). The -f option inhibits this, and causes ad_elmd to run in the foreground. One may, for example, wish to run ad_elmd from inittab, instead of /etc/rc2, with the -f option. -i Print the Elan License Manager release number, the vendor ID, and exit. The vendor ID provides a way to verify that the same vendor salt is being used among all the Elan License Manager commands. The vendor ID should be the same for ad_elmd, elmadmin, etc. -l file Creates a log file named file and writes all relevant information to that file. If the file already exists, ad_elmd will append to the end of the file. Note that file must be a complete path name. Use of a log file is highly recommended as it provides a way of tracking problems if they occur. A log file must be enabled for elmrpt(1) to provide reporting information. Please see -m option also, below. -m size Limit the log file to the size specified. With this option, the log file is "self maintained" by ad_elmd such that ad_elmd limits the size that the log file may grow to. When this size is reached, the log file named file is moved to file.old and the current log file is truncated. The size is an integer or floating point number. The default units are bytes. It may also be specified in kilobytes by suffixing a ``k'' or megabytes by suffixing an ``m'' to the size. For efficiency, the log file size is actually checked only every 100 lines, so it might grow a bit beyond the limit before it is backed up and truncated. -n Local communication operation for systems without a network. This will force ad_elmd to use System V native inter-process communication. When -n is used with ad_elmd(1), the host argument to elm_init(3) must be set to "LOCAL". This is most easily done by your customers by setting their elm_host variable. Note that on System V, the default inter-process communication queue is quite small; adequate for about two client processes talking to ad_elmd concurrently. ad_elmd will attempt to increase the queue size, but, since only root can raise the IPC queue size, it must be run as super-user to be effective. -p # Cause ad_elmd to use the port address # instead of the default or one specified by the system service. One might use this option if there was a port address conflict and the user did not have permission to alter the system port services file. -r file Issues licenses to the users according to the specifications in resource file file. See elm_resource(5) for an explanation of this file's format. Note that if this file is changed, ad_elmd will automatically reread it - it is not necessary to restart ad_elmd. -s # Set the startup time to # in seconds. This is the period that ad_elmd waits and listens for client reconnects after a possible crash. The default is 180 seconds (3 minutes.) If you are not on a network, this may be set to zero. -v # Select the verbosity of the messages printed to the log file. When a level is selected, all levels less than or equal to the level are printed. Levels 5 and higher are considered debugging levels. ad_elmd starts in level 3. The levels are: _____________________________________________ |Level | Messages Printed. | |______|_____________________________________| |______|_____________________________________| | 2 | License failures. | |______|_____________________________________| |______|_____________________________________| | 4 | Client Connects and disconnects. | |______|_____________________________________| |______|_____________________________________| | 6 | Message for every packet sent. | |______|_____________________________________| |______|_____________________________________| | 8 | Info about key and resource file. | |______|_____________________________________| |______|_____________________________________| -z # Set the zombie to # seconds. If a client is not heard from within this time period, it is declared dead and its licenses are returned. The default and minimum zombie interval is 3 minutes. Note that ad_elmd only cleans up zombies every 60 seconds, so it may take up to 1 minute more for the licenses to be returned. An individual client may change its zombie time from this default value via elm_control(3) and ELMC_SETZOMBIE. EXAMPLES Here is an example invocation of ad_elmd which might appear in the startup file /etc/init.d/ad_elmd. It sets the log file to /var/adm/elm.log and limits the log file size to 1/4 megabyte. ELMD=/usr/lib/elm/ad_elmd if [ -f $ELMD ]; then echo "`$ELMD -i` started." > /dev/console $ELMD -m 0.25m -l /var/adm/elm.log > /dev/console fi ADMINISTRATION If you are using a log file (which is highly recommended) you will need to trim it every so often. Trimming can be done automatically with the -m option of ad_elmd, or via a nightly daemon spawned from crontab and the -z option of elmadmin. The -m variation was illustrated above. Below is an example pair of commands to keep the log file under control with the nightly crontab scheme: cp /var/adm/elm.log /var/adm/elm.log.old ACADSERVER=somehost elmadmin -z where somehost is the host name where the ad_elmd is running. SEE ALSO elmadmin(1).