Annotation of embedaddon/strongswan/src/libcharon/sa/trap_manager.h, revision 1.1.1.2
1.1 misho 1: /*
2: * Copyright (C) 2013-2017 Tobias Brunner
3: * Copyright (C) 2009 Martin Willi
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 trap_manager trap_manager
19: * @{ @ingroup sa
20: */
21:
22: #ifndef TRAP_MANAGER_H_
23: #define TRAP_MANAGER_H_
24:
25: #include <library.h>
26: #include <collections/enumerator.h>
27: #include <config/peer_cfg.h>
28:
29: typedef struct trap_manager_t trap_manager_t;
30:
31: /**
32: * Manage policies to create SAs from traffic.
33: */
34: struct trap_manager_t {
35:
36: /**
37: * Install a policy as a trap.
38: *
39: * @param peer peer configuration to initiate on trap
40: * @param child child configuration to install as a trap
41: * @return TRUE if successfully installed
42: */
43: bool (*install)(trap_manager_t *this, peer_cfg_t *peer, child_cfg_t *child);
44:
45: /**
46: * Uninstall a trap policy.
47: *
48: * If no peer configuration name is given the first matching child
49: * configuration is uninstalled.
50: *
51: * @param peer peer configuration name or NULL
52: * @param child child configuration name
53: * @return TRUE if uninstalled successfully
54: */
55: bool (*uninstall)(trap_manager_t *this, char *peer, char *child);
56:
57: /**
58: * Create an enumerator over all installed traps.
59: *
60: * @return enumerator over (peer_cfg_t, child_sa_t)
61: */
62: enumerator_t* (*create_enumerator)(trap_manager_t *this);
63:
64: /**
65: * Acquire an SA triggered by an installed trap.
66: *
1.1.1.2 ! misho 67: * @param reqid reqid of the triggering CHILD_SA
1.1 misho 68: * @param src source of the triggering packet
69: * @param dst destination of the triggering packet
70: */
71: void (*acquire)(trap_manager_t *this, uint32_t reqid,
72: traffic_selector_t *src, traffic_selector_t *dst);
73:
74: /**
75: * Clear any installed trap.
76: */
77: void (*flush)(trap_manager_t *this);
78:
79: /**
80: * Destroy a trap_manager_t.
81: */
82: void (*destroy)(trap_manager_t *this);
83: };
84:
85: /**
86: * Create a trap_manager instance.
87: */
88: trap_manager_t *trap_manager_create();
89:
90: #endif /** TRAP_MANAGER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>