CodeT Struct

Description

Holds the licensing information that is set using VLScgSetXXX APIs and passes the same to VLScgGenerateLicense API to generate the corresponding license string. Contains the decoded information from the license string as returned by VLScgDecodeLicense API.

Syntax

   typedef struct
   {
      /* List of flags to be set by external callers: */

      int  code_type      ;  /* VLScg_SHORT_CODE/VLScg_LONG_CODE
                                  /VLScg_SHORT_NUMERIC_CODE   */
      int  additive       ;  /* VLScg_ADDITIVE / VLScg_EXCLUSIVE / VLScg_AGGREGATE_LICENSE */
      int  client_server_lock_mode;
      /* VLScg_BOTH_NODE_LOCKED/ VLScg_FLOATING/          */
      /* VLScg_DEMO_MODE/ VLScg_CLIENT_NODE_LOCKED        */
      int  holding_crit   ;  /* Criterion for held licenses                      */
      /* VLScg_HOLD_NONE/VLScg_HOLD_VENDOR/VLScg_HOLD_CODE*/
      int  sharing_crit   ;  /* Criterion for sharing of licenses                */
      /* VLScg_NO_SHARING/ VLScg_USER_SHARING/            */
      /* VLScg_HOSTNAME_SHARING/ VLScg_XDISPLAY_SHARING   */
      /* VLScg_VENDOR_SHARING                         */
      /* used as a team_criteria in case of capacity license */
      /* VLScg_NO_TEAM/ VLScg_USER_BASED_TEAM/            */
      /* VLScg_HOSTNAME_BASED_TEAM/ VLScg_XDISPLAY_BASED_TEAM   */
      /* VLScg_VENDOR_BASED_TEAM                         */

      int  server_locking_crit1[VLScg_MAX_NUM_SERVERS];
      /* Server lock selector/criterion (group 1)     */
      /* Allow 2 hostid's per server                  */
      int  server_locking_crit2[VLScg_MAX_NUM_SERVERS];
      /* Server lock selector/criterion (group 2)     */
      /* Allow 2 hostid's per server                  */
      int  client_locking_crit[VLScg_MAX_NUM_NL_CLIENTS];
      /* Client lock selector/criterion               */
      /* Allow 1 hostid per client                    */
      int  standalone_flag;  /* VLScg_NETWORK/VLScg_STANDALONE/VLScg_PERPETUAL */
      int  out_lic_type   ;  /* VLScg_ENCRYPTED/ VLScg_EXPANDED_READABLE/    */
      /* VLScg_CONCISE_READABLE                       */
      int  clock_tamper_flag;/* VLScg_NO_CHECK_TAMPER/ VLScg_CHECK_TAMPER    */

      /* List of data fields to be set by external callers: */
      char feature_name      [VLScg_MAX_CODE_COMP_LEN+1];
      char feature_version   [VLScg_MAX_CODE_COMP_LEN+1];
      int  birth_day      ;  /* 1 - max day of the month (28-31)             */
      int  birth_month    ;  /* 0 - 11 or JAN - DEC                          */
      int  birth_year     ;  /* 1998 to ...                                  */
      int  death_day      ;  /* 1 - max day of the month (28-31)             */
      int  death_month    ;  /* 0 - 11 or JAN - DEC                          */
      int  death_year     ;  /* 1998 to ...                                  */
      int  num_servers    ;  /* Always 1 for single server application       */
      char server_lock_info1 [VLScg_MAX_NUM_SERVERS]
      [VLScg_MAX_SERVER_LOCK_INFO_LEN+1];
      /* Stores information in ascii                  */
      /* +1 needed for null termination               */
      char server_lock_info2 [VLScg_MAX_NUM_SERVERS]
      [VLScg_MAX_SERVER_LOCK_INFO_LEN+1];
      /* Stores information in ascii                  */
      /* +1 needed for null termination               */
      int  num_nl_clients ;  /* Number of nodelocked clients                 */
      char nl_client_lock_info[VLScg_MAX_NUM_NL_CLIENTS]
      [VLScg_MAX_NL_CLIENT_INFO_LEN+1];
      /* Stores information in ascii                  */
      /* +1 needed for null termination               */
      unsigned num_keys[VLScg_MAX_NUM_FEATURES];
      /* Number of concurrent keys                    */
      unsigned soft_limit ;  /* 0 to num_keys                                */
      unsigned keys_per_node [VLScg_MAX_NUM_NL_CLIENTS];
      int  num_subnets    ;  /* 0 => site licensing disabled                 */
      char site_lic_info     [VLScg_MAX_NUM_SUBNETS][VLScg_MAX_SUBNET_INFO_LEN+1];
      /* Stores information in binary                 */
      /* +1 needed for null termination               */
      unsigned share_limit;  /*share_limit/team_limit - Number of users/clients */
      /* who can share a single license key */
      /* used as a team_limit in case of capacity license */
      int  key_life_units ;  /* Flag which determines lifetime least count   */
#ifdef _V_LP64_
      unsigned int key_lifetime;
#else
      unsigned long key_lifetime;
#endif
      /* absolute value in minutes                    */
      int  key_hold_units;  /* Flag which determines heldtime least count   */
#ifdef _V_LP64_
      unsigned int key_holdtime;
#else
      unsigned long key_holdtime;
#endif
      /* absolute value in minutes                    */
      int  num_secrets    ;  /* Number of Challenge response secrets         */
      char secrets           [VLScg_MAX_NUM_SECRETS][VLScg_MAX_SECRET_LEN+1];
      /* Stores information in ascii                  */
      /* +1 needed for null termination               */
      char vendor_info       [VLScg_MAX_PRIVATE_VENINFO_BUFFER_LEN+1];

      int   licType ;          /* Trial or Normal license type */
      int   trialDaysCount;    /* Life of trial license. */
      int   use_auth_code;     /* For multi-keys or short numeric codes */
      int   numeric_type;     /* For short numeric codes, 0 - non-numeric */
      /* 1 - general short numeric 2 - general numeric */
      /* 10 and above specific type */
#ifdef _V_LP64_
      int  conversion_time;
#else
      long conversion_time;
#endif
      int isRedundant;
      int majority_rule;

      int  isCommuter;
#ifdef _V_LP64_
      int   commuter_max_checkout_days;
#else
      long  commuter_max_checkout_days;
#endif
      /* Max days license can be checked out. 0=no limit */

      int log_encrypt_level;  /* For encryption level in the license code.*/
      int elan_key_flag;

      /* Fields for internal use, or unused */
      int  vendor_code    ;            /* Internal use                       */
      int  version_num    ;            /* Internal - Version number          */
      int  licensing_crit ;            /* Internal - VLScg_USER_BASED        */
#ifdef _V_LP64_
      unsigned int meter_value;
#else
      unsigned long  meter_value    ;  /* Internal                           */
#endif
      /*Fields for multi_key for short numeric codegen version >=2 */
      int num_features; /* number of features in case of multi key */
      int key_type;     /* Single key/Multi key for short numeric only */

      /* Fields for capacity Licensing */
      int           capacity_flag; /* VLScg_CAPACITY_NONE/VLScg_CAPACITY_NON_POOLED
                                        /VLCScg_CAPACITY_POOLED */
      int           capacity_units;  /* Flag which determines capacity least count   */
#ifdef _V_LP64_
      unsigned int capacity;   
#else
      unsigned long capacity; 
#endif
  /* The capacity of this license. In case of Pooled 
                                     Capacity license, this capacity is for the whole
                                     of "num_keys". In case of Non-Pooled Capacity
                                     license, this capacity is per token of hard
                                     limit. */

      int  grace_period_flag;  /* Must be VLScg_STANDARD_GRACE_PERIOD */
      int  grace_period_calendar_days;
      /* Max days license can be used in grace period  */
      int  grace_period_elapsed_hours;
      /* Max hours license can be used in grace period */

      int  overdraft_flag;   /* VLScg_NO_OVERDRAFT or VLScg_STANDARD_OVERDRAFT   */
      int  overdraft_hours;
      /* Max hours overdraft license can be used.         */
      int  overdraft_users;
      /* Simultaneous users allowed in overdraft          */
      int  overdraft_users_isPercent;
      /* VLS_TRUE = Users field is percent of hard limit  */

      int  local_request_lockcrit_flag;
      /* VLScg_LOCAL_REQUEST_LOCKCRIT_DEFINED = use the specified
         lockcrit fields below. Otherwise use defaults.
         These values are to be used by commuter license, perpetual
         licenses and grace period licenses.              */
      int  local_request_lockcrit_required;
      /* Required items for local request locking. */
      int  local_request_lockcrit_float;
      /* Floating items for local request locking. */
      int  local_request_lockcrit_min_num;
      /* Total number of items must for local request locking. */

      int  trial_elapsed_hours; /* Trial usage hours */
      int  trial_execution_count; /* Trial Execution Count */
      /* Public vendor info - to be included as plain text to license string */
      char plain_vendor_info[VLScg_MAX_PUBLIC_VENINFOLEN+1];
      vmDetectionFlagT vm_detection;        /* V13 onwards only*/
                 
#ifdef _V_LP64_
      int structSz;
#else
      long structSz;
#endif


      /* License Birth and Expiration will now be extended to include hours and minutes - v16 onwards */
      int birth_hours;    /* 0 - 23 */
      int birth_minutes;  /* 0 - 59 */
      int death_hours;    /* 0 - 23 */
      int death_minutes;  /* 0 - 59 */                  
      char eid[VLScg_MAX_EID_LEN];       /* Internal use only */
      int pid;                           /* Internal use only */
      int fid;                           /* Internal use only */
      char aid[VLScg_MAX_AID_LEN];       /* Internal use only */
      int cloud_usage_flag;              /* Internal use only */
      int lic_source;                    /* Internal use only */
      unsigned char vendor_secret_blob[VLScg_MAX_VENDORBLOBLEN];         /* Internal use only */
      Time64_T activation_birth_time;    /* Internal use only */
      Time64_T activation_expiry_time;   /* Internal use only */
      unsigned char vendor_secret_blob2[VLScg_MAX_VENDOR_BLOB_V2_LEN];   /* Internal use only */
      char license_vendor_info[VLScg_MAX_LICENSE_VENINFO_BUFFER_LEN + VLScg_LICENSE_VENINFO_BUFFER_PAD_LEN];/* License vendor info. v19 onwards. Stores information in ascii */      
      Time64_T license_generation_time;  /* Internal use only */
      char license_id[VLScg_MAX_UUID_LEN];         /* Internal use only */
      char customer_id[VLScg_MAX_CUSTOMER_ID_LEN]; /* Internal use only */  
      unsigned user_account_limit;                 /* For CloudLM lic only*/

   }
   codeT;
