| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <ctype.h> |
| #include <unistd.h> |
| #include <errno.h> |
| #include <netdb.h> |
| #include <fcntl.h> |
| #include <dirent.h> |
| #include <time.h> |
| #include "utils_xfrm.h" |
| |
| |
| /*flush all SA*/ |
| extern int setkey_flushSAD(void); |
| extern int setkey_flushSAD_xfrm(char * ipsec_type); |
| /*flush all SP*/ |
| extern int setkey_flushSPD(void); |
| extern int setkey_flushSPD_xfrm(void); |
| /*delete one SA entry*/ |
| extern int setkey_deleteSA(char * src,char * dst,char * ipsec_type,char * spi_src); |
| extern int setkey_deleteSA_xfrm(char * src,char * dst,char * ipsec_type,char * spi_src); |
| |
| /*delete one SP entry*/ |
| int setkey_deleteSP(char * src,char * dst,enum PROTOCOL_TYPE protocol,char * src_port,char * dst_port,char * direction); |
| int setkey_deleteSP_xfrm(char * src,char * dst,enum PROTOCOL_TYPE protocol,char * src_port,char * dst_port,char * direction); |
| |
| /*dump all SA */ |
| extern int dump_setkeySA(void); |
| |
| /*dump all SP */ |
| extern int dump_setkeySP(void); |
| |
| /*set one SA*/ |
| /*ipsec_type:ah esp |
| mode:transport tunnel |
| encrp_algo_src:encryption algorithm,des-cbc,3des-cbc... |
| encrp_algo_src:key of encryption algorithm |
| intergrity_algo_src:authentication algorithm ,hmac-md5,hmac-sha1 |
| intergrity_key_src:key of authentication algorithm |
| */ |
| extern int setkey_setSA(char * ip_src,char * ip_dst,char * ipsec_type,char * spi_src,char * mode, char * encrp_algo_src,char * encrp_key_src,char * intergrity_algo_src,char * intergrity_key_src,int u_id); |
| extern int setkey_setSA_xfrm(int cmd,char * ip_src,char * ip_dst,char * ipsec_type,char * spi_src,char * mode, char * encrp_algo_src,char * encrp_key_src,char * intergrity_algo_src,char * intergrity_key_src,int u_id); |
| |
| extern int setkey_setSA_update(char * ip_src,char * ip_dst,char * ipsec_type,char * spi_src,char * mode, |
| char * encrp_algo_src,char * encrp_key_src,char * intergrity_algo_src,char * intergrity_key_src,int u_id); |
| |
| /*set one SP of one direction just for transport mode*/ |
| /*protocol:tcp icmp udp icmp6 ip4 gre |
| direction:src->dst */ |
| extern int setkey_SP(char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * ipsec_type,char * mode, char * direction,int u_id); |
| extern int setkey_SP_xfrm(int cmd,char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * src_tunnel,char * dst_tunnel,char * ipsec_type,char * mode, char * direction,int u_id); |
| |
| /*set one SP of one direction, just for tunnel mode*/ |
| /*protocol:tcp icmp udp icmp6 ip4 gre |
| direction:src->dst |
| src_tunnel,dst_tunnel: tunnel src ip tunnel dst ip */ |
| extern int setkey_SP_tunnel(char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * src_tunnel,char * dst_tunnel,char * ipsec_type,char * mode, char * direction,int u_id); |
| |
| |
| /*set one SP of one direction, for 2 layers' ipsec--tunnel mode+transport mode or transport mode+tunnel mode*/ |
| /*protocol:tcp icmp udp icmp6 ip4 gre |
| direction:src->dst |
| src_tunnel,dst_tunnel: tunnel src ip tunnel dst ip */ |
| extern int setkey_SP_tunnel_transport(char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * src_tunnel,char * dst_tunnel,char * ipsec_type1,char * mode1, char * ipsec_type2,char * mode2,char * direction,int u_id1,int u_id2); |
| |
| /*update one SP of one direction, just for transport mode*/ |
| /*protocol:tcp icmp udp icmp6 ip4 gre |
| direction:src->dst*/ |
| int setkey_SP_update_transport(char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * ipsec_type, char * direction,int u_id); |
| |
| |
| /*update one SP of one direction, for 2 layers' ipsec--tunnel mode+transport mode or transport mode+tunnel mode*/ |
| /*protocol:tcp icmp udp icmp6 ip4 gre |
| direction:src->dst |
| src_tunnel,dst_tunnel: tunnel src ip tunnel dst ip */ |
| int setkey_SP_update_tunnel_transport(char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * src_tunnel,char * dst_tunnel,char * ipsec_type1,char * mode1, char * ipsec_type2,char * mode2,char * direction,int u_id1,int u_id2); |
| int setkey_SP_2layer_xfrm(int cmd,char * src_range,char * dst_range,enum PROTOCOL_TYPE protocol,char * port_src,char * port_dst,char * src_tunnel,char * dst_tunnel,char * ipsec_type1,char * mode1, char * ipsec_type2,char * mode2,char * direction,int u_id1,int u_id2); |
| |
| /*flush SA\SP from setkey.conf*/ |
| extern int flush_SA_SP_exist(); |
| extern int flush_SA_SP_exist_xfrm(); |
| |