summaryrefslogtreecommitdiff
path: root/src/libstrongswan/pen
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/pen')
-rw-r--r--src/libstrongswan/pen/pen.c12
-rw-r--r--src/libstrongswan/pen/pen.h69
2 files changed, 60 insertions, 21 deletions
diff --git a/src/libstrongswan/pen/pen.c b/src/libstrongswan/pen/pen.c
index b1b0731d4..474a7a876 100644
--- a/src/libstrongswan/pen/pen.c
+++ b/src/libstrongswan/pen/pen.c
@@ -22,8 +22,10 @@ ENUM_NEXT(pen_names, PEN_IBM, PEN_IBM, PEN_IETF,
ENUM_NEXT(pen_names, PEN_MICROSOFT, PEN_MICROSOFT, PEN_IBM,
"Microsoft");
ENUM_NEXT(pen_names, PEN_REDHAT, PEN_REDHAT, PEN_MICROSOFT,
- "Redhat");
-ENUM_NEXT(pen_names, PEN_OSC, PEN_OSC, PEN_REDHAT,
+ "Redhat");
+ENUM_NEXT(pen_names, PEN_ALTIGA, PEN_ALTIGA, PEN_REDHAT,
+ "Altiga");
+ENUM_NEXT(pen_names, PEN_OSC, PEN_OSC, PEN_ALTIGA,
"OSC");
ENUM_NEXT(pen_names, PEN_DEBIAN, PEN_DEBIAN, PEN_OSC,
"Debian Project");
@@ -32,7 +34,7 @@ ENUM_NEXT(pen_names, PEN_GOOGLE, PEN_GOOGLE, PEN_DEBIAN,
ENUM_NEXT(pen_names, PEN_TCG, PEN_TCG, PEN_GOOGLE,
"TCG");
ENUM_NEXT(pen_names, PEN_CANONICAL, PEN_CANONICAL, PEN_TCG,
- "Canonical");
+ "Canonical");
ENUM_NEXT(pen_names, PEN_FEDORA, PEN_FEDORA, PEN_CANONICAL,
"Fedora Project");
ENUM_NEXT(pen_names, PEN_FHH, PEN_FHH, PEN_FEDORA,
@@ -41,7 +43,7 @@ ENUM_NEXT(pen_names, PEN_ITA, PEN_ITA, PEN_FHH,
"ITA-HSR");
ENUM_NEXT(pen_names, PEN_OPENPTS, PEN_OPENPTS, PEN_ITA,
"OpenPTS");
-ENUM_NEXT(pen_names, PEN_RESERVED, PEN_RESERVED, PEN_OPENPTS,
+ENUM_NEXT(pen_names, PEN_UNASSIGNED, PEN_RESERVED, PEN_OPENPTS,
+ "Unassigned",
"Reserved");
ENUM_END(pen_names, PEN_RESERVED);
-
diff --git a/src/libstrongswan/pen/pen.h b/src/libstrongswan/pen/pen.h
index 9d5df7d49..1760a0578 100644
--- a/src/libstrongswan/pen/pen.h
+++ b/src/libstrongswan/pen/pen.h
@@ -29,25 +29,32 @@
typedef enum pen_t pen_t;
typedef struct pen_type_t pen_type_t;
+/**
+ * Private enterprise numbers allocated by IANA.
+ *
+ * http://www.iana.org/assignments/enterprise-numbers
+ */
enum pen_t {
- PEN_IETF = 0x000000, /* 0 */
- PEN_IBM = 0x000002, /* 2 */
- PEN_MICROSOFT = 0x000137, /* 311 */
- PEN_REDHAT = 0x000908, /* 2312 */
- PEN_OSC = 0x002358, /* 9048 */
- PEN_DEBIAN = 0x002572, /* 9586 */
- PEN_GOOGLE = 0x002B79, /* 11129 */
- PEN_TCG = 0x005597, /* 21911 */
- PEN_CANONICAL = 0x007132, /* 28978 */
- PEN_FEDORA = 0x0076C1, /* 30401 */
- PEN_FHH = 0x0080ab, /* 32939 */
- PEN_ITA = 0x00902a, /* 36906 */
- PEN_OPENPTS = 0x00950e, /* 38158 */
- PEN_RESERVED = 0xffffff, /* 16777215 */
+ PEN_IETF = 0x000000, /* 0 */
+ PEN_IBM = 0x000002, /* 2 */
+ PEN_MICROSOFT = 0x000137, /* 311 */
+ PEN_REDHAT = 0x000908, /* 2312 */
+ PEN_ALTIGA = 0x000c04, /* 3076 */
+ PEN_OSC = 0x002358, /* 9048 */
+ PEN_DEBIAN = 0x002572, /* 9586 */
+ PEN_GOOGLE = 0x002B79, /* 11129 */
+ PEN_TCG = 0x005597, /* 21911 */
+ PEN_CANONICAL = 0x007132, /* 28978 */
+ PEN_FEDORA = 0x0076C1, /* 30401 */
+ PEN_FHH = 0x0080ab, /* 32939 */
+ PEN_ITA = 0x00902a, /* 36906 */
+ PEN_OPENPTS = 0x00950e, /* 38158 */
+ PEN_UNASSIGNED = 0xfffffe, /* 16777214 */
+ PEN_RESERVED = 0xffffff, /* 16777215 */
};
/**
- * Vendor specific type
+ * Vendor specific type in vendor specific namespace.
*/
struct pen_type_t {
pen_t vendor_id;
@@ -56,14 +63,44 @@ struct pen_type_t {
/**
* Create a pen_type_t struct
+ *
+ * @param vendor_id vendor ID to create a pen_type_t
+ * @param type type to create a pen_type_t
+ * @return created pen_type_t
*/
static inline pen_type_t pen_type_create(pen_t vendor_id, u_int32_t type)
{
- pen_type_t pen_type = {vendor_id, type};
+ pen_type_t pen_type = { vendor_id, type };
return pen_type;
}
/**
+ * Check two pen_type_t for equality.
+ *
+ * @param a first pen_type_t to compare
+ * @param b second pen_type_t to compare
+ * @return TRUE if a == b
+ */
+static inline bool pen_type_equals(pen_type_t a, pen_type_t b)
+{
+ return a.vendor_id == b.vendor_id && a.type == b.type;
+}
+
+/**
+ * Check if a pen_type_t matches vendor and type.
+ *
+ * @param pen_type pen_type_t to compare
+ * @param vendor_id vendor to check in pen_type
+ * @param type type to check in pen_type
+ * @return TRUE if vendor_id and type matches pen_type
+ */
+static inline bool pen_type_is(pen_type_t pen_type,
+ pen_t vendor_id, u_int32_t type)
+{
+ return pen_type.vendor_id == vendor_id && pen_type.type == type;
+}
+
+/**
* enum names for pen_t.
*/
extern enum_name_t *pen_names;