ims_ipsec_pcscf: TCP support
[sip-router] / src / modules / ims_ipsec_pcscf / ipsec.h
1 /*
2  * IMS IPSEC PCSCF module
3  *
4  * Copyright (C) 2018 Alexander Yosifov
5  * Copyright (C) 2018 Tsvetomir Dimitrov
6  *
7  * This file is part of Kamailio, a free SIP server.
8  *
9  * Kamailio is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version
13  *
14  * Kamailio is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  */
24
25 #ifndef IMS_IPSEC_PCSCF_IPSEC
26 #define IMS_IPSEC_PCSCF_IPSEC
27
28 #include "../../core/str.h"
29
30
31 struct mnl_socket;
32
33 enum ipsec_policy_direction {
34     IPSEC_POLICY_DIRECTION_IN = 0,
35     IPSEC_POLICY_DIRECTION_OUT = 1
36 };
37
38
39 struct mnl_socket* init_mnl_socket();
40 void close_mnl_socket(struct mnl_socket* sock);
41 unsigned short kamailio_to_linux_proto(const unsigned short kamailio_proto);
42
43
44 int add_sa(struct mnl_socket* nl_sock,  unsigned short proto, str src_addr_param, str dest_addr_param, int s_port, int d_port, int long id, str ck, str ik);
45 int remove_sa(struct mnl_socket* nl_sock, str src_addr_param, str dest_addr_param, int s_port, int d_port, int long id);
46
47 int add_policy(struct mnl_socket* mnl_socket,  unsigned short proto, str src_addr_param, str dest_addr_param, int src_port, int dst_port, int long p_id, enum ipsec_policy_direction dir);
48 int remove_policy(struct mnl_socket* mnl_socket,  unsigned short proto, str src_addr_param, str dest_addr_param, int src_port, int dst_port, int long p_id, enum ipsec_policy_direction dir);
49
50 int clean_sa(struct mnl_socket*  mnl_socket);
51 int clean_policy(struct mnl_socket*  mnl_socket);
52
53 #endif /* IMS_IPSEC_PCSCF_IPSEC */