File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libtnccs / tnc / tnccs / tnccs.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 09:46:43 2020 UTC (4 years, 3 months ago) by misho
Branches: strongswan, MAIN
CVS tags: v5_9_2p0, v5_8_4p7, HEAD
Strongswan

    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>