Index: configure
===================================================================
--- configure	(revision 5277)
+++ configure	(revision 5279)
@@ -1680,4 +1680,5 @@
 test_func_defmake ROAR_HAVE_STRLCAT   strlcat   'strlcat((char*)0, "", 0)'   -- string.h
 test_func_defmake ROAR_HAVE_NICE      nice      'nice(0)'                    -- unistd.h
+test_func_defmake ROAR_HAVE_GETHOSTID gethostid 'gethostid()'                -- unistd.h
 test_func_defmake ROAR_HAVE_GETGID    getgid    'getgid()'                   -- sys/types.h unistd.h
 test_func_defmake ROAR_HAVE_GETUID    getuid    'getuid()'                   -- sys/types.h unistd.h
Index: include/libroar/serverinfo.h
===================================================================
--- include/libroar/serverinfo.h	(revision 4708)
+++ include/libroar/serverinfo.h	(revision 5279)
@@ -40,16 +40,18 @@
 
 struct roar_server_info {
- char * version;
- char * location;
- char * description;
- char * contact;
- char * serial;
- char * address;
- char * uiurl;
+ const char * version;
+ const char * location;
+ const char * description;
+ const char * contact;
+ const char * serial;
+ const char * address;
+ const char * uiurl;
+ const char * hostid;
+ const char * license;
  struct {
-  char * sysname;
-  char * release;
-  char * nodename;
-  char * machine;
+  const char * sysname;
+  const char * release;
+  const char * nodename;
+  const char * machine;
  } un;
 };
Index: include/roaraudio/proto.h
===================================================================
--- include/roaraudio/proto.h	(revision 5093)
+++ include/roaraudio/proto.h	(revision 5279)
@@ -199,4 +199,5 @@
 #define ROAR_ITST_UIURL             10
 #define ROAR_ITST_HOSTID            11
+#define ROAR_ITST_LICENSE           12
 
 // IDs for diffrent clocks:
Index: libroar/serverinfo.c
===================================================================
--- libroar/serverinfo.c	(revision 5270)
+++ libroar/serverinfo.c	(revision 5279)
@@ -39,5 +39,5 @@
  int type;
  size_t len;
- char * buf;
+ const char * buf;
 };
 
@@ -102,4 +102,6 @@
  _add(ROAR_ITST_ADDRESS, address);
  _add(ROAR_ITST_UIURL, uiurl);
+ _add(ROAR_ITST_LICENSE, license);
+ _add(ROAR_ITST_HOSTID, hostid);
  _add(ROAR_ITST_UN_SYSNAME, un.sysname);
  _add(ROAR_ITST_UN_RELEASE, un.release);
@@ -160,5 +162,5 @@
  char * textpart;
  char * textbuf;
- char ** tptr;
+ const char ** tptr;
  char * mesdata;
 
@@ -272,4 +274,6 @@
    _ck(ROAR_ITST_ADDRESS, address);
    _ck(ROAR_ITST_UIURL, uiurl);
+   _ck(ROAR_ITST_HOSTID, hostid);
+   _ck(ROAR_ITST_LICENSE, license);
    _ck(ROAR_ITST_UN_SYSNAME, un.sysname);
    _ck(ROAR_ITST_UN_RELEASE, un.release);
