]> git.ipfire.org Git - thirdparty/strongswan.git/blame - src/libcharon/encoding/payloads/traffic_selector_substructure.h
Update copyright headers after acquisition by secunet
[thirdparty/strongswan.git] / src / libcharon / encoding / payloads / traffic_selector_substructure.h
CommitLineData
7da522ba 1/*
19ef2aec 2 * Copyright (C) 2022 Tobias Brunner
c71d53ba
MW
3 * Copyright (C) 2005-2006 Martin Willi
4 * Copyright (C) 2005 Jan Hutter
19ef2aec
TB
5 *
6 * Copyright (C) secunet Security Networks AG
7da522ba
JH
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
552cc11b
MW
19/**
20 * @defgroup traffic_selector_substructure traffic_selector_substructure
21 * @{ @ingroup payloads
22 */
7da522ba
JH
23
24#ifndef TRAFFIC_SELECTOR_SUBSTRUCTURE_H_
25#define TRAFFIC_SELECTOR_SUBSTRUCTURE_H_
26
382b4817
MW
27typedef struct traffic_selector_substructure_t traffic_selector_substructure_t;
28
db7ef624 29#include <library.h>
2e7cc07e 30#include <networking/host.h>
1125a0be 31#include <selectors/traffic_selector.h>
a44de0b9 32#include <selectors/sec_label.h>
1125a0be 33#include <encoding/payloads/payload.h>
7da522ba 34
7da522ba 35/**
552cc11b 36 * Class representing an IKEv2 TRAFFIC SELECTOR.
7daf5226 37 *
8a491129 38 * The TRAFFIC SELECTOR format is described in RFC section 3.13.1.
7da522ba
JH
39 */
40struct traffic_selector_substructure_t {
a44de0b9 41
7da522ba
JH
42 /**
43 * The payload_t interface.
44 */
45 payload_t payload_interface;
7daf5226 46
7da522ba 47 /**
a44de0b9 48 * Get a traffic_selector_t from this substructure if possible.
7daf5226 49 *
a44de0b9 50 * @warning the returned object must be destroyed after use
7da522ba 51 *
a44de0b9 52 * @return contained traffic_selector_t (NULL if type mismatch)
7da522ba 53 */
a44de0b9 54 traffic_selector_t *(*get_traffic_selector)(traffic_selector_substructure_t *this);
7daf5226 55
03283349 56 /**
a44de0b9 57 * Get a sec_label_t from this substructure if possible.
03283349 58 *
a44de0b9 59 * @warning the returned object must be destroyed after use
7daf5226 60 *
a44de0b9 61 * @return contained sec_label_t (NULL if type mismatch)
03283349 62 */
a44de0b9 63 sec_label_t *(*get_sec_label)(traffic_selector_substructure_t *this);
7daf5226 64
7da522ba 65 /**
552cc11b 66 * Destroys an traffic_selector_substructure_t object.
7da522ba
JH
67 */
68 void (*destroy) (traffic_selector_substructure_t *this);
69};
70
71/**
552cc11b 72 * Creates an empty traffic_selector_substructure_t object.
7da522ba
JH
73 *
74 * TS type is set to default TS_IPV4_ADDR_RANGE!
7daf5226 75 *
c3dc864e 76 * @return traffic_selector_substructure_t object
7da522ba 77 */
f768bdc3 78traffic_selector_substructure_t *traffic_selector_substructure_create(void);
7da522ba 79
03283349 80/**
a44de0b9 81 * Creates a traffic selector substructure based on a traffic_selector_t.
7daf5226 82 *
a44de0b9 83 * @param traffic_selector data to use
c3dc864e 84 * @return traffic_selector_substructure_t object
03283349 85 */
552cc11b
MW
86traffic_selector_substructure_t *traffic_selector_substructure_create_from_traffic_selector(
87 traffic_selector_t *traffic_selector);
7da522ba 88
a44de0b9
TB
89/**
90 * Creates a traffic selector substructure based on a sec_label_t.
91 *
92 * @param label data to use
93 * @return traffic_selector_substructure_t object
94 */
95traffic_selector_substructure_t *traffic_selector_substructure_create_from_sec_label(
96 sec_label_t *label);
97
1490ff4d 98#endif /** TRAFFIC_SELECTOR_SUBSTRUCTURE_H_ @}*/