OCT 1. 删除无用的DNS服务

2. 删除无用的OpenDHCPD配置
3. 增加DHCP服务编译配置
This commit is contained in:
黄昕 2023-05-18 10:09:17 +08:00
parent e02c12f582
commit 395f199ff7
15 changed files with 334 additions and 11199 deletions

View File

@ -4,8 +4,7 @@ INCLUDE(CMakeDependentOption)
OPTION(VCPE_AGENT "Enable vCPE agent test application" OFF) OPTION(VCPE_AGENT "Enable vCPE agent test application" OFF)
OPTION(VCPE_PPPOE "Enable vCPE work befof PPPoE mode" OFF) OPTION(VCPE_PPPOE "Enable vCPE work befof PPPoE mode" OFF)
OPTION(DHCP_TOOLS "Enable dhcp_tools for test dhcp servers with concurrency and multi-user" OFF) OPTION(DHCP_TOOLS "Enable dhcp_tools for test dhcp servers with concurrency and multi-user" OFF)
OPTION(USED_OPENDHCPD "DHCP server for vCPE" OFF) OPTION(USED_DHCPSERVER "DHCP server for vCPE" OFF)
OPTION(USED_OPENDHCPDDNS "DHCP And DNS server for vCPE" OFF)
OPTION(USED_USER_VNI "Support pass user vni id from console command line" OFF) OPTION(USED_USER_VNI "Support pass user vni id from console command line" OFF)
OPTION(USED_JSON_VALIDATE "Support json protocol field validate" OFF) OPTION(USED_JSON_VALIDATE "Support json protocol field validate" OFF)
OPTION(BUILD_TESTING "Enable tests" OFF) OPTION(BUILD_TESTING "Enable tests" OFF)
@ -14,7 +13,7 @@ OPTION(BUILD_TESTING "Enable tests" OFF)
OPTION(USED_REDIS "Add redis database support for vCPE" OFF) OPTION(USED_REDIS "Add redis database support for vCPE" OFF)
OPTION(USED_MYSQL "Add mysql database support for vCPE" OFF) OPTION(USED_MYSQL "Add mysql database support for vCPE" OFF)
OPTION(USED_SQLITE_CRYPTO "Sqlite3 database support crypto" OFF) OPTION(USED_SQLITE_CRYPTO "Sqlite3 database support crypto" OFF)
CMAKE_DEPENDENT_OPTION(USED_HTTP_SVR "Build-in http(s) server support" ON "USED_OPENDHCPD OR USED_OPENDHCPDDNS" ON) CMAKE_DEPENDENT_OPTION(USED_HTTP_SVR "Build-in http(s) server support" ON "USED_DHCPSERVER" ON)
CMAKE_DEPENDENT_OPTION(USED_LWIP "PPPoE of LWIP support for vCPE" ON "VCPE_PPPOE" OFF) CMAKE_DEPENDENT_OPTION(USED_LWIP "PPPoE of LWIP support for vCPE" ON "VCPE_PPPOE" OFF)
CMAKE_DEPENDENT_OPTION(USED_ZMQ "ZeroMQ support for vCPE" ON "VCPE_PPPOE" OFF) CMAKE_DEPENDENT_OPTION(USED_ZMQ "ZeroMQ support for vCPE" ON "VCPE_PPPOE" OFF)
CMAKE_DEPENDENT_OPTION(USED_SQLITE "Add sqlite3 database support for vCPE" ON "USED_SQLITE_CRYPTO" ON) CMAKE_DEPENDENT_OPTION(USED_SQLITE "Add sqlite3 database support for vCPE" ON "USED_SQLITE_CRYPTO" ON)
@ -115,16 +114,10 @@ IF (USED_LWIP)
MESSAGE("Select Option USED_LWIP") MESSAGE("Select Option USED_LWIP")
ENDIF () ENDIF ()
IF (USED_OPENDHCPD) IF (USED_DHCPSERVER)
LIST(APPEND COMMON_DEFINE "-DOPENDHCPD_ON") LIST(APPEND COMMON_DEFINE "-DDHCPD_ON")
MESSAGE("Select Option USED_OPENDHCPD") MESSAGE("Select Option USED_DHCPSERVER")
ADD_SUBDIRECTORY(srcs/opendhcp183) ADD_SUBDIRECTORY(srcs/service)
ENDIF ()
IF (USED_OPENDHCPDDNS)
LIST(APPEND COMMON_DEFINE "-DOPENDHCPDDNS_ON")
MESSAGE("Select Option USED_OPENDHCPDDNS")
ADD_SUBDIRECTORY(srcs/dual_server)
ENDIF () ENDIF ()
IF (VCPE_AGENT) IF (VCPE_AGENT)
@ -157,7 +150,6 @@ ENDIF ()
ADD_SUBDIRECTORY(srcs) ADD_SUBDIRECTORY(srcs)
ADD_SUBDIRECTORY(srcs/libs) ADD_SUBDIRECTORY(srcs/libs)
ADD_SUBDIRECTORY(srcs/service)
IF (DHCP_TOOLS) IF (DHCP_TOOLS)
ADD_SUBDIRECTORY(dhcp_tools) ADD_SUBDIRECTORY(dhcp_tools)