Member Description

code_type

Allowed values are:

>VLScg_SHORT_CODE

>VLScg_LONG_CODE

>VLScg_SHORT_NUMERIC_CODE

additive

Can be set to:

>VLScg_ADDITIVE: Additive license

>VLScg_EXCLUSIVE: Exclusive license

>VLScg_AGGREGATE_LICENSE: Aggregate license

client_server_lock_mode

Locking modes can be:

>VLScg_FLOATING: License Manager is locked. Denotes the life of trial license in days

>VLScg_BOTH_NODE_LOCKED: Clients and License Manager are locked

> VLScg_DEMO_MODE: Demo license (no locking)

> VLScg_CLIENT_NODE_LOCKED: Only clients are locked

holding_crit

Criterion for held licenses can be:

>VLScg_HOLD_NONE: Held licenses not allowed

>VLScg_HOLD_VENDOR: Client specifies hold time

>VLScg_HOLD_CODE: Lic code specifies hold time

sharing_crit

Criterion for sharing of non-capacity licenses, can be:

>VLScg_NO_SHARING

>VLScg_USER_SHARING  

>VLScg_HOSTNAME_SHARING

>VLScg_XDISPLAY_SHARING

>VLScg_VENDOR_SHARING

Criterion for sharing of capacity licenses, can be:

