summaryrefslogtreecommitdiff
path: root/include/mrl_redis.h
blob: 3a00432965960c2ba1d4ec7ad740d9e22255d677 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#ifndef __MRL_REDIS_H_
#define __MRL_REDIS_H_

#include "mrl_main.h"


struct mrl_nominee{
    int config_id;
    int addr_pool_id;
    int addr_type;
    char ip_addr[MRL_STR_IP_LEN];
    int is_valid;
    char effective_range[MRL_STR_EFFEC_RANGE_LEN];
    char op_time[MRL_DATE_LEN];
    int nominee_type;//0--snat_nominee;1--dnat_nominee
    int nominee_count;//��ǰ��ѡIP��DNAT_POLICY���ж�Ӧ������Ŀ��ֻ�е�ֵΪ1ʱ����DNAT_POLICYִ��ɾ������ʱ�ŻὫ��ӹ�ϣ��ht_nominee��ɾ��
};

struct mrl_snat_candidate{
    int config_id;
    int addr_pool_id;
    int addr_type;
    char ip_addr[MRL_STR_IP_LEN];//�ͻ���IP
    int location;
    int is_valid;
    char effective_range[MRL_STR_EFFEC_RANGE_LEN];
    char op_time[MRL_DATE_LEN];
};

struct mrl_dnat_policy{
    int config_id;
    int original_addr_type;
    char original_dest_ip[MRL_STR_IP_LEN];
    char original_dest_port[MRL_STR_PORT_LEN];
    char original_protocol[MRL_STR_PROT_LEN];
    char translated_user_type[MRL_STR_USER_TYPE_LEN];
    char translated_user_id[MRL_STR_USER_ID_LEN];
	char translated_dest_port[MRL_STR_PROT_LEN];
    int do_log;
    int action;
    int service;
    int is_valid;
    char effective_range[MRL_STR_EFFEC_RANGE_LEN];
    char op_time[MRL_DATE_LEN];
};

/*mrl�Ƿֲ�ʽ����Ϊ�˱�֤���������dnat_candidate��ͬ������Ҫһ��dnat_candidate��*/
struct mrl_dnat_candidate{
    int config_id;
    char ip_addr[MRL_STR_IP_LEN];
    int addr_type;
    int location;
    int is_valid;
    char effective_range[MRL_STR_EFFEC_RANGE_LEN];
    char op_time[MRL_DATE_LEN];
};


struct mrl_vxlan_info{
    int config_id;
    char back_ip[MRL_STR_IP_LEN];
    int back_type;
    uint64_t link_identity;
    int is_valid;
    char effective_range[MRL_STR_EFFEC_RANGE_LEN];
    char op_time[MRL_DATE_LEN];
};

struct mrl_mrl_ip{
    int config_id;
    char back_ip[MRL_STR_IP_LEN];
    int back_type;
    char mrl_ip[MRL_STR_IP_LEN];
    int is_valid;
    char effective_range[MRL_STR_EFFEC_RANGE_LEN];
    char op_time[MRL_DATE_LEN];
};


Maat_feather_t Maat_dynamic_feather_init(const char* redis_ip, uint16_t redis_port, int redis_index);
Maat_feather_t Maat_static_feather_init(const char* redis_ip, uint16_t redis_port, int redis_index);
int Maat_plugin_table(Maat_feather_t feather,const char* table_name,	Maat_start_callback_t *start,Maat_update_callback_t *update,Maat_finish_callback_t *finish,	void *u_para);


void snat_nominee_start_cb(int update_type,void* u_para);
void snat_nominee_update_cb(int table_id,const char *table_line,void *u_para);
void snat_nominee_finish_cb(void* u_para);

void snat_candidate_start_cb(int update_type,void* u_para);
void snat_candidate_update_cb(int table_id, const char *table_line, void *u_para);
void snat_candidate_finish_cb(void* u_para);

void dnat_policy_start_cb(int update_type,void* u_para);
void dnat_policy_update_cb(int table_id, const char *table_line, void *u_para);
void dnat_policy_finish_cb(void* u_para);

void dnat_candidate_start_cb(int update_type,void* u_para);
void dnat_candidate_update_cb(int table_id, const char *table_line, void *u_para);
void dnat_candidate_finish_cb(void* u_para);

void vxlan_info_start_cb(int update_type,void* u_para);
void vxlan_info_update_cb(int table_id, const char *table_line, void *u_para);
void vxlan_info_finish_cb(void* u_para);

void mrl_ip_info_start_cb(int update_type,void* u_para);
void mrl_ip_info_update_cb(int table_id, const char *table_line, void *u_para);
void mrl_ip_info_finish_cb(void* u_para);

bool mrl_identify_detect_pkt(struct streaminfo *mystream, const char * udp_pkt, struct mrl_tuple *tuple);

void mrl_construct_ir_mrl_ip(int mrl_ip_config_id, const char* back_ip, int back_type);
bool mrl_construct_ir_vxlan_info(int cfg_id, uint64_t link_identity,const char* back_ip, int back_type);

#endif