Annotation of embedaddon/strongswan/src/libipsec/ipsec_processor.h, revision 1.1.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>