Define and use an OS enumeration type
[strongswan.git] / src / libimcv / plugins / imc_os / imc_os.c
index c487e21..5f2af9b 100644 (file)
@@ -128,32 +128,33 @@ TNC_Result TNC_IMC_NotifyConnectionChange(TNC_IMCID imc_id,
 static void add_product_info(imc_msg_t *msg)
 {
        pa_tnc_attr_t *attr;
-       chunk_t os_name;
+       os_type_t os_type;
        pen_t vendor_id = PEN_IETF;
-       char *vendor;
        int i;
 
        typedef struct vendor_pen_t {
-               char *vendor;
+               os_type_t os_type;
                pen_t pen;
        } vendor_pen_t;
 
        vendor_pen_t vendor_pens[] = {
-               { "Debian", PEN_DEBIAN },
-               { "Ubuntu", PEN_CANONICAL }
+               { OS_TYPE_DEBIAN,  PEN_DEBIAN },
+               { OS_TYPE_UBUNTU,  PEN_CANONICAL },
+               { OS_TYPE_FEDORA,  PEN_FEDORA },
+               { OS_TYPE_REDHAT,  PEN_REDHAT },
+               { OS_TYPE_ANDROID, PEN_GOOGLE }
        };
 
-       os_name = os->get_name(os);
+       os_type = os->get_type(os);
        for (i = 0; i < countof(vendor_pens); i++)
        {
-               vendor = vendor_pens[i].vendor;
-               if (chunk_equals(os_name, chunk_create(vendor, strlen(vendor))))
+               if (os_type == vendor_pens[i].os_type)
                {
                        vendor_id = vendor_pens[i].pen;
                        break;
                }
        }
-       attr = ietf_attr_product_info_create(vendor_id, 0, os_name);
+       attr = ietf_attr_product_info_create(vendor_id, 0, os->get_name(os));
        msg->add_attribute(msg, attr);
 }