Annotation of embedaddon/strongswan/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_router.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2013 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 kernel_libipsec_router kernel_libipsec_router
18: * @{ @ingroup kernel_libipsec
19: */
20:
21: #ifndef KERNEL_LIBIPSEC_ROUTER_H_
22: #define KERNEL_LIBIPSEC_ROUTER_H_
23:
24: #include <kernel/kernel_listener.h>
25:
26: typedef struct kernel_libipsec_router_t kernel_libipsec_router_t;
27:
28: /**
29: * Class that routes the network packets between TUN device, libipsec and
30: * charon's IKE socket.
31: */
32: struct kernel_libipsec_router_t {
33:
34: /**
35: * Implements kernel_listener_t interface
36: */
37: kernel_listener_t listener;
38:
39: /**
40: * Get the name of the TUN device to be used with the given virtual IP.
41: *
42: * @param vip virtual IP
43: * @return allocated name
44: */
45: char *(*get_tun_name)(kernel_libipsec_router_t *this, host_t *vip);
46:
47: /**
48: * Destroy the given instance
49: */
50: void (*destroy)(kernel_libipsec_router_t *this);
51: };
52:
53: /**
54: * Single instance of this class, if created
55: */
56: extern kernel_libipsec_router_t *router;
57:
58: /**
59: * Create a kernel_libipsec_router_t instance.
60: *
61: * @return kernel_libipsec_router_t instance
62: */
63: kernel_libipsec_router_t *kernel_libipsec_router_create();
64:
65: #endif /** KERNEL_LIBIPSEC_ROUTER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>