parent
e02c12f582
commit
395f199ff7
|
@ -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)
|
||||||
|
|
|
@ -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 ()
|
||||||
|
|
|
@ -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
|
@ -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
|
|
|
@ -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
|
||||||
|
|
|
@ -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}/)
|
||||||
|
|
|
@ -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},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
|
@ -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;
|
||||||
}
|
}
|
Loading…
Reference in New Issue