The attached sample code suffice the requirement to activate multiple vendor defined hostid.
In example code, two VDH (VDH and VDH1) are defined.We can use any of these to node lock the license server.
/**************************************************************************************************
* Copyright (c) 1997-2016, 2018 Flexera. All Rights Reserved.
**************************************************************************************************/
/*
* Description: Example Vendor-defined hostid implementation for
* FlexNet Licensing
*
* Parameters: (misc)
*
* Return: (misc)
*
* M. Christiano
* 11/14/2000 wh/tw
*
* x_flexlm_newid -- call this function just after lc_init()
* from your application, and also in your
* license generator (e.g., lmcrypt.c), and
* your vendor daemon. To do this in the vendor
* daemon, add the following to lsvendor.c:
*
* void x_flexlm_newid();
* void (*ls_user_init1)() = x_flexlm_newid;
*
*
* All programs that call this function MUST
* have a variable (LM_HANDLE *) lm_job that points
* to the current job. If your job handle is not
* called lm_job, make one that points to it.
*/
#include "lmclient.h"
#include "lm_attr.h"
#include "string.h"
extern LM_HANDLE *lm_job; /* This must be the current job! */
/* This example returns only 1 hostid */
#define VENDEF_ID_TYPE HOSTID_VENDOR+1
#define VENDEF_ID_LABEL "VDH"
#define VENDEF_ID "12345678"
#define VENDEF_ID_TYPE1 HOSTID_VENDOR+2
#define VENDEF_ID_LABEL1 "VDH1"
#define VENDEF_ID1 "87654321"
/*
* x_flexlm_gethostid() - Callback to get the vendor-defined hostid.
* (Sorry about all the windows types for this function...)
*/
HOSTID *
#ifdef PC
LM_CALLBACK_TYPE
#endif /* PC */
/*
* IMPORTANT NOTE: This function MUST call l_new_hostid() for
* a hostid struct on each call.
* If more than one hostid of a type is
* found, then call l_new_hostid for each
* and make into a list using the `next' field.
*/
x_flexlm_gethostid(idtype)
short idtype;
{
HOSTID *h = l_new_hostid();
memset(h, 0, sizeof(HOSTID));
if (idtype == VENDEF_ID_TYPE)
{
h->type = VENDEF_ID_TYPE;
strncpy(h->id.vendor, VENDEF_ID, MAX_HOSTID_LEN); /* LONGNAMES */
h->id.vendor[MAX_HOSTID_LEN] = 0;
return(h);
}
else if (idtype == VENDEF_ID_TYPE1)
{
h->type = VENDEF_ID_TYPE1;
strncpy(h->id.vendor, VENDEF_ID1, MAX_HOSTID_LEN); /* LONGNAMES */
h->id.vendor[MAX_HOSTID_LEN] = 0;
return(h);
}
return((HOSTID *) NULL);
}
void
x_flexlm_newid(id)
HOSTID *id;
{
LM_VENDOR_HOSTID h;
LM_VENDOR_HOSTID h1;
memset(&h, 0, sizeof (h));
h.label = VENDEF_ID_LABEL;
h.hostid_num = VENDEF_ID_TYPE;
h.case_sensitive = 0;
h.get_vendor_id = x_flexlm_gethostid;
if (lc_set_attr(lm_job, LM_A_VENDOR_ID_DECLARE, (LM_A_VAL_TYPE)&h))
lc_perror(lm_job, "LM_A_VENDOR_ID_DECLARE FAILED");
memset(&h1, 0, sizeof (h1));
h1.label = VENDEF_ID_LABEL1;
h1.hostid_num = VENDEF_ID_TYPE1;
h1.case_sensitive = 0;
h1.get_vendor_id = x_flexlm_gethostid;
if (lc_set_attr(lm_job, LM_A_VENDOR_ID_DECLARE, (LM_A_VAL_TYPE) &h1))
lc_perror(lm_job, "LM_A_VENDOR_ID_DECLARE FAILED");
}Was this helpful?
Related Articles
How to implement multiple vendor-defined hostid's 26Number of Views Add Vendor Defined Hostid Functionality to the C# Example 8Number of Views Steps to configure a combined Vendor Defined HostID and Composite HostID on Linux 11Number of Views Steps to configure a combined Vendor Defined HostID and Composite HostID on Windows 14Number of Views Sample Code to fetch HostID used for checkout from a server 7Number of Views
Revenera Assistant
Online
Hi, I am Reva - Ask me anything.
Updates
No new updates
Chat
Home
Updates
/**/
Thanks for the feedback!
Your feedback has been saved.Rate this response:
1
2
3
4
5
Add Additional feedback ( Optional )
0/240
English
English
Language changed successfully
Something went wrong
Email sent successfully
Something went wrong
Case create successfully
Are you sure you want to cancel
the case creation?
Please select a product to submit the case.
Please select a product version to submit the case.
0/255
Upload Attachment
File Upload
Maximum file
size allowed is 3 MB.
File type
not supported.
Supported file types:
Documents (.txt, .doc, .docx, .pdf), Images (.jpg, .png), Comma Separated Files
(.csv) Speadsheets (.xlsx, .xls)
Are you sure you want to cancel the case creation?
Case closed successfully
File Upload
Maximum file size allowed is 3 MB.
File type not supported.
Supported file types:
Documents (.txt, .doc, .docx, .pdf), Images (.jpg, .png), Comma Separated Files
(.csv) Speadsheets (.xlsx, .xls)
Are you sure you want to close this case
| Products | Region | Phone Numbers |
|---|---|---|
| FlexNet Operations FlexNet Embedded FlexNet Publisher FlexNet Connect FlexNet Code Insight InstallAnywhere InstallShield |
North America * |
+1 630-332-2513 (toll) +1 877-279-2853 (toll-free in North America) |
| Europe * |
+44 1925 944367 (toll) +44 800 047 8642 (toll-free in Europe) |
|
| Japan * | +81 3-4540-5335 (select option 2) | |
| Australia * |
+61 3 9895 2177 +61 1800 560 603 (toll-free in Australia) |
|
|
Usage Intelligence (formerly
Revulytics) Compliance Intelligence |
Please use the Case Portal to submit your support ticket or reach out to your Revenera contact. | |
File Upload
Maximum file
size allowed is 3 MB.
File type
not supported.
Supported file types:
Documents (.txt, .doc, .docx, .pdf), Images (.jpg, .png), Comma Separated Files
(.csv) Speadsheets (.xlsx, .xls)
© 2026 Flexera Software. All Rights Reserved.
Case id: 00001065
Activity: Status change: 2 hours ago