secgateway/Platform/user/configm/config-server/nat_config/config.h

115 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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 */