Annotation of embedaddon/strongswan/src/libtnccs/tnc/tnccs/tnccs.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2010-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 tnccs tnccs
                     18:  * @ingroup libtnccs
                     19:  *
                     20:  * @defgroup tnccst tnccs
                     21:  * @{ @ingroup tnccs
                     22:  */
                     23: 
                     24: #ifndef TNCCS_H_
                     25: #define TNCCS_H_
                     26: 
                     27: typedef struct tnccs_t tnccs_t;
                     28: typedef enum tnccs_type_t tnccs_type_t;
                     29: typedef enum tnc_ift_type_t tnc_ift_type_t;
                     30: 
                     31: #include <tncif.h>
                     32: #include <tncifimc.h>
                     33: #include <tncifimv.h>
                     34: 
                     35: #include <library.h>
                     36: #include <plugins/plugin.h>
                     37: 
                     38: #include <tls.h>
                     39: 
                     40: /**
                     41:  * Callback function to communicate action recommendation and evaluation result
                     42:  * generated by TNC server
                     43:  *
                     44:  * @param rec          TNC Action Recommendation
                     45:  * @param eval         TNC Evaluation Result
                     46:  * @return                     TRUE to terminate TNCCS connection, FALSE to keep it
                     47:  */
                     48: typedef bool (*tnccs_cb_t)(TNC_IMV_Action_Recommendation rec,
                     49:                                                   TNC_IMV_Evaluation_Result eval);
                     50: 
                     51: /**
                     52:  * Type of TNC Client/Server protocol
                     53:  */
                     54: enum tnccs_type_t {
                     55:        TNCCS_UNKNOWN,
                     56:        TNCCS_1_1,
                     57:        TNCCS_SOH,
                     58:        TNCCS_2_0,
                     59:        TNCCS_DYNAMIC
                     60: };
                     61: 
                     62: /**
                     63:  * Type of TNC Transport protocol
                     64:  */
                     65: enum tnc_ift_type_t {
                     66:        TNC_IFT_UNKNOWN,
                     67:        TNC_IFT_EAP_1_0,
                     68:        TNC_IFT_EAP_1_1,
                     69:        TNC_IFT_EAP_2_0,
                     70:        TNC_IFT_TLS_1_0,
                     71:        TNC_IFT_TLS_2_0
                     72: };
                     73: 
                     74: /**
                     75:  * enum names for tnccs_type_t.
                     76:  */
                     77: extern enum_name_t *tnccs_type_names;
                     78: 
                     79: /**
                     80:  * TNCCS public interface
                     81:  */
                     82: struct tnccs_t {
                     83: 
                     84:        /**
                     85:         * Implements tls_t
                     86:         */
                     87:        tls_t tls;
                     88: 
                     89:        /**
                     90:         * Get server IP address
                     91:         *
                     92:         * @return                              Server IP address
                     93:         */
                     94:        host_t* (*get_server_ip)(tnccs_t *this);
                     95: 
                     96:        /**
                     97:         * Get peer IP address
                     98:         *
                     99:         * @return                              Peer IP address
                    100:         */
                    101:        host_t* (*get_peer_ip)(tnccs_t *this);
                    102: 
                    103:        /**
                    104:         * Get underlying TNC IF-T transport protocol
                    105:         *
                    106:         * @return                              TNC IF-T transport protocol
                    107:         */
                    108:        tnc_ift_type_t (*get_transport)(tnccs_t *this);
                    109: 
                    110:        /**
                    111:         * Set underlying TNC IF-T transport protocol
                    112:         *
                    113:         * @param transport             TNC IF-T transport protocol
                    114:         */
                    115:        void (*set_transport)(tnccs_t *this, tnc_ift_type_t transport);
                    116: 
                    117:        /**
                    118:         * Get type of TNC Client authentication
                    119:         *
                    120:         * @return                              TNC Client authentication type
                    121:         */
                    122:        uint32_t (*get_auth_type)(tnccs_t *this);
                    123: 
                    124:        /**
                    125:         * Set type of TNC Client authentication
                    126:         *
                    127:         * @param auth_type             TNC Client authentication type
                    128:         */
                    129:        void (*set_auth_type)(tnccs_t *this, uint32_t auth_type);
                    130: 
                    131:        /**
                    132:         * Get PDP server name and port number
                    133:         *
                    134:         * @param port          PDP port number
                    135:         * @return                      PDP server name
                    136:         */
                    137:        chunk_t (*get_pdp_server)(tnccs_t *this, uint16_t *port);
                    138: 
                    139:        /**
                    140:         * Get a new reference to the TNCCS object.
                    141:         *
                    142:         * @return                      this, with an increased refcount
                    143:         */
                    144:        tnccs_t* (*get_ref)(tnccs_t *this);
                    145: 
                    146: };
                    147: 
                    148: /**
                    149:  * Constructor definition for a pluggable TNCCS protocol implementation.
                    150:  *
                    151:  * @param is_server            TRUE if TNC Server, FALSE if TNC Client
                    152:  * @param server_id            Server identity
                    153:  * @param peer_id              Client identity
                    154:  * @param server_ip            Server IP address
                    155:  * @param peer_ip              Client IP address
                    156:  * @param transport            Underlying TNC IF-T transport protocol used
                    157:  * @param cb                   Callback function if TNC Server, NULL if TNC Client
                    158:  * @return                             implementation of the tnccs_t interface
                    159:  */
                    160: typedef tnccs_t *(*tnccs_constructor_t)(bool is_server,
                    161:                                                                                identification_t *server_id,
                    162:                                                                                identification_t *peer_id,
                    163:                                                                                host_t *server_ip,
                    164:                                                                                host_t *peer_ip,
                    165:                                                                                tnc_ift_type_t transport,
                    166:                                                                                tnccs_cb_t cb);
                    167: 
                    168: /**
                    169:  * Callback function adding a message to a TNCCS batch
                    170:  *
                    171:  * @param imc_id               ID of IMC or TNC_IMCID_ANY
                    172:  * @param imc_id               ID of IMV or TNC_IMVID_ANY
                    173:  * @param msg_flags            message flags
                    174:  * @param msg                  message to be added
                    175:  * @param msg_len              message length
                    176:  * @param msg_vid              message vendor ID
                    177:  * @param msg_subtype  message subtype
                    178:  * @return                             return code
                    179:  */
                    180: typedef TNC_Result (*tnccs_send_message_t)(tnccs_t* tncss,
                    181:                                                                                  TNC_IMCID imc_id,
                    182:                                                                                  TNC_IMVID imv_id,
                    183:                                                                                  TNC_UInt32 msg_flags,
                    184:                                                                                  TNC_BufferReference msg,
                    185:                                                                                  TNC_UInt32 msg_len,
                    186:                                                                                  TNC_VendorID msg_vid,
                    187:                                                                                  TNC_MessageSubtype msg_subtype);
                    188: 
                    189: #endif /** TNCCS_H_ @}*/

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