>VLScg_NO_TEAM

>VLScg_USER_BASED_TEAM

>VLScg_HOSTNAME_BASED_TEAM

>VLScg_XDISPLAY_BASED_TEAM

>VLScg_VENDOR_BASED_TEAM

server_locking_crit1

>License Manager locking code criteria (group 1)

>Allows 2 host IDs per License Manager

server_locking_crit2

>License Manager locking code criteria (group 2)

>Allow 2 host IDs per License Manager

client_locking_crit

>Client locking code criteria

>Allows 1 host ID per client

standalone_flag

Specifies if the license is standalone, network, or repository.

out_lic_type

Specifies if the license is

>Encrypted

>Expanded readable

>Concise readable

clock_tamper_flag

If set, then the license does not allow time tampering.

feature_name

Name of the feature.

feature_version

Version of the feature.

birth_minutes

License start minutes (0-59).

Use this field to specify the license start time (in minutes) while generating a license. By default, these optional fields are set to "NIL".

 

This field is relevant for version 16 (and above) licenses. If this field is set, the time and date values are interpreted as per the Coordinated Universal Time (UTC) standard.

Developers can use the VLScgSetLicBirthMinutes API to set the license start time.

birth_hours

License start hours (0 - 23)

Use this field to specify the start time (in hours) while generating a license. By default, these optional fields are set to "NIL".

 

This field is relevant for version 16 (and above) licenses. If this field is set, the time and date values are interpreted as per the Coordinated Universal Time (UTC) standard.

