Annotation of embedaddon/strongswan/src/libcharon/sa/ikev1/tasks/quick_mode.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2015-2019 Tobias Brunner
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * Copyright (C) 2011 Martin Willi
                      6:  * Copyright (C) 2011 revosec AG
                      7:  *
                      8:  * This program is free software; you can redistribute it and/or modify it
                      9:  * under the terms of the GNU General Public License as published by the
                     10:  * Free Software Foundation; either version 2 of the License, or (at your
                     11:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                     12:  *
                     13:  * This program is distributed in the hope that it will be useful, but
                     14:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     15:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     16:  * for more details.
                     17:  */
                     18: 
                     19: /**
                     20:  * @defgroup quick_mode quick_mode
                     21:  * @{ @ingroup tasks_v1
                     22:  */
                     23: 
                     24: #ifndef QUICK_MODE_H_
                     25: #define QUICK_MODE_H_
                     26: 
                     27: typedef struct quick_mode_t quick_mode_t;
                     28: 
                     29: #include <library.h>
                     30: #include <sa/ike_sa.h>
                     31: #include <sa/task.h>
                     32: 
                     33: /**
                     34:  * IKEv1 quick mode, establishes a CHILD_SA in IKEv1.
                     35:  */
                     36: struct quick_mode_t {
                     37: 
                     38:        /**
                     39:         * Implements the task_t interface
                     40:         */
                     41:        task_t task;
                     42: 
                     43:        /**
                     44:         * Get the message ID of the quick mode exchange handled by this task as
                     45:         * responder.
                     46:         *
                     47:         * @return                              message ID, or 0 (not defined yet or as initiator)
                     48:         */
                     49:        uint32_t (*get_mid)(quick_mode_t *this);
                     50: 
                     51:        /**
                     52:         * Use a specific reqid to install this CHILD_SA.
                     53:         *
                     54:         * @param reqid                 reqid to use
                     55:         */
                     56:        void (*use_reqid)(quick_mode_t *this, uint32_t reqid);
                     57: 
                     58:        /**
                     59:         * Use specific mark values, overriding configuration.
                     60:         *
                     61:         * @param in                    inbound mark value
                     62:         * @param out                   outbound mark value
                     63:         */
                     64:        void (*use_marks)(quick_mode_t *this, uint32_t in, uint32_t out);
                     65: 
                     66:        /**
                     67:         * Use specific interface IDs, overriding configuration.
                     68:         *
                     69:         * @param in                    inbound interface ID
                     70:         * @param out                   outbound interface ID
                     71:         */
                     72:        void (*use_if_ids)(quick_mode_t *this, uint32_t in, uint32_t out);
                     73: 
                     74:        /**
                     75:         * Set the SPI of the old SA, if rekeying.
                     76:         *
                     77:         * @param spi                   spi of SA to rekey
                     78:         */
                     79:        void (*rekey)(quick_mode_t *this, uint32_t spi);
                     80: };
                     81: 
                     82: /**
                     83:  * Create a new quick_mode task.
                     84:  *
                     85:  * @param ike_sa               IKE_SA this task works for
                     86:  * @param config               child_cfg if task initiator, NULL if responder
                     87:  * @param tsi                  source of triggering packet, or NULL
                     88:  * @param tsr                  destination of triggering packet, or NULL
                     89:  * @return                             task to handle by the task_manager
                     90:  */
                     91: quick_mode_t *quick_mode_create(ike_sa_t *ike_sa, child_cfg_t *config,
                     92:                                                        traffic_selector_t *tsi, traffic_selector_t *tsr);
                     93: 
                     94: #endif /** QUICK_MODE_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>