Annotation of embedaddon/strongswan/src/libcharon/sa/ike_sa_id.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2012 Tobias Brunner
! 3: * Copyright (C) 2005-2006 Martin Willi
! 4: * Copyright (C) 2005 Jan Hutter
! 5: * HSR Hochschule fuer Technik Rapperswil
! 6: *
! 7: * This program is free software; you can redistribute it and/or modify it
! 8: * under the terms of the GNU General Public License as published by the
! 9: * Free Software Foundation; either version 2 of the License, or (at your
! 10: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
! 11: *
! 12: * This program is distributed in the hope that it will be useful, but
! 13: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 14: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! 15: * for more details.
! 16: */
! 17:
! 18: /**
! 19: * @defgroup ike_sa_id ike_sa_id
! 20: * @{ @ingroup sa
! 21: */
! 22:
! 23: #ifndef IKE_SA_ID_H_
! 24: #define IKE_SA_ID_H_
! 25:
! 26: typedef struct ike_sa_id_t ike_sa_id_t;
! 27:
! 28: #include <library.h>
! 29:
! 30: /**
! 31: * An object of type ike_sa_id_t is used to identify an IKE_SA.
! 32: *
! 33: * An IKE_SA is identified by its initiator and responder SPIs.
! 34: * Additionally, it contains the major IKE version of the IKE_SA and, for IKEv2,
! 35: * the role of the daemon (original initiator or responder).
! 36: */
! 37: struct ike_sa_id_t {
! 38:
! 39: /**
! 40: * Get the major IKE version of this IKE_SA.
! 41: *
! 42: * @return IKE version
! 43: */
! 44: uint8_t (*get_ike_version) (ike_sa_id_t *this);
! 45:
! 46: /**
! 47: * Set the SPI of the responder.
! 48: *
! 49: * This function is called when a request or reply of a IKE_SA_INIT is received.
! 50: *
! 51: * @param responder_spi SPI of responder to set
! 52: */
! 53: void (*set_responder_spi) (ike_sa_id_t *this, uint64_t responder_spi);
! 54:
! 55: /**
! 56: * Set the SPI of the initiator.
! 57: *
! 58: * @param initiator_spi SPI to set
! 59: */
! 60: void (*set_initiator_spi) (ike_sa_id_t *this, uint64_t initiator_spi);
! 61:
! 62: /**
! 63: * Get the initiator SPI.
! 64: *
! 65: * @return SPI of the initiator
! 66: */
! 67: uint64_t (*get_initiator_spi) (ike_sa_id_t *this);
! 68:
! 69: /**
! 70: * Get the responder SPI.
! 71: *
! 72: * @return SPI of the responder
! 73: */
! 74: uint64_t (*get_responder_spi) (ike_sa_id_t *this);
! 75:
! 76: /**
! 77: * Check if two ike_sa_id_t objects are equal.
! 78: *
! 79: * Two ike_sa_id_t objects are equal if version and both SPI values match.
! 80: * The role is not compared.
! 81: *
! 82: * @param other ike_sa_id_t object to check if equal
! 83: * @return TRUE if given ike_sa_id_t are equal,
! 84: * FALSE otherwise
! 85: */
! 86: bool (*equals) (ike_sa_id_t *this, ike_sa_id_t *other);
! 87:
! 88: /**
! 89: * Replace all values of a given ike_sa_id_t object with values
! 90: * from another ike_sa_id_t object.
! 91: *
! 92: * After calling this function, both objects are equal.
! 93: *
! 94: * @param other ike_sa_id_t object from which values will be taken
! 95: */
! 96: void (*replace_values) (ike_sa_id_t *this, ike_sa_id_t *other);
! 97:
! 98: /**
! 99: * Get the initiator flag.
! 100: *
! 101: * @return TRUE if we are the original initiator
! 102: */
! 103: bool (*is_initiator) (ike_sa_id_t *this);
! 104:
! 105: /**
! 106: * Switch the original initiator flag.
! 107: *
! 108: * @return new value if initiator flag.
! 109: */
! 110: bool (*switch_initiator) (ike_sa_id_t *this);
! 111:
! 112: /**
! 113: * Clones a given ike_sa_id_t object.
! 114: *
! 115: * @return cloned ike_sa_id_t object
! 116: */
! 117: ike_sa_id_t *(*clone) (ike_sa_id_t *this);
! 118:
! 119: /**
! 120: * Destroys an ike_sa_id_t object.
! 121: */
! 122: void (*destroy) (ike_sa_id_t *this);
! 123: };
! 124:
! 125: /**
! 126: * Creates an ike_sa_id_t object.
! 127: *
! 128: * @param ike_version major IKE version
! 129: * @param initiator_spi initiators SPI
! 130: * @param responder_spi responders SPI
! 131: * @param is_initiator TRUE if we are the original initiator
! 132: * @return ike_sa_id_t object
! 133: */
! 134: ike_sa_id_t * ike_sa_id_create(uint8_t ike_version, uint64_t initiator_spi,
! 135: uint64_t responder_spi, bool is_initiator);
! 136:
! 137: #endif /** IKE_SA_ID_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>