View File

@ -31,10 +31,6 @@ IF (USED_LWIP)
TARGET_LINK_LIBRARIES(${PROJECT_TARGET} lwip_linux) TARGET_LINK_LIBRARIES(${PROJECT_TARGET} lwip_linux)
ENDIF () ENDIF ()
IF (USED_OPENDHCPDDNS)
TARGET_LINK_LIBRARIES(${PROJECT_TARGET} dualserverd)
ENDIF ()
IF (USED_OPENDHCPD) IF (USED_OPENDHCPD)
TARGET_LINK_LIBRARIES(${PROJECT_TARGET} opendhcpd) TARGET_LINK_LIBRARIES(${PROJECT_TARGET} opendhcpd)
ENDIF () ENDIF ()

View File

@ -1,13 +0,0 @@
SET(DHCPD_PROJECT_TARGET dualserverd)
PROJECT(${DHCPD_PROJECT_TARGET} CXX)
INCLUDE_DIRECTORIES(../libs/include ./)
FILE(GLOB DHCPD_HEADS ./*.h)
ADD_DEFINITIONS(-Wno-format-overflow -std=c++11)
#ADD_EXECUTABLE(${PROJECT_TARGET} opendhcpd.cpp ${DHCPD_HEADS})
ADD_LIBRARY(${DHCPD_PROJECT_TARGET} dualserverd.cpp ${DHCPD_HEADS})
#TARGET_LINK_LIBRARIES(${PROJECT_TARGET} -lpthread)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
//
// Created by xajhuang on 2022/10/26.
//
#ifndef VCPE_PROJECT_DUALSVR_H
#define VCPE_PROJECT_DUALSVR_H
#define API_PUBLIC __attribute__((visibility("default")))
#define API_EXPORT API_PUBLIC
#ifdef __cplusplus
extern "C" {
#endif
API_EXPORT int dual_server_main(int argc, char **argv);
#ifdef __cplusplus
}
#endif
#endif//VCPE_PROJECT_DUALSVR_H

View File

@ -166,7 +166,7 @@ typedef enum {
MODE_DHCP_CLIENT, MODE_DHCP_CLIENT,
MODE_DHCP_SERVER MODE_DHCP_SERVER
} DHCP_WORK_MODE; } DHCP_WORK_MODE;
int dhcpd_init(DHCP_WORK_MODE workMode); int dhcpd_init(DHCP_WORK_MODE workMode, const char *pIfName);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -78,8 +78,12 @@ IF (USED_JSON_VALIDATE)
ENDIF () ENDIF ()
IF (USED_OPENDHCPD) IF (USED_OPENDHCPD)
TARGET_LINK_LIBRARIES(${LIB_PROJECT_TARGET} opendhcpd)
ENDIF ()
IF (USED_DHCPSERVER)
#TARGET_LINK_LIBRARIES(${LIB_PROJECT_TARGET} opendhcpd) #TARGET_LINK_LIBRARIES(${LIB_PROJECT_TARGET} opendhcpd)
TARGET_LINK_LIBRARIES(${LIB_PROJECT_TARGET} dhcpd opendhcpd) TARGET_LINK_LIBRARIES(${LIB_PROJECT_TARGET} dhcpd)
ENDIF () ENDIF ()
TARGET_INCLUDE_DIRECTORIES(${LIB_PROJECT_TARGET} PUBLIC ${PROJECT_BINARY_DIR}/ ${CMAKE_BINARY_DIR}/) TARGET_INCLUDE_DIRECTORIES(${LIB_PROJECT_TARGET} PUBLIC ${PROJECT_BINARY_DIR}/ ${CMAKE_BINARY_DIR}/)

View File

@ -3,8 +3,11 @@
// //
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L #if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
#include <openssl/crypto.h> #include <openssl/crypto.h>
#else #else
#include <openssl/opensslv.h> #include <openssl/opensslv.h>
#endif #endif
@ -26,6 +29,7 @@
#define REG_ICASE (ARG_REX_ICASE) #define REG_ICASE (ARG_REX_ICASE)
typedef void (*HelpCmdCb)(void *, const char *, void *); typedef void (*HelpCmdCb)(void *, const char *, void *);
typedef int (*ProcessCmdCb)(void **, const char *, void *); typedef int (*ProcessCmdCb)(void **, const char *, void *);
typedef struct { typedef struct {
@ -364,6 +368,34 @@ static int on_cmd6(void *pTbl[], const char *pName, void *pInfo) {
return ERR_MENU_EXIT; return ERR_MENU_EXIT;
} }
#ifdef DHCPD_ON
static int on_cmd8(void *pTbl[], const char *pName, void *pInfo) {
int ret;
PARG_TBL_INFO pArg = (PARG_TBL_INFO)pInfo;
const char *pCfgFile = ((arg_file_t *)pTbl[1])->filename[0];
const char *pCfgDir = ((arg_file_t *)pTbl[2])->filename[0];
const char *pIfName = ((arg_str_t *)pTbl[3])->sval[0];
const char *pKey = ((arg_str_t *)pTbl[4])->sval[0];
int help = get_help_cmd(pTbl, pArg)->count;
if (pArg->pHelp && help > 0) {
pArg->pHelp(pArg->argTbl, pName, pTbl);
return ERR_MENU_EXIT;
}
if ((ret = user_init(pCfgFile, pCfgDir, pKey, 0)) != ERR_SUCCESS) {
printf("System init error: %d\n", ret);
return ret;
}
dhcpd_init(MODE_DHCP_SERVER, pIfName);
return ERR_SUCCESS;
}
#endif
#ifdef OPENDHCPD_ON
typedef struct { typedef struct {
int mode; int mode;
const char *pIni; const char *pIni;
@ -371,12 +403,11 @@ typedef struct {
const char *pIfName; const char *pIfName;
} DHCPD_SETUP, *PDHCPD_SETUP; } DHCPD_SETUP, *PDHCPD_SETUP;
#ifdef OPENDHCPD_ON
static void dhcpd_task(void *pArg) { static void dhcpd_task(void *pArg) {
PDHCPD_SETUP p = (PDHCPD_SETUP)pArg; PDHCPD_SETUP p = (PDHCPD_SETUP)pArg;
if (p) { if (p) {
dhcpd_init(MODE_DHCP_SERVER); //dhcpd_init(MODE_DHCP_SERVER, p->pIfName);
//dhcpd_main(p->mode, p->pIni, p->pStatus, p->pIfName); //dhcpd_main(p->mode, p->pIni, p->pStatus, p->pIfName);
if (p->pIni) { if (p->pIni) {
@ -397,7 +428,7 @@ static void dhcpd_task(void *pArg) {
static int on_cmd7(void *pTbl[], const char *pName, void *pInfo) { static int on_cmd7(void *pTbl[], const char *pName, void *pInfo) {
int ret; int ret;
PDHCPD_SETUP p; // PDHCPD_SETUP p;
static uv_thread_t uvThread; static uv_thread_t uvThread;
PARG_TBL_INFO pArg = (PARG_TBL_INFO)pInfo; PARG_TBL_INFO pArg = (PARG_TBL_INFO)pInfo;
int mode = ((arg_lit_t *)pTbl[1])->count; int mode = ((arg_lit_t *)pTbl[1])->count;
@ -432,6 +463,8 @@ static int on_cmd7(void *pTbl[], const char *pName, void *pInfo) {
return ret; return ret;
} }
dhcpd_init(MODE_DHCP_SERVER, pIfName);
#if 0
p = (PDHCPD_SETUP)malloc(sizeof(DHCPD_SETUP)); p = (PDHCPD_SETUP)malloc(sizeof(DHCPD_SETUP));
if (p) { if (p) {
@ -441,7 +474,7 @@ static int on_cmd7(void *pTbl[], const char *pName, void *pInfo) {
p->pIfName = pIfName ? strdup(pIfName) : NULL; p->pIfName = pIfName ? strdup(pIfName) : NULL;
uv_thread_create(&uvThread, dhcpd_task, p); uv_thread_create(&uvThread, dhcpd_task, p);
} }
#endif
return ERR_SUCCESS; return ERR_SUCCESS;
} }
#endif #endif
@ -454,22 +487,14 @@ static int on_cmd_(void *pTbl[], const char *pName, void *pInfo) {
if (help > 0) { if (help > 0) {
show_help(pName); show_help(pName);
} else { } else {
printf("Application information: %s (Build: %s %s GCC Ver:%s) With %lu(bits) OS\n", printf("Application information: %s (Build: %s %s GCC Ver:%s) With %lu(bits) OS\n", VCPE_GIT_VERSION, __DATE__,
VCPE_GIT_VERSION, __TIME__, __VERSION__, sizeof(int *) * 8);
__DATE__,
__TIME__,
__VERSION__,
sizeof(int *) * 8);
#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L #if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
printf("OpenSSL information: %s (%s, %s)\n", printf("OpenSSL information: %s (%s, %s)\n", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_BUILT_ON),
OPENSSL_VERSION_TEXT,
SSLeay_version(SSLEAY_BUILT_ON),
SSLeay_version(SSLEAY_PLATFORM)); SSLeay_version(SSLEAY_PLATFORM));
#else #else
printf("OpenSSL information: %s (%s, %s)\n", printf("OpenSSL information: %s (%s, %s)\n", OPENSSL_VERSION_TEXT, OpenSSL_version(OPENSSL_BUILT_ON),
OPENSSL_VERSION_TEXT,
OpenSSL_version(OPENSSL_BUILT_ON),
OpenSSL_version(OPENSSL_PLATFORM)); OpenSSL_version(OPENSSL_PLATFORM));
#endif #endif
} }
@ -487,7 +512,8 @@ int menu_run(int argc, char **argv) {
******************************************************************/ ******************************************************************/
// clang-format off // clang-format off
arg_rex_t *cmd1 = arg_rex1(NULL, NULL, "start", NULL, REG_ICASE, NULL); arg_rex_t *cmd1 = arg_rex1(NULL, NULL, "start", NULL, REG_ICASE, NULL);
arg_file_t *cfgfile = arg_filen("c", "config", "[file]", 0, 1, "\tSpecify the current application configuration file path"); arg_file_t *cfgfile = arg_filen("c", "config", "[file]", 0, 1,
"\tSpecify the current application configuration file path");
arg_file_t *cfgdir = arg_file1("d", "directory", "<dir>", "\tSpecify the configuration directory path"); arg_file_t *cfgdir = arg_file1("d", "directory", "<dir>", "\tSpecify the configuration directory path");
arg_str_t *key1 = arg_str0("k", "key", "Key", "\tSpecify the configuration file cryptographic key."); arg_str_t *key1 = arg_str0("k", "key", "Key", "\tSpecify the configuration file cryptographic key.");
arg_lit_t *helpCmd1 = arg_lit0("h", "help", NULL); arg_lit_t *helpCmd1 = arg_lit0("h", "help", NULL);
@ -546,7 +572,8 @@ int menu_run(int argc, char **argv) {
arg_rem(NULL, "\t \033[4m3des_cbc\033[0m: 3DES CBC with PKCS7 padding"), arg_rem(NULL, "\t \033[4m3des_cbc\033[0m: 3DES CBC with PKCS7 padding"),
arg_rem(NULL, "\t \033[4m3des_ofb\033[0m: 3DES OFB with PKCS7 padding"), arg_rem(NULL, "\t \033[4m3des_ofb\033[0m: 3DES OFB with PKCS7 padding"),
arg_rem(NULL, "\t \033[4maes128_ecb\033[0m: 128 bit AES ECB with PKCS7 padding"), arg_rem(NULL, "\t \033[4maes128_ecb\033[0m: 128 bit AES ECB with PKCS7 padding"),
arg_rem(NULL, "\t \033[4maes128_ecb_sha1\033[0m: 128 bit AES ECB and used SHA1 key with PKCS7 padding"), arg_rem(NULL,
"\t \033[4maes128_ecb_sha1\033[0m: 128 bit AES ECB and used SHA1 key with PKCS7 padding"),
arg_rem(NULL, "\t \033[4maes128_cbc\033[0m: 128 bit AES CBC with PKCS7 padding"), arg_rem(NULL, "\t \033[4maes128_cbc\033[0m: 128 bit AES CBC with PKCS7 padding"),
arg_rem(NULL, "\t \033[4maes128_ofb\033[0m: 128 bit AES OFB with PKCS7 padding"), arg_rem(NULL, "\t \033[4maes128_ofb\033[0m: 128 bit AES OFB with PKCS7 padding"),
arg_rem(NULL, "\t \033[4maes192_ecb\033[0m: 192 bit AES ECB with PKCS7 padding"), arg_rem(NULL, "\t \033[4maes192_ecb\033[0m: 192 bit AES ECB with PKCS7 padding"),
@ -566,6 +593,18 @@ int menu_run(int argc, char **argv) {
void *pArgTbl6[] = {cmd6, keyGen, helpCmd6, end6}; void *pArgTbl6[] = {cmd6, keyGen, helpCmd6, end6};
int errCode6 = 0; int errCode6 = 0;
#ifdef DHCPD_ON
arg_rex_t *cmd8 = arg_rex1(NULL, NULL, "dhcpd", NULL, REG_ICASE, NULL);
arg_file_t *cfgfile8 = arg_filen("c", "config", "[file]", 0, 1, "\tSpecify the current application configuration file path");
arg_file_t *cfgdir8 = arg_file1("d", "directory", "<dir>", "\tSpecify the configuration directory path");
arg_str_t *ifname = arg_str1("n", "nic", "<ifname>", "\tSpecify the dhcpd service network interface name.");
arg_str_t *key8 = arg_str0("k", "key", "Key", "\tSpecify the configuration file cryptographic key.");
arg_lit_t *helpCmd8 = arg_lit0("h", "help", NULL);
arg_end_t *end8 = arg_end(20);
void *pArgTbl8[] = {cmd8, cfgfile8, cfgdir8,ifname, key8, helpCmd8, end8};
int errCode8 = 0;
#endif
#ifdef OPENDHCPD_ON #ifdef OPENDHCPD_ON
arg_rex_t *cmd7 = arg_rex1(NULL, NULL, "dhcpd", NULL, REG_ICASE, NULL); arg_rex_t *cmd7 = arg_rex1(NULL, NULL, "dhcpd", NULL, REG_ICASE, NULL);
arg_lit_t *operate7 = arg_lit0("m", "mode", "\tService works on verbatim mode."); arg_lit_t *operate7 = arg_lit0("m", "mode", "\tService works on verbatim mode.");
@ -592,15 +631,25 @@ int menu_run(int argc, char **argv) {
int errCode_ = 0; int errCode_ = 0;
ARG_TBL_INFO argTblInfo[] = { ARG_TBL_INFO argTblInfo[] = {
{pArgTbl1, ARRAY_SIZE(pArgTbl1), &errCode1, on_cmd1, cmdn_help, "\r \033[1;4;36mstart\033[0m: \033[1mRun agent service normally.\033[0m\n"}, {pArgTbl1, ARRAY_SIZE(pArgTbl1), &errCode1, on_cmd1, cmdn_help,
"\r \033[1;4;36mstart\033[0m: \033[1mRun agent service normally.\033[0m\n"},
#ifdef OPENDHCPD_ON #ifdef OPENDHCPD_ON
{pArgTbl7, ARRAY_SIZE(pArgTbl7), &errCode7, on_cmd7, cmdn_help, "\n \033[1;4;36mdhcpd\033[0m: \033[1mRun DHCP service normally.\033[0m\n"}, {pArgTbl7, ARRAY_SIZE(pArgTbl7), &errCode7, on_cmd7, cmdn_help, "\n \033[1;4;36mdhcpd\033[0m: \033[1mRun DHCP service normally.\033[0m\n"},
#endif #endif
{pArgTbl2, ARRAY_SIZE(pArgTbl2), &errCode2, on_cmd2, cmd2_help, "\n \033[1;4;36mif\033[0m: \033[1mRun agent interface tools.\033[0m\n"}, #ifdef DHCPD_ON
{pArgTbl3, ARRAY_SIZE(pArgTbl3), &errCode3, on_cmd3, cmdn_help, "\n \033[1;4;36mbase64\033[0m: \033[1mString base64 encode/decode.\033[0m\n"}, {pArgTbl8, ARRAY_SIZE(pArgTbl8), &errCode8, on_cmd8, cmdn_help,
{pArgTbl4, ARRAY_SIZE(pArgTbl4), &errCode4, on_cmd4, cmdn_help, "\n \033[1;4;36mhash\033[0m: \033[1mCalculate file's hash value.\033[0m\n"}, "\n \033[1;4;36mdhcpd\033[0m: \033[1mRun DHCP service normally.\033[0m\n"},
{pArgTbl5, ARRAY_SIZE(pArgTbl5), &errCode5, on_cmd5, cmdn_help, "\n \033[1;4;36mcipher\033[0m: \033[1mSymmetric cryptography for string.\033[0m\n"}, #endif
{pArgTbl6, ARRAY_SIZE(pArgTbl6), &errCode6, on_cmd6, cmdn_help, "\n \033[1;4;36mconfig\033[0m: \033[1mConfiguration file tools.\033[0m\n"}, {pArgTbl2, ARRAY_SIZE(pArgTbl2), &errCode2, on_cmd2, cmd2_help,
"\n \033[1;4;36mif\033[0m: \033[1mRun agent interface tools.\033[0m\n"},
{pArgTbl3, ARRAY_SIZE(pArgTbl3), &errCode3, on_cmd3, cmdn_help,
"\n \033[1;4;36mbase64\033[0m: \033[1mString base64 encode/decode.\033[0m\n"},
{pArgTbl4, ARRAY_SIZE(pArgTbl4), &errCode4, on_cmd4, cmdn_help,
"\n \033[1;4;36mhash\033[0m: \033[1mCalculate file's hash value.\033[0m\n"},
{pArgTbl5, ARRAY_SIZE(pArgTbl5), &errCode5, on_cmd5, cmdn_help,
"\n \033[1;4;36mcipher\033[0m: \033[1mSymmetric cryptography for string.\033[0m\n"},
{pArgTbl6, ARRAY_SIZE(pArgTbl6), &errCode6, on_cmd6, cmdn_help,
"\n \033[1;4;36mconfig\033[0m: \033[1mConfiguration file tools.\033[0m\n"},
{pArgTbl_, ARRAY_SIZE(pArgTbl_), &errCode_, on_cmd_, NULL, NULL}, {pArgTbl_, ARRAY_SIZE(pArgTbl_), &errCode_, on_cmd_, NULL, NULL},
}; };

View File

@ -114,7 +114,7 @@ static CFG_ITEM g_cfgItem[] = {
#endif #endif
DEF_CFG_ITEM(CFG_PROTO_CRYPTO, "protocol.crypto_type", VAL_INT, "0", "Protocol crypto algorithm"), DEF_CFG_ITEM(CFG_PROTO_CRYPTO, "protocol.crypto_type", VAL_INT, "0", "Protocol crypto algorithm"),
DEF_CFG_ITEM(CFG_PROTO_CRYPTO_KEY, "protocol.crypto_key", VAL_STR, "", "Protocol crypto keys"), DEF_CFG_ITEM(CFG_PROTO_CRYPTO_KEY, "protocol.crypto_key", VAL_STR, "", "Protocol crypto keys"),
#ifdef OPENDHCPD_ON #ifdef DHCPD_ON
// 配置DHCP服务器 // 配置DHCP服务器
DEF_CFG_ITEM(CFG_DHCP_LEASE_TIME, "dhcp_server.lease_time", VAL_INT, "36000", "DHCP server lease time"), DEF_CFG_ITEM(CFG_DHCP_LEASE_TIME, "dhcp_server.lease_time", VAL_INT, "36000", "DHCP server lease time"),
DEF_CFG_ITEM(CFG_DHCP_LISTEN_ON, "dhcp_server.listen_on", VAL_ARRAY_STR, "", "DHCP listen interface"), DEF_CFG_ITEM(CFG_DHCP_LISTEN_ON, "dhcp_server.listen_on", VAL_ARRAY_STR, "", "DHCP listen interface"),
@ -257,7 +257,7 @@ static int load_array_obj(const char *pKeyName, PCONFIG_ITEM pValue) {
config_setting_t *pObj = config_setting_get_elem(pItem, i); config_setting_t *pObj = config_setting_get_elem(pItem, i);
switch (pValue->cfgId) { switch (pValue->cfgId) {
#if OPENDHCPD_ON #if DHCPD_ON
case CFG_DHCP_RANGE_SET: { case CFG_DHCP_RANGE_SET: {
zvect_index idx = -1; zvect_index idx = -1;
const char *rangAddr, *subnet, *dnsSvr, *gateway; const char *rangAddr, *subnet, *dnsSvr, *gateway;

View File

@ -29,7 +29,7 @@ const char *config_get_proto_crypto_key() {
return cfg_get_string_value(CFG_PROTO_CRYPTO_KEY); return cfg_get_string_value(CFG_PROTO_CRYPTO_KEY);
} }
#if OPENDHCPD_ON #if DHCPD_ON
unsigned int config_get_dhcp_server_lease_time() { unsigned int config_get_dhcp_server_lease_time() {
return cfg_get_integral_value(CFG_DHCP_LEASE_TIME); return cfg_get_integral_value(CFG_DHCP_LEASE_TIME);
} }

View File

@ -75,7 +75,7 @@ typedef enum {
#endif #endif
CFG_PROTO_CRYPTO, CFG_PROTO_CRYPTO,
CFG_PROTO_CRYPTO_KEY, CFG_PROTO_CRYPTO_KEY,
#ifdef OPENDHCPD_ON #ifdef DHCPD_ON
CFG_DHCP_LEASE_TIME, CFG_DHCP_LEASE_TIME,
CFG_DHCP_LISTEN_ON, CFG_DHCP_LISTEN_ON,
CFG_DHCP_REPLICATION_SVR, CFG_DHCP_REPLICATION_SVR,
@ -148,7 +148,7 @@ const char *config_get_proto_crypto_key();
void cfg_set_user_vni_id(int vni); void cfg_set_user_vni_id(int vni);
int cfg_get_user_vni_id(); int cfg_get_user_vni_id();
#endif #endif
#ifdef OPENDHCPD_ON #ifdef DHCPD_ON
unsigned int config_get_dhcp_server_lease_time(); unsigned int config_get_dhcp_server_lease_time();
c_vector config_get_dhcp_server_range_set(); c_vector config_get_dhcp_server_range_set();
c_vector config_get_dhcp_listen_on(); c_vector config_get_dhcp_listen_on();

View File

@ -30,7 +30,7 @@ STRING(REPLACE ";" "," SUPPORTED_OPTIONAL_STR "${SUPPORTED_OPTIONAL}")
ADD_LIBRARY(jsoncdac STATIC ${jsoncdac_SOURCES}) ADD_LIBRARY(jsoncdac STATIC ${jsoncdac_SOURCES})
TARGET_COMPILE_DEFINITIONS(jsoncdac PRIVATE "SUPPORTED_KEYWORDS_BASE=\"${SUPPORTED_BASE_STR}\"" "SUPPORTED_KEYWORDS_OPTIONAL=\"${SUPPORTED_OPTIONAL_STR}\"") TARGET_COMPILE_DEFINITIONS(jsoncdac PRIVATE "SUPPORTED_KEYWORDS_BASE=\"${SUPPORTED_BASE_STR}\"" "SUPPORTED_KEYWORDS_OPTIONAL=\"${SUPPORTED_OPTIONAL_STR}\"")
TARGET_LINK_LIBRARIES(jsoncdac ${EXTRA_LIBS}) TARGET_LINK_LIBRARIES(jsoncdac ${EXTRA_LIBS} -lm)
SET_TARGET_PROPERTIES( SET_TARGET_PROPERTIES(
jsoncdac jsoncdac

View File

@ -3,7 +3,7 @@ INCLUDE_DIRECTORIES(. ../include ../libs/include ./dhcpd/include ../libs/mongoos
AUX_SOURCE_DIRECTORY(dhcpd DHCPD_SRC) AUX_SOURCE_DIRECTORY(dhcpd DHCPD_SRC)
ADD_DEFINITIONS(-DOPENDHCPD_ON) ADD_DEFINITIONS(-DDHCPD_ON)
ADD_DEFINITIONS(${COMMON_DEFINE}) ADD_DEFINITIONS(${COMMON_DEFINE})
ADD_LIBRARY(dhcpd ${DHCPD_SRC} ${DHCPD_HEADS} dhcpd/db_interface.c dhcpd/include/db_interface.h) ADD_LIBRARY(dhcpd ${DHCPD_SRC} ${DHCPD_HEADS} dhcpd/db_interface.c dhcpd/include/db_interface.h)

View File

@ -830,6 +830,8 @@ int create_udp_raw_socket(const char *pNicName) {
int err; int err;
int v = TPACKET_V3; int v = TPACKET_V3;
LOG_MOD(info, ZM_DHCP_NET, "DHCP working on interface %s\n", pNicName);
// 1. create socket // 1. create socket
int sock_fd = socket(PF_PACKET, SOCK_RAW, 0); int sock_fd = socket(PF_PACKET, SOCK_RAW, 0);
if (sock_fd < 0) { if (sock_fd < 0) {
@ -1002,14 +1004,19 @@ void init_raw_socket_poll(void *pRecv, void *pClean) {
uv_timer_start(&uvTm, socket_send_task, 3000, 100); uv_timer_start(&uvTm, socket_send_task, 3000, 100);
} }
int dhcpd_init(DHCP_WORK_MODE workMode) { int dhcpd_init(DHCP_WORK_MODE workMode, const char *pIfName) {
int ret; int ret;
size_t size = MAX_PATH; size_t size = MAX_PATH;
g_dhcpMode = workMode; g_dhcpMode = workMode;
memset(&g_nicInfo, 0, sizeof(NIC_INFO)); memset(&g_nicInfo, 0, sizeof(NIC_INFO));
g_nicInfo.pIfName = (char *)config_get_dhcp_nic_name(); if (pIfName && strlen(pIfName) > 0) {
g_nicInfo.pIfName = strdup(pIfName);
} else {
g_nicInfo.pIfName = strdup((char *) config_get_dhcp_nic_name());
}
uv_os_gethostname(g_nicInfo.hostname, &size); uv_os_gethostname(g_nicInfo.hostname, &size);
get_nic_info(g_nicInfo.pIfName, &g_nicInfo.ipAddr, &g_nicInfo.netmask, NULL, g_nicInfo.macAddr); get_nic_info(g_nicInfo.pIfName, &g_nicInfo.ipAddr, &g_nicInfo.netmask, NULL, g_nicInfo.macAddr);
@ -1047,5 +1054,9 @@ int dhcp_uninit() {
munmap(g_pkgRing.map_recv, size); munmap(g_pkgRing.map_recv, size);
if (g_nicInfo.pIfName) {
free(g_nicInfo.pIfName);
}
return ERR_SUCCESS; return ERR_SUCCESS;
} }