Function added that allows to update VPN state via JNI
[strongswan.git] / src / frontends / android / jni / libandroidbridge / charonservice.h
1 /*
2 * Copyright (C) 2012 Tobias Brunner
3 * Copyright (C) 2012 Giuliano Grassi
4 * Copyright (C) 2012 Ralf Sager
5 * Hochschule fuer Technik Rapperswil
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 * for more details.
16 */
17
18 /**
19 * @defgroup libandroidbridge libandroidbridge
20 *
21 * @defgroup android_kernel kernel
22 * @ingroup libandroidbridge
23 *
24 * @defgroup charonservice charonservice
25 * @{ @ingroup libandroidbridge
26 */
27
28 #ifndef CHARONSERVICE_H_
29 #define CHARONSERVICE_H_
30
31 #include <library.h>
32
33 typedef enum android_vpn_state_t android_vpn_state_t;
34 typedef struct charonservice_t charonservice_t;
35
36 /**
37 * VPN status codes. As defined in CharonVpnService.java
38 */
39 enum android_vpn_state_t {
40 CHARONSERVICE_CHILD_STATE_UP = 1,
41 CHARONSERVICE_CHILD_STATE_DOWN,
42 CHARONSERVICE_AUTH_ERROR,
43 CHARONSERVICE_PEER_AUTH_ERROR,
44 CHARONSERVICE_LOOKUP_ERROR,
45 CHARONSERVICE_UNREACHABLE_ERROR,
46 CHARONSERVICE_GENERIC_ERROR,
47 };
48
49 /**
50 * Public interface of charonservice.
51 *
52 * Used to communicate with CharonVpnService via JNI
53 */
54 struct charonservice_t {
55
56 /**
57 * Update the status in the Java domain (UI)
58 *
59 * @param code status code
60 * @return TRUE on success
61 */
62 bool (*update_status)(charonservice_t *this, android_vpn_state_t code);
63
64 /**
65 * Install a bypass policy for the given socket using the protect() Method
66 * of the Android VpnService interface
67 *
68 * @param fd socket file descriptor
69 * @param family socket protocol family
70 * @return TRUE if operation successful
71 */
72 bool (*bypass_socket)(charonservice_t *this, int fd, int family);
73
74 };
75
76 /**
77 * The single instance of charonservice_t.
78 *
79 * Set between JNI calls to initializeCharon() and deinitializeCharon().
80 */
81 extern charonservice_t *charonservice;
82
83 #endif /** CHARONSERVICE_H_ @}*/