Annotation of embedaddon/strongswan/src/libipsec/ipsec_processor.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2012 Tobias Brunner
! 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 ipsec_processor ipsec_processor
! 18: * @{ @ingroup libipsec
! 19: */
! 20:
! 21: #ifndef IPSEC_PROCESSOR_H_
! 22: #define IPSEC_PROCESSOR_H_
! 23:
! 24: #include "ip_packet.h"
! 25: #include "esp_packet.h"
! 26:
! 27: typedef struct ipsec_processor_t ipsec_processor_t;
! 28:
! 29: /**
! 30: * Callback called to deliver an inbound plaintext packet.
! 31: *
! 32: * @param data data supplied during registration of the callback
! 33: * @param packet plaintext IP packet to deliver
! 34: */
! 35: typedef void (*ipsec_inbound_cb_t)(void *data, ip_packet_t *packet);
! 36:
! 37: /**
! 38: * Callback called to send an ESP packet.
! 39: *
! 40: * @note The ESP packet currently comes without IP header (and without UDP
! 41: * header in case of UDP encapsulation)
! 42: *
! 43: * @param data data supplied during registration of the callback
! 44: * @param packet ESP packet to send
! 45: */
! 46: typedef void (*ipsec_outbound_cb_t)(void *data, esp_packet_t *packet);
! 47:
! 48: /**
! 49: * IPsec processor
! 50: */
! 51: struct ipsec_processor_t {
! 52:
! 53: /**
! 54: * Queue an inbound ESP packet for processing.
! 55: *
! 56: * @param packet the ESP packet to process
! 57: */
! 58: void (*queue_inbound)(ipsec_processor_t *this, esp_packet_t *packet);
! 59:
! 60: /**
! 61: * Queue an outbound plaintext IP packet for processing.
! 62: *
! 63: * @param packet the plaintext IP packet
! 64: */
! 65: void (*queue_outbound)(ipsec_processor_t *this, ip_packet_t *packet);
! 66:
! 67: /**
! 68: * Register the callback used to deliver inbound plaintext packets.
! 69: *
! 70: * @param cb the inbound callback function
! 71: * @param data optional data provided to callback
! 72: */
! 73: void (*register_inbound)(ipsec_processor_t *this, ipsec_inbound_cb_t cb,
! 74: void *data);
! 75:
! 76: /**
! 77: * Unregister a previously registered inbound callback.
! 78: *
! 79: * @param cb previously registered callback function
! 80: */
! 81: void (*unregister_inbound)(ipsec_processor_t *this,
! 82: ipsec_inbound_cb_t cb);
! 83:
! 84: /**
! 85: * Register the callback used to send outbound ESP packets.
! 86: *
! 87: * @param cb the outbound callback function
! 88: * @param data optional data provided to callback
! 89: */
! 90: void (*register_outbound)(ipsec_processor_t *this, ipsec_outbound_cb_t cb,
! 91: void *data);
! 92:
! 93: /**
! 94: * Unregister a previously registered outbound callback.
! 95: *
! 96: * @param cb previously registered callback function
! 97: */
! 98: void (*unregister_outbound)(ipsec_processor_t *this,
! 99: ipsec_outbound_cb_t cb);
! 100:
! 101: /**
! 102: * Destroy an ipsec_processor_t.
! 103: */
! 104: void (*destroy)(ipsec_processor_t *this);
! 105:
! 106: };
! 107:
! 108: /**
! 109: * Create an ipsec_processor_t instance
! 110: *
! 111: * @return IPsec processor instance
! 112: */
! 113: ipsec_processor_t *ipsec_processor_create();
! 114:
! 115: #endif /** IPSEC_PROCESSOR_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>