Annotation of embedaddon/strongswan/src/libimcv/plugins/imv_swima/imv_swima_state.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2017 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 imv_swima imv_swima
! 18: * @ingroup libimcv_plugins
! 19: *
! 20: * @defgroup imv_swima_state_t imv_swima_state
! 21: * @{ @ingroup imv_swima
! 22: */
! 23:
! 24: #ifndef IMV_SWIMA_STATE_H_
! 25: #define IMV_SWIMA_STATE_H_
! 26:
! 27: #include <imv/imv_state.h>
! 28: #include <swima/swima_inventory.h>
! 29: #include <swima/swima_events.h>
! 30: #include <library.h>
! 31:
! 32: #include <json.h>
! 33:
! 34: typedef struct imv_swima_state_t imv_swima_state_t;
! 35: typedef enum imv_swima_handshake_state_t imv_swima_handshake_state_t;
! 36:
! 37: /**
! 38: * IMV OS Handshake States (state machine)
! 39: */
! 40: enum imv_swima_handshake_state_t {
! 41: IMV_SWIMA_STATE_INIT,
! 42: IMV_SWIMA_STATE_WORKITEMS,
! 43: IMV_SWIMA_STATE_END
! 44: };
! 45:
! 46: /**
! 47: * Internal state of an imv_swima_t connection instance
! 48: */
! 49: struct imv_swima_state_t {
! 50:
! 51: /**
! 52: * imv_state_t interface
! 53: */
! 54: imv_state_t interface;
! 55:
! 56: /**
! 57: * Set state of the handshake
! 58: *
! 59: * @param new_state the handshake state of IMV
! 60: */
! 61: void (*set_handshake_state)(imv_swima_state_t *this,
! 62: imv_swima_handshake_state_t new_state);
! 63:
! 64: /**
! 65: * Get state of the handshake
! 66: *
! 67: * @return the handshake state of IMV
! 68: */
! 69: imv_swima_handshake_state_t (*get_handshake_state)(imv_swima_state_t *this);
! 70:
! 71: /**
! 72: * Set the SWID request ID
! 73: *
! 74: * @param request_id SWID request ID to be set
! 75: */
! 76: void (*set_request_id)(imv_swima_state_t *this, uint32_t request_id);
! 77:
! 78: /**
! 79: * Get the SWID request ID
! 80: *
! 81: * @return SWID request ID
! 82: */
! 83: uint32_t (*get_request_id)(imv_swima_state_t *this);
! 84:
! 85: /**
! 86: * Set or extend the SW ID inventory in the state
! 87: *
! 88: * @param inventory SW ID inventory to be added
! 89: */
! 90: void (*set_inventory)(imv_swima_state_t *this, swima_inventory_t *inventory);
! 91:
! 92: /**
! 93: * Set or extend the SW ID events in the state
! 94: *
! 95: * @param events SW ID events to be added
! 96: */
! 97: void (*set_events)(imv_swima_state_t *this, swima_events_t *events);
! 98:
! 99: /**
! 100: * Get the JSON encoding of the complete SW ID inventory or SW ID events
! 101: *
! 102: * @return JSON encoding
! 103: */
! 104: json_object* (*get_jrequest)(imv_swima_state_t *this);
! 105:
! 106: /**
! 107: * Set the number of still missing SW [ID] records or envents
! 108: *
! 109: * @param count Number of missing SW [ID] records or envents
! 110: */
! 111: void (*set_missing)(imv_swima_state_t *this, uint32_t count);
! 112:
! 113: /**
! 114: * Get the number of still missing SWID Tags or Tag IDs
! 115: *
! 116: * @result Number of missing SWID Tags or Tag IDs
! 117: */
! 118: uint32_t (*get_missing)(imv_swima_state_t *this);
! 119:
! 120: /**
! 121: * Set [or with multiple attributes increment] SWID Tag [ID] counters
! 122: *
! 123: * @param tag_id_count Number of received SWID Tag IDs
! 124: * @param tag_count Number of received SWID Tags
! 125: * @param imc_id SWID IMC ID
! 126: */
! 127: void (*set_count)(imv_swima_state_t *this, int tag_id_count, int tag_count,
! 128: TNC_UInt32 imc_id);
! 129:
! 130: /**
! 131: * Set [or with multiple attributes increment] SWID Tag [ID] counters
! 132: *
! 133: * @param tag_id_count Number of received SWID Tag IDs
! 134: * @param tag_count Number of received SWID Tags
! 135: */
! 136: void (*get_count)(imv_swima_state_t *this, int *tag_id_count, int *tag_count);
! 137:
! 138: /**
! 139: * Get SWID IMC ID
! 140: *
! 141: * @return SWID IMC ID
! 142: */
! 143: TNC_UInt32 (*get_imc_id)(imv_swima_state_t *this);
! 144:
! 145: /**
! 146: * Set or clear a subscription
! 147: *
! 148: * @param set TRUE sets and FALSE clears a subscripton
! 149: */
! 150: void (*set_subscription)(imv_swima_state_t *this, bool set);
! 151:
! 152: /**
! 153: * Get the subscription status
! 154: *
! 155: * @return TRUE if subscription is set
! 156: */
! 157: bool (*get_subscription)(imv_swima_state_t *this);
! 158: };
! 159:
! 160: /**
! 161: * Create an imv_swima_state_t instance
! 162: *
! 163: * @param id connection ID
! 164: */
! 165: imv_state_t* imv_swima_state_create(TNC_ConnectionID id);
! 166:
! 167: #endif /** IMV_SWIMA_STATE_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>