Developers can use the VLScgSetLicBirthHours API to set the license start time (in hours).

birth_day

Sets start date (day of month) of the license.

birth_month

Sets start date (month) of the license.

birth_year 2006 to.....Sets start date (year) of the license.
death_minutes

License expiration minutes (0-59).

Use this field to specify the license end time (in minutes) while generating a license. By default, this optional field is set to "NIL".

This field is relevant for version 16 (and above) licenses. If this field is set, the time and date values are interpreted as per the Coordinated Universal Time (UTC) standard.

Developers can use the VLScgSetLicExpirationHours API to set the license end time (in minutes).

death_hours

License expiration hours (0 - 23).

Use this field to specify the license end time (in hours) while generating a license. By default, this optional field is set to "NIL".

This field is relevant for version 16 (and above) licenses. If this field is set, the time and date values are interpreted as per the Coordinated Universal Time (UTC) standard.

Developers can use the VLScgSetLicExpirationHours API to set the license end time (in hours).

death_day

Sets expiration date (day of month) of the license.

death_month

0 - 11 or JAN - DEC

death_year

1998 to.......; minimum death year can be 1998.

num_servers

Identifies the number of License Managers.

Always 1 for single License Manager application and maximum 11 for redundant License Manager application.

server_lock_info1

Sets the value of the locking code (<= 8-character hexadecimal string (32 bit numeric * value), and optionally preceded by '0x').

server_lock_info2

Sets the value of the locking code (<= 8-character hexadecimal string (32 bit numeric * value), and optionally preceded by '0x').

num_nl_clients

Number of node-locked clients, maximum of 7 node-locked clients allowed.

nl_client_lock_info

Sets the value of the locking code (<= 8-character hexadecimal string (32 bit numeric * value), optionally preceded by '0x').

num_keys

Number of concurrent keys.

soft_limit Total soft limit (for alerts) on the number of concurrent users of this feature.
keys_per_node

Number of keys alloted to each client for a network mode license.

num_subnets

The number of subnet specifications provided for the site.

site_lic_info

Specifies the number of subnets provided for the site.

share_limit/team-limit

>Number of clients/users who can share a single license key.

>Used as team limit in case of capacity license.

key_life_units

Determines lifetime least count.

Lifetime specification units of keys from 0 to 3. The semantics are:

0: Multiple of 1 minute(s), maximum 15 minutes.

1: Multiple of 10 minute(s), maximum 150 minutes.

2: Multiple of 30 minute(s), maximum 450 minutes

3: Multiple of 60 minute(s), maximum 900 minutes

key_lifetime

The license lifetime in seconds.

Defines the absolute value in minutes : Maximum range depends on key_life_units.

key_hold_units

Flag which determines hold time least count.

The hold time specification units of keys are from 0 to 3. The semantics are:

"0" - Multiple of 1 minute(s), maximum 15 minutes. "1" - Multiple of 10 minute(s), maximum 150 minutes.

"2" - Multiple of 30 minute(s), maximum 450 minutes.

"3" - Multiple of 60 minute(s), maximum 900 minutes.

key_holdtime

Maximum range depends on the key_hold_units.

num_secrets

Number of Challenge response secrets.

secrets

Challenge-response secrets.

vendor_info

The vendor-defined information string. The maximum length of the string can be up to 2000 characters.

licType

Trial or Normal license type.

trialDaysCount

Total number of days after which license will expire.

use_auth_code

For multi-keys or short numeric codes.

numeric_type

For short numeric codes

>0 - non-numeric

>1 - general short numeric

>2 - general numeric

>10 and above specific type for codegen_version=7

conversion_time This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results.
isRedundant

Validates if the license is actually redundant.

majority_rule

Checks whether majority rule is on or off.

isCommuter

Enable/disable commuter license.

commuter_max_checkout_days

The maximum number of days a commuter license can be checked out for. It can be:

>A value between 1 to 1827 days for long licenses.

>A value between 1 to 60 days for short licenses.

>Zero for unlimited check-out (up to the license expiration)

log_encrypt_level

For encryption level in the license code.

elan_key_flag This field is set internally by Sentinel products. Setting a value for this field can produce unexpected results.
vendor_code

Vendor identification code.

version_num

The license version number, such as version 11, 12, 13, 14, 15,16, 17 and 18 licenses, that maps to Sentinel RMS SDK versions.

licensing_crit This field is set internally by Sentinel products. Setting a value for this field can produce unexpected results.
meter_value

Fields for multi_key for short numeric codegen_version >=2.

num_features

Number of features in case of multi key.

key_type

Single key/Multi key for short numeric only.

capacity_flag

