ztp/include/ztp_config.h

94 lines
2.3 KiB
C

//
// Created by xajhu on 2019/11/18 0018.
//
#ifndef ZTP_CLIENT_ZTP_CONFIG_H
#define ZTP_CLIENT_ZTP_CONFIG_H
#include <libconfig.h>
#include "common.h"
#define DEVICE_ZTP_PATH ("../ztp.conf")
#define DEV_MAX_PORT (32)
#define MAX_IP_LEN (64)
typedef enum {
IPV4_TYPE = 0,
IPV6_TYPE = 1,
UNKNOWN_IP_TYPE = -1,
} IP_TYPE;
typedef enum {
LAN_PORT = 0,
WAN_PORT = 1,
UNKNOWN_PORT = -1,
} HARD_PORT_TYPE;
typedef enum {
DHCP_TYPE = 0,
STATIC_TYPE = 1,
PPPOE_TYPE = 2,
UNKNOWN_PRO_TYPE = -1,
} WAN_PRO_TYPE;
typedef struct {
char server_url[MAX_PATH * 2];
int port;
} ZTP_SERVER, *PZTP_SERVER;
typedef struct {
ZTP_SERVER svr_cfg;
char dev_dir[MAX_PATH];
} ZTP_CONFIG, *PZTP_CONFIG;
typedef struct {
int ip_type;
char ip_addr[MAX_IP_LEN];
char netmask[MAX_IP_LEN];
} DEV_LAN_CONFIG, *PDEV_LAN_CONFIG;
typedef struct {
int ip_type;
char ip_addr[MAX_IP_LEN];
char netmask[MAX_IP_LEN];
char gateway[MAX_IP_LEN];
char master_dns[MAX_IP_LEN];
char backup_dns[MAX_IP_LEN];
} STATIC_CONFIG, *PSTATIC_CONFIG;
typedef struct {
char username[MAX_PATH];
char password[MAX_PATH];
} PPPOE_CONFIG, *PPPPOE_CONFIG;
typedef struct {
int port_type;
int port_protocol;
union {
PPPOE_CONFIG pppoe_config;
STATIC_CONFIG static_config;
} wan_conf;
} DEV_PORT_CONFIG, *PDEV_PORT_CONFIG;
typedef struct {
DEV_PORT_CONFIG port_cfg[DEV_MAX_PORT];
DEV_LAN_CONFIG lan_config;
int total_ports;
} DEVICE_CONFIG, *PDEVICE_CONFIG;
int init_configure(const char *pPath);
int cfg_get_bool_value(config_t *pCfg, const char *pTags, int defValue);
int cfg_get_int_value(config_t *pCfg, const char *pTags, int defValue);
char *cfg_get_string_value(config_t *pCfg, const char *pTags, char *pDefValue);
double cfg_get_float_value(config_t *pCfg, const char *pTags, double defValue);
int cfg_get_array_int_value(config_t *pCfg, const char *pTags, int *pArray, int *pMaxItem);
int load_dev_config(const char *devId);
#endif //ZTP_CLIENT_ZTP_CONFIG_H