Annotation of embedaddon/strongswan/src/libcharon/encoding/payloads/traffic_selector_substructure.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2005-2006 Martin Willi
                      3:  * Copyright (C) 2005 Jan Hutter
                      4:  * HSR Hochschule fuer Technik Rapperswil
                      5:  *
                      6:  * This program is free software; you can redistribute it and/or modify it
                      7:  * under the terms of the GNU General Public License as published by the
                      8:  * Free Software Foundation; either version 2 of the License, or (at your
                      9:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                     10:  *
                     11:  * This program is distributed in the hope that it will be useful, but
                     12:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     13:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     14:  * for more details.
                     15:  */
                     16: 
                     17: /**
                     18:  * @defgroup traffic_selector_substructure traffic_selector_substructure
                     19:  * @{ @ingroup payloads
                     20:  */
                     21: 
                     22: #ifndef TRAFFIC_SELECTOR_SUBSTRUCTURE_H_
                     23: #define TRAFFIC_SELECTOR_SUBSTRUCTURE_H_
                     24: 
                     25: typedef struct traffic_selector_substructure_t traffic_selector_substructure_t;
                     26: 
                     27: #include <library.h>
                     28: #include <networking/host.h>
                     29: #include <selectors/traffic_selector.h>
                     30: #include <encoding/payloads/payload.h>
                     31: 
                     32: /**
                     33:  * Class representing an IKEv2 TRAFFIC SELECTOR.
                     34:  *
                     35:  * The TRAFFIC SELECTOR format is described in RFC section 3.13.1.
                     36:  */
                     37: struct traffic_selector_substructure_t {
                     38:        /**
                     39:         * The payload_t interface.
                     40:         */
                     41:        payload_t payload_interface;
                     42: 
                     43:        /**
                     44:         * Get the type of Traffic selector.
                     45:         *
                     46:         * @return                      type of traffic selector
                     47:         *
                     48:         */
                     49:        ts_type_t (*get_ts_type) (traffic_selector_substructure_t *this);
                     50: 
                     51:        /**
                     52:         * Set the type of Traffic selector.
                     53:         *
                     54:         * @param ts_type       type of traffic selector
                     55:         */
                     56:        void (*set_ts_type) (traffic_selector_substructure_t *this,
                     57:                                                 ts_type_t ts_type);
                     58: 
                     59:        /**
                     60:         * Get the IP protocol ID of Traffic selector.
                     61:         *
                     62:         * @return                      type of traffic selector
                     63:         *
                     64:         */
                     65:        uint8_t (*get_protocol_id) (traffic_selector_substructure_t *this);
                     66: 
                     67:        /**
                     68:         * Set the IP protocol ID of Traffic selector
                     69:         *
                     70:         * @param protocol_id   protocol ID of traffic selector
                     71:         */
                     72:        void (*set_protocol_id) (traffic_selector_substructure_t *this,
                     73:                                                          uint8_t protocol_id);
                     74: 
                     75:        /**
                     76:         * Get the start port and address as host_t object.
                     77:         *
                     78:         * Returned host_t object has to get destroyed by the caller.
                     79:         *
                     80:         * @return                      start host as host_t object
                     81:         *
                     82:         */
                     83:        host_t *(*get_start_host) (traffic_selector_substructure_t *this);
                     84: 
                     85:        /**
                     86:         * Set the start port and address as host_t object.
                     87:         *
                     88:         * @param start_host    start host as host_t object
                     89:         */
                     90:        void (*set_start_host) (traffic_selector_substructure_t *this,
                     91:                                                        host_t *start_host);
                     92: 
                     93:        /**
                     94:         * Get the end port and address as host_t object.
                     95:         *
                     96:         * Returned host_t object has to get destroyed by the caller.
                     97:         *
                     98:         * @return                      end host as host_t object
                     99:         *
                    100:         */
                    101:        host_t *(*get_end_host) (traffic_selector_substructure_t *this);
                    102: 
                    103:        /**
                    104:         * Set the end port and address as host_t object.
                    105:         *
                    106:         * @param end_host      end host as host_t object
                    107:         */
                    108:        void (*set_end_host) (traffic_selector_substructure_t *this,
                    109:                                                  host_t *end_host);
                    110: 
                    111:        /**
                    112:         * Get a traffic_selector_t from this substructure.
                    113:         *
                    114:         * @warning traffic_selector_t must be destroyed after usage.
                    115:         *
                    116:         * @return                      contained traffic_selector_t
                    117:         */
                    118:        traffic_selector_t *(*get_traffic_selector) (
                    119:                                                                                traffic_selector_substructure_t *this);
                    120: 
                    121:        /**
                    122:         * Destroys an traffic_selector_substructure_t object.
                    123:         */
                    124:        void (*destroy) (traffic_selector_substructure_t *this);
                    125: };
                    126: 
                    127: /**
                    128:  * Creates an empty traffic_selector_substructure_t object.
                    129:  *
                    130:  * TS type is set to default TS_IPV4_ADDR_RANGE!
                    131:  *
                    132:  * @return                                     traffic_selector_substructure_t object
                    133:  */
                    134: traffic_selector_substructure_t *traffic_selector_substructure_create(void);
                    135: 
                    136: /**
                    137:  * Creates an initialized traffic selector substructure using
                    138:  * the values from a traffic_selector_t.
                    139:  *
                    140:  * @param traffic_selector     traffic_selector_t to use for initialization
                    141:  * @return                                     traffic_selector_substructure_t object
                    142:  */
                    143: traffic_selector_substructure_t *traffic_selector_substructure_create_from_traffic_selector(
                    144:                                                                                traffic_selector_t *traffic_selector);
                    145: 
                    146: #endif /** TRAFFIC_SELECTOR_SUBSTRUCTURE_H_ @}*/

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