Specifies if the license is a capacity or non-capacity license. Values can be:

>VLScg_CAPACITY_NONE

>VLScg_CAPACITY_NON_POOLED

>VLScg_CAPACITY_POOLED

capacity_units

Determines capacity least count.

capacity

The capacity of this license.

grace_period_flag

A flag that decides whether grace period for a license will be provided or not. It can be any of the following constants:

>VLScg_NO_GRACE_PERIOD - grace period not allowed (default)

>VLScg_STANDARD_GRACE_PERIOD - grace period allowed

grace_period_calendar_days

The number of days the grace period will last for. It can be a value between 1 to 180 days. The default value is 2 days.

grace_period_elasped_hours

The number of hours the grace period will last for. It can be a value between 1 to 1440 hours. The default value is 20 hours.

overdraft_flag

Not supported.

overdraft_hours

Not supported.

overdraft_users

Not supported.

overdraft_users_isPercent

Not supported.

local_request_lockcrit_flag

The flag that sets the local license request locking criteria as:

>VLScg_LOCAL_REQUEST_LOCKCRIT_USEDEFAULT - Sets local_request_lockcrit_required to disk ID (VLS_LOCK_DISK_ID) local_request_lockcrit_float to 0, and local_request_lockcrit_min_num to 1. This is the default setting.

>VLS_LOCAL_REQUEST_LOCKCRIT_DEFINED - Sets local_request_lockcrit_required to a user-defined value.

local_request_lockcrit_required

The necessary number of locking criteria that must be met for making the licenses available to a local client.

local_request_lockcrit_float

The desired number of locking criteria that must be met for making the licenses available to a local client.

local_request_lockcrit_min_num

The minimum number of locking criteria that must be met for making the licenses available to a local client. For example, the “required” locking criteria can be disk ID, the “floating” criteria can be Ethernet card and CID key, and the “minimum” criteria can be any two of the above.

eid This field is set for internal use. Setting a value for this field may produce unexpected results.
pid This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results.
fid This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results.
aid This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results.
cloud_usage_flag

This field determines if the Cloud-based usage data is being generated or not. The possible values are:

> 0 - The Cloud-based usage data is not generated.

>

1 - The Cloud-based usage data is being generated.

NOTE    Default value is 0.

lic_source This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results.
vendor_secret_blob This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results.

activation_birth_time

This field is used by SCL-Add-on for RMS for storing the entitlement start date and time.

Notes:

>This field is relevant for version 17 (and above) licenses.

>You can retrieve the value of this field using VLSgetFeatureinfo or VLSgetLicenseInfo API.

>Use the sntl_licensing_get_info API to retrieve the entitlement start date and time.

>For license versions v16 (and earlier), the default value (0) will be returned as the value of this field.

 

activation_expiry_time

This field is used by SCL-Add-on for RMS for storing the Entitlement expiration date and time.

Notes

>This field is relevant for version 17 (and above) licenses.

>You can retrieve the value of this field using VLSgetFeatureinfo or VLSgetLicenseInfo API.

>Use the sntl_licensing_get_info API to retrieve the entitlement expiry date and time.

>For license versions v16 (and earlier), the default value (0) will be returned as the value of this field.

trial_elapsed_hours

The trial hours specified for a trial license.

plain_vendor_info

The public vendor information. The maximum length of the string can be up to 395 characters.

vm_detection

The flag to allow or deny the grant of a license token in case the License Manager is found running on a virtual machine. It can have the following values:

>VLScg_VM_DISALLOWED_STRING - Denies the grant of a license.

>VLScg_VM_ALLOWED_STRING - Allows the grant of a license.

structSz

The codeT structure size to identify its version in libraries beyond 8.4.0. The structSz needs to be set by the caller.

**WARNING**   This member is added in the 8.4.0 release. However, to ensure compatibility in the subsequent releases, you must fill up this member with the size of CodeT. Else, upgrade to the license generation DLL will fail.

vendor_secret_blob2 This field is set internally by Sentinel products. Setting a value for this field can produce unexpected results.
license_vendor_info This field is used to specify different vendor info at the time of license aggregation (maximum of 512 characters). It is applicable to version 19 and above licenses.
license_generation_time

This field is set internally by Sentinel products. Setting a value for this field may produce unexpected results. It is applicable to version 19 and above licenses.

license_id This field is set for internal use. Setting a value for this field may produce unexpected results.
customer_id This field is set for internal use. Setting a value for this field may produce unexpected results.
user_account_limit This field is set for named user licensing in Connected (Cloud LM) mode only. Introduced since RMS license version 23.