Define and use an OS enumeration type

This commit is contained in:
Andreas Steffen
2012-11-05 14:48:43 +01:00
parent 7b0330d285
commit 68cf283cd3
3 changed files with 92 additions and 22 deletions
+10 -9
View 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);
}