open-license-manager
2014-09-16 1e166c13aaabe8d2aad1d604c77020a14dc577cd
src/library/os/linux/os-linux.c
@@ -1,4 +1,6 @@
#ifndef _GNU_SOURCE
#define _GNU_SOURCE     /* To get defns of NI_MAXSERV and NI_MAXHOST */
#endif
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netdb.h>
@@ -20,7 +22,7 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
#include "../os.h"
#include "../../base/public-key.h"
#include "public-key.h"
#include <openssl/evp.h>
#include <openssl/bio.h>
@@ -33,6 +35,7 @@
#include <dbus-1.0/dbus/dbus.h>
#include <sys/utsname.h>
static int ifname_position(char *ifnames, char * ifname, int ifnames_max) {
   int i, position;
@@ -47,10 +50,10 @@
}
FUNCTION_RETURN getAdapterInfos(AdapterInfo * adapterInfos,
FUNCTION_RETURN getAdapterInfos(OsAdapterInfo * adapterInfos,
      size_t * adapter_info_size) {
   FUNCTION_RETURN f_return = OK;
   FUNCTION_RETURN f_return = FUNC_RET_OK;
   struct ifaddrs *ifaddr, *ifa;
   int family, i, n, if_name_position;
   unsigned int if_num, if_max;
@@ -59,11 +62,11 @@
   if (getifaddrs(&ifaddr) == -1) {
      perror("getifaddrs");
      return ERROR;
      return FUNC_RET_ERROR;
   }
   if (adapterInfos != NULL) {
      memset(adapterInfos, 0, (*adapter_info_size) * sizeof(AdapterInfo));
      memset(adapterInfos, 0, (*adapter_info_size) * sizeof(OsAdapterInfo));
   }
   /* count the maximum number of interfaces */
@@ -116,7 +119,7 @@
          sizeof(struct sockaddr_in) :
          sizeof(struct sockaddr_in6), host, NI_MAXHOST,
          NULL, 0, NI_NUMERICHOST);
          */
#ifdef _DEBUG
         s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in), host,
               NI_MAXHOST,
@@ -126,7 +129,7 @@
         }
         printf("\t\taddress: <%s>\n", host);
#endif
*/
         if (adapterInfos != NULL && if_name_position < *adapter_info_size) {
            struct sockaddr_in *s1 = (struct sockaddr_in*) ifa->ifa_addr;
            in_addr_t iaddr = s1->sin_addr.s_addr;
@@ -159,9 +162,9 @@
   *adapter_info_size = if_num;
   if (adapterInfos == NULL) {
      f_return = OK;
      f_return = FUNC_RET_OK;
   } else if (*adapter_info_size < if_num) {
      f_return = BUFFER_TOO_SMALL;
      f_return = FUNC_RET_BUFFER_TOO_SMALL;
   }
   freeifaddrs(ifaddr);
   free(ifnames);
@@ -238,7 +241,7 @@
   aFile = setmntent("/proc/mounts", "r");
   if (aFile == NULL) {
      /*proc not mounted*/
      return ERROR;
      return FUNC_RET_ERROR;
   }
   currentDrive = 0;
@@ -280,7 +283,7 @@
   if (diskInfos == NULL) {
      *disk_info_size = currentDrive;
      free(tmpDrives);
      result = OK;
      result = FUNC_RET_OK;
   } else if (*disk_info_size >= currentDrive) {
      disk_by_uuid_dir = opendir("/dev/disk/by-uuid");
      if (disk_by_uuid_dir == NULL) {
@@ -288,9 +291,9 @@
         printf("Open /dev/disk/by-uuid fail");
#endif
         free(statDrives);
         return ERROR;
         return FUNC_RET_ERROR;
      }
      result = OK;
      result = FUNC_RET_OK;
      *disk_info_size = currentDrive;
      while ((dir = readdir(disk_by_uuid_dir)) != NULL) {
         strcpy(cur_dir, "/dev/disk/by-uuid/");
@@ -334,7 +337,7 @@
         closedir(disk_by_label);
      }
   } else {
      result = BUFFER_TOO_SMALL;
      result = FUNC_RET_BUFFER_TOO_SMALL;
   }
   /*
    FILE *mounts = fopen(_PATH_MOUNTED, "r");
@@ -385,7 +388,7 @@
      identifier[i * 2] = cpuinfo[i] & 0xFF;
      identifier[i * 2 + 1] = (cpuinfo[i] & 0xFF00) >> 8;
   }
   return OK;
   return FUNC_RET_OK;
}
VIRTUALIZATION getVirtualization() {
@@ -415,18 +418,18 @@
   static struct utsname u;
   if (uname(&u) < 0) {
      return ERROR;
      return FUNC_RET_ERROR;
   }
   memcpy(identifier, u.nodename, 6);
   return OK;
   return FUNC_RET_OK;
}
FUNCTION_RETURN getOsSpecificIdentifier(unsigned char identifier[6]) {
   char* dbus_id = dbus_get_local_machine_id();
   if (dbus_id == NULL) {
      return ERROR;
      return FUNC_RET_ERROR;
   }
   memcpy(identifier, dbus_id, 6);
   dbus_free(dbus_id);
   return OK;
   return FUNC_RET_OK;
}