Annotation of embedaddon/strongswan/src/libimcv/pa_tnc/pa_tnc_msg.h, revision 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 pa_tnc_msg pa_tnc_msg
! 18: * @{ @ingroup pa_tnc
! 19: */
! 20:
! 21: #ifndef PA_TNC_MSG_H_
! 22: #define PA_TNC_MSG_H_
! 23:
! 24: typedef struct pa_tnc_msg_t pa_tnc_msg_t;
! 25:
! 26: #define PA_TNC_VERSION 0x01
! 27: #define PA_TNC_HEADER_SIZE 8
! 28:
! 29: #include "pa_tnc_attr.h"
! 30:
! 31: #include <library.h>
! 32:
! 33: /**
! 34: * Interface for the RFC 5792 PA-TNC Posture Attribute protocol.
! 35: *
! 36: */
! 37: struct pa_tnc_msg_t {
! 38:
! 39: /**
! 40: * Get the encoding of the PA-TNC message
! 41: *
! 42: * @return encoded PA-TNC message
! 43: */
! 44: chunk_t (*get_encoding)(pa_tnc_msg_t *this);
! 45:
! 46: /**
! 47: * Get the remaining space in octets left in the PA-TNC message
! 48: *
! 49: * @return remaining space or 0 if max_msg_len is not set
! 50: */
! 51: size_t (*get_space)(pa_tnc_msg_t *this);
! 52:
! 53: /**
! 54: * Add a PA-TNC attribute
! 55: *
! 56: * @param attr PA-TNC attribute to be added
! 57: * @return TRUE if attribute fit into message and was added
! 58: */
! 59: bool (*add_attribute)(pa_tnc_msg_t *this, pa_tnc_attr_t* attr);
! 60:
! 61: /**
! 62: * Build the PA-TNC message
! 63: *
! 64: * @return TRUE if PA-TNC message was built successfully
! 65: */
! 66: bool (*build)(pa_tnc_msg_t *this);
! 67:
! 68: /**
! 69: * Process the PA-TNC message
! 70: *
! 71: * @return return processing status
! 72: */
! 73: status_t (*process)(pa_tnc_msg_t *this);
! 74:
! 75: /**
! 76: * Process all IETF standard error PA-TNC attributes
! 77: *
! 78: * @param non_fatal_types list of non fatal unsupported attribute types
! 79: * @return TRUE if at least one fatal error processed
! 80: */
! 81: bool (*process_ietf_std_errors)(pa_tnc_msg_t *this,
! 82: linked_list_t *non_fatal_types);
! 83:
! 84: /**
! 85: * Enumerates over all PA-TNC attributes
! 86: *
! 87: * @return return attribute enumerator
! 88: */
! 89: enumerator_t* (*create_attribute_enumerator)(pa_tnc_msg_t *this);
! 90:
! 91: /**
! 92: * Enumerates over all parsing errors
! 93: *
! 94: * @return return error enumerator
! 95: */
! 96: enumerator_t* (*create_error_enumerator)(pa_tnc_msg_t *this);
! 97:
! 98: /**
! 99: * Destroys a pa_tnc_msg_t object.
! 100: */
! 101: void (*destroy)(pa_tnc_msg_t *this);
! 102: };
! 103:
! 104: /**
! 105: * Create an empty PA-TNC message
! 106: */
! 107: pa_tnc_msg_t* pa_tnc_msg_create(size_t max_msg_len);
! 108:
! 109: /**
! 110: * Create an unprocessed PA-TNC message from received data
! 111: *
! 112: * @param data PA-TNC message data
! 113: */
! 114: pa_tnc_msg_t* pa_tnc_msg_create_from_data(chunk_t data);
! 115:
! 116: #endif /** PA_TNC_MSG_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>