Use standard unsigned integer types
[strongswan.git] / src / libstrongswan / pen / pen.h
1 /*
2 * Copyright (C) 2011-2015 Andreas Steffen
3 * HSR Hochschule fuer Technik Rapperswil
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 */
15
16 /**
17 * @defgroup pen pen
18 * @ingroup libstrongswan
19 *
20 * @defgroup pent pen
21 * @{ @ingroup pen
22 */
23
24 #ifndef PEN_H_
25 #define PEN_H_
26
27 #include <library.h>
28
29 typedef enum pen_t pen_t;
30 typedef struct pen_type_t pen_type_t;
31
32 /**
33 * Private enterprise numbers allocated by IANA.
34 *
35 * http://www.iana.org/assignments/enterprise-numbers
36 */
37 enum pen_t {
38 PEN_IETF = 0x000000, /* 0 */
39 PEN_IBM = 0x000002, /* 2 */
40 PEN_MICROSOFT = 0x000137, /* 311 */
41 PEN_REDHAT = 0x000908, /* 2312 */
42 PEN_PWG = 0x000A8B, /* 2699 */
43 PEN_ALTIGA = 0x000c04, /* 3076 */
44 PEN_OSC = 0x002358, /* 9048 */
45 PEN_DEBIAN = 0x002572, /* 9586 */
46 PEN_GOOGLE = 0x002B79, /* 11129 */
47 PEN_TCG = 0x005597, /* 21911 */
48 PEN_CANONICAL = 0x007132, /* 28978 */
49 PEN_FEDORA = 0x0076C1, /* 30401 */
50 PEN_FHH = 0x0080ab, /* 32939 */
51 PEN_ITA = 0x00902a, /* 36906 */
52 PEN_OPENPTS = 0x00950e, /* 38158 */
53 PEN_UNASSIGNED = 0xfffffe, /* 16777214 */
54 PEN_RESERVED = 0xffffff, /* 16777215 */
55 };
56
57 /**
58 * Vendor specific type in vendor specific namespace.
59 */
60 struct pen_type_t {
61 pen_t vendor_id;
62 uint32_t type;
63 };
64
65 /**
66 * Create a pen_type_t struct
67 *
68 * @param vendor_id vendor ID to create a pen_type_t
69 * @param type type to create a pen_type_t
70 * @return created pen_type_t
71 */
72 static inline pen_type_t pen_type_create(pen_t vendor_id, uint32_t type)
73 {
74 pen_type_t pen_type = { vendor_id, type };
75 return pen_type;
76 }
77
78 /**
79 * Check two pen_type_t for equality.
80 *
81 * @param a first pen_type_t to compare
82 * @param b second pen_type_t to compare
83 * @return TRUE if a == b
84 */
85 static inline bool pen_type_equals(pen_type_t a, pen_type_t b)
86 {
87 return a.vendor_id == b.vendor_id && a.type == b.type;
88 }
89
90 /**
91 * Check if a pen_type_t matches vendor and type.
92 *
93 * @param pen_type pen_type_t to compare
94 * @param vendor_id vendor to check in pen_type
95 * @param type type to check in pen_type
96 * @return TRUE if vendor_id and type matches pen_type
97 */
98 static inline bool pen_type_is(pen_type_t pen_type,
99 pen_t vendor_id, uint32_t type)
100 {
101 return pen_type.vendor_id == vendor_id && pen_type.type == type;
102 }
103
104 /**
105 * enum names for pen_t.
106 */
107 extern enum_name_t *pen_names;
108
109 #endif /** PEN_H_ @}*/