eap-radius: Add RADIUS Accounting session ID to Access-Request messages
[strongswan.git] / src / libcharon / plugins / eap_radius / eap_radius_accounting.h
1 /*
2 * Copyright (C) 2017-2018 Tobias Brunner
3 * HSR Hochschule fuer Technik Rapperswil
4 *
5 * Copyright (C) 2012 Martin Willi
6 * Copyright (C) 2012 revosec AG
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
19 /**
20 * @defgroup eap_radius_accounting eap_radius_accounting
21 * @{ @ingroup eap_radius
22 */
23
24 #ifndef EAP_RADIUS_ACCOUNTING_H_
25 #define EAP_RADIUS_ACCOUNTING_H_
26
27 #include <bus/listeners/listener.h>
28
29 typedef struct eap_radius_accounting_t eap_radius_accounting_t;
30
31 /**
32 * RADIUS accounting for IKE/IPsec.
33 */
34 struct eap_radius_accounting_t {
35
36 /**
37 * Implements listener_t.
38 */
39 listener_t listener;
40
41 /**
42 * Destroy a eap_radius_accounting_t.
43 */
44 void (*destroy)(eap_radius_accounting_t *this);
45 };
46
47 /**
48 * Create a eap_radius_accounting instance.
49 */
50 eap_radius_accounting_t *eap_radius_accounting_create();
51
52 /**
53 * Get the Accounting session ID for the given IKE_SA.
54 *
55 * @param ike_sa IKE_SA for which to determine the session ID
56 * @return allocated session ID
57 */
58 char *eap_radius_accounting_session_id(ike_sa_t *ike_sa);
59
60 /**
61 * Schedule Accounting interim updates for the given IKE_SA.
62 *
63 * @param ike_sa IKE_SA to send updates for
64 * @param interval interval for interim updates
65 */
66 void eap_radius_accounting_start_interim(ike_sa_t *ike_sa, uint32_t interval);
67
68 /**
69 * Add a Class attribute for the given IKE_SA.
70 *
71 * @param ike_sa IKE_SA for which the attribute was received
72 * @param cls Class attribute value
73 */
74 void eap_radius_accounting_add_class(ike_sa_t *ike_sa, chunk_t cls);
75
76 #endif /** EAP_RADIUS_ACCOUNTING_H_ @}*/