Annotation of embedaddon/strongswan/src/libstrongswan/pen/pen.h, revision 1.1.1.1

1.1       misho       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_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>