Index: roarclients/roarctl.c
===================================================================
--- roarclients/roarctl.c	(revision 5238)
+++ roarclients/roarctl.c	(revision 5279)
@@ -269,4 +269,5 @@
 void server_info (struct roar_connection * con) {
  struct roar_server_info * info = roar_server_info(con);
+ long hostid;
 
  if ( info == NULL ) {
@@ -275,11 +276,28 @@
  }
 
- _pm(version, "version");
- _pm(location, "location");
- _pm(description, "description");
- _pm(contact, "contact");
- _pm(serial, "serial");
- _pm(address, "address");
+ _pm(version, "Version");
+ _pm(location, "Location");
+ _pm(description, "Description");
+ _pm(contact, "Contact");
+ _pm(serial, "Serial");
+ _pm(address, "Address");
  _pm(uiurl, "UI URL");
+ _pm(license, "License");
+// _pm(hostid, "HostID");
+ if ( info->hostid != NULL ) {
+  if ( sscanf(info->hostid, "0x%lx", &hostid) != 1 )
+   hostid = 0;
+
+  if ( hostid ) {
+   printf("Server %-15s: %s (%li.%li.%li.%li)\n", "HostID", info->hostid,
+           ((hostid & 0x00FF0000UL) >> 16UL),
+           ((hostid & 0xFF000000UL) >> 24UL),
+           ((hostid & 0x000000FFUL) >>  0UL),
+           ((hostid & 0x0000FF00UL) >>  8UL)
+         );
+  } else {
+   printf("Server %-15s: %s\n", "HostID", info->hostid);
+  }
+ }
  _pm(un.sysname, "System sysname");
  _pm(un.release, "System release");
Index: roard/include/roard.h
===================================================================
--- roard/include/roard.h	(revision 5194)
+++ roard/include/roard.h	(revision 5279)
@@ -202,4 +202,7 @@
  char * location;
  char * description;
+ char * contact;
+ char * serial;
+ char * uiurl;
  size_t jumbo_mtu;
  int memlock_level;
Index: roard/req.c
===================================================================
--- roard/req.c	(revision 5216)
+++ roard/req.c	(revision 5279)
@@ -750,4 +750,8 @@
  struct roar_server_info info;
  uint16_t * d16;
+#ifdef ROAR_HAVE_GETHOSTID
+ long hostid;
+ char hostidbuf[64];
+#endif
 
  if ( mes->datalen != 4 )
@@ -771,9 +775,21 @@
    }
 
+   info.license = "GPL-3.0";
+
+#ifdef ROAR_HAVE_GETHOSTID
+   hostid = gethostid();
+   snprintf(hostidbuf, sizeof(hostidbuf), sizeof(long) == 8 ? "0x%.16lx" : "0x%.8lx", hostid);
+   info.hostid = hostidbuf;
+#endif
+
    if ( !!strcmp(g_config->location, CONF_DEF_STRING) )
     info.location = g_config->location;
 
    if ( !!strcmp(g_config->description, CONF_DEF_STRING) )
-   info.description = g_config->description;
+    info.description = g_config->description;
+
+   info.contact = g_config->contact;
+   info.serial  = g_config->serial;
+   info.uiurl   = g_config->uiurl;
 
 #ifdef ROAR_HAVE_UNAME
Index: roard/roard.c
===================================================================
--- roard/roard.c	(revision 5275)
+++ roard/roard.c	(revision 5279)
@@ -230,4 +230,9 @@
         " --location  LOC       - Set lion readable location of server\n"
         " --description  DESC   - Set lion readable description of server\n"
+        " --contact CONTACT     - Set contact for this server\n"
+        " --serial SERIAL       - Set serial for this device or server\n"
+        "                         (for embedded devices only)\n"
+        " --uiurl UIURL         - Set URL for userinterface of this device or server\n"
+        "                         (for embedded devices only)\n"
 #ifdef SUPPORT_PIDFILE
         " --pidfile PIDFILE     - Write a pidfile at PIDFILE\n"
@@ -513,4 +518,7 @@
  g_config->location    = CONF_DEF_STRING;
  g_config->description = CONF_DEF_STRING;
+ g_config->contact     = NULL;
+ g_config->serial      = NULL;
+ g_config->uiurl       = NULL;
 
  g_config->memlock_level = -1;
@@ -1657,4 +1665,13 @@
    _CKHAVEARGS(1);
    g_config->description = argv[++i];
+  } else if ( strcmp(k, "--contact") == 0 ) {
+   _CKHAVEARGS(1);
+   g_config->contact = argv[++i];
+  } else if ( strcmp(k, "--serial") == 0 ) {
+   _CKHAVEARGS(1);
+   g_config->serial = argv[++i];
+  } else if ( strcmp(k, "--uiurl") == 0 ) {
+   _CKHAVEARGS(1);
+   g_config->uiurl = argv[++i];
   } else if ( strcmp(k, "--pidfile") == 0 ) {
    _CKHAVEARGS(1);
