115 lines
2.4 KiB
C
115 lines
2.4 KiB
C
|
//
|
|||
|
// config.h
|
|||
|
//
|
|||
|
// Created by foxist on 2019/8/13.
|
|||
|
//
|
|||
|
|
|||
|
#ifndef config_h
|
|||
|
#define config_h
|
|||
|
|
|||
|
//#define NAT_DEBUG
|
|||
|
|
|||
|
#include <stdio.h>
|
|||
|
#include <string.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <stdarg.h>
|
|||
|
|
|||
|
#include <cjson/cJSON.h>
|
|||
|
|
|||
|
#ifndef NAT_DEBUG
|
|||
|
#include "rpc.h"
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef NAT_DEBUG
|
|||
|
typedef enum ret_code {
|
|||
|
RET_OK,
|
|||
|
RET_ERR,
|
|||
|
RET_NOMEM,
|
|||
|
RET_INPUTERR
|
|||
|
} ret_code;
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#define MAX_ERR_MSG 1024
|
|||
|
#define MAX_LINE_LEN 384
|
|||
|
#define MAX_ACTION 8
|
|||
|
#define MAX_ID 5
|
|||
|
#define MAX_CHAIN 15
|
|||
|
#define MAX_TARGET 15
|
|||
|
#define MAX_PROT 15
|
|||
|
#define MAX_ADDR 45
|
|||
|
#define MAX_IP 33
|
|||
|
#define MAX_PORT 5
|
|||
|
#define MAX_DEVICE 15
|
|||
|
#define MAX_MATCH 6
|
|||
|
#define MAX_MATCH_INFO 10
|
|||
|
#define IPT_PARANUM 14
|
|||
|
#define NF_PARANUM 8
|
|||
|
|
|||
|
#define SUCCESS 1
|
|||
|
#define FAIL 0
|
|||
|
|
|||
|
typedef unsigned char uchar;
|
|||
|
typedef char *iptables_rule;
|
|||
|
typedef int boolean;
|
|||
|
|
|||
|
struct ipt_config{
|
|||
|
char action[MAX_ACTION]; // 动作:0: delete, 1: add, 2: save, 3: restore
|
|||
|
|
|||
|
char id[MAX_ID]; // 配置删除id
|
|||
|
|
|||
|
char chain[MAX_CHAIN]; // 链
|
|||
|
char target[MAX_TARGET]; //
|
|||
|
char prot[MAX_PROT]; // 协议
|
|||
|
char source[MAX_IP]; // 源地址
|
|||
|
char destination[MAX_IP]; // 目的地址
|
|||
|
char sport[MAX_PORT];
|
|||
|
char dport[MAX_PORT]; // 端口号
|
|||
|
char to[MAX_ADDR];
|
|||
|
//union {
|
|||
|
char i_device[MAX_DEVICE];
|
|||
|
char o_device[MAX_DEVICE];
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
char match[MAX_MATCH];
|
|||
|
char match_info[MAX_MATCH_INFO];
|
|||
|
};
|
|||
|
|
|||
|
typedef struct range_ipt_config {
|
|||
|
int begin;
|
|||
|
int offset;
|
|||
|
|
|||
|
struct ipt_config conf;
|
|||
|
} range_ipt_config;
|
|||
|
|
|||
|
typedef struct ip_port {
|
|||
|
char ip[MAX_IP];
|
|||
|
char port[MAX_PORT];
|
|||
|
} ip_port;
|
|||
|
|
|||
|
typedef struct nf_conntrack {
|
|||
|
ip_port addr[4];
|
|||
|
|
|||
|
char prot[MAX_PROT];
|
|||
|
} nf_conntrack;
|
|||
|
|
|||
|
|
|||
|
/* ======================== PUBLIC API ============================*/
|
|||
|
|
|||
|
// 从iptables-save配置文件中,获取json格式的nat配置信息
|
|||
|
ret_code get_iptables_config(const char *json, const char * __restrict__ __filename,
|
|||
|
char *output, int *outlen, char **msg);
|
|||
|
|
|||
|
// 使用json数据格式,配置ipables nat
|
|||
|
ret_code set_iptables_config(const char *json, char **msg);
|
|||
|
|
|||
|
//ret_code get_nf_conntrack(const char * __restrict__ __filename,
|
|||
|
// char *output, int *outlen, char **msg);
|
|||
|
|
|||
|
// linux系统命令执行函数, 返回shell信息
|
|||
|
ret_code run_command(char *const cmd, char **msg);
|
|||
|
|
|||
|
#endif /* config_h */
|