From 0f3c0bb217d4cfdafc07612fdd16f17ebe6f571b Mon Sep 17 00:00:00 2001 From: wuqihy Date: Wed, 28 Aug 2019 16:28:37 +0800 Subject: [PATCH] =?UTF-8?q?Add=20aaa-12=20=E5=A2=9E=E5=8A=A0dhcp=E7=BD=91?= =?UTF-8?q?=E6=A1=A5=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C=20SOL=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0dhcp=E7=BD=91=E6=A1=A5=E5=88=A0=E9=99=A4=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Awuqihy=20?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9Ayinbin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wuqihy --- Platform/build/user.configm.Makefile | 2 +- .../config-server/dhcp_config/dhcp_lib.c | 41 ++++++++++++ .../configm/config-server/include/configm.h | 62 ++++++++++++++++++- .../configm/config-server/include/dhcp_lib.h | 13 ++++ 4 files changed, 115 insertions(+), 3 deletions(-) diff --git a/Platform/build/user.configm.Makefile b/Platform/build/user.configm.Makefile index cea8c2a28..763832f3f 100755 --- a/Platform/build/user.configm.Makefile +++ b/Platform/build/user.configm.Makefile @@ -39,7 +39,7 @@ COMMON_SRCS = configserver.c \ log_config/log_config_console.c log_config/log_config_init.c log_config/log_config_cm.c log_config/log_config_monitor.c log_config/log_config_remote.c log_config/log_config_file.c \ nat_config/natconfig.c \ vlan_config/vlan_config.c \ - + dhcp_config/dhcp_client_config.c dhcp_config/dhcp_dhcpd_lease.c dhcp_config/dhcp_host_config.c dhcp_config/dhcp_lib.c dhcp_config/dhcp_relay_config.c dhcp_config/dhcp_shared_network_config.c dhcp_config/dhcp_subnet_config.c\ # MRS Board Source Files PLAT_LINUX_SRCS = $(COMMON_SRCS) PLAT_ARM64_SRCS = $(COMMON_SRCS) diff --git a/Platform/user/configm/config-server/dhcp_config/dhcp_lib.c b/Platform/user/configm/config-server/dhcp_config/dhcp_lib.c index c25d43113..dc61a9c5b 100644 --- a/Platform/user/configm/config-server/dhcp_config/dhcp_lib.c +++ b/Platform/user/configm/config-server/dhcp_config/dhcp_lib.c @@ -1,5 +1,46 @@ #include "dhcp_lib.h" +void dhcp_config_init(void) +{ + ret_code ret = RET_OK; + ret = br_event_register(BR_DELETE_EVENT_PRE,del_interface_dhcp_cb); +} + +int del_interface_dhcp_cb(BR_EVENT_TYPE event_type, br_event_t event_arg) +{ + ret_code ret = RET_OK; + char *segment = get_interface_subnet(event_arg.br_name); + if(NULL == segment){ + return ret; + } + char *mask = get_interface_mask(event_arg.br_name); + if(NULL == mask){ + return ret; + } + int len = 500; + char *cmd = (char *)malloc(len + 1); + if(NULL == cmd) + { + return RET_ERR; + } + + memset(cmd, 0, len + 1); + snprintf(cmd, len, "sed -r -i 's/%s //g' /etc/default/isc-dhcp-server", event_arg.br_name); + system(cmd); + memset(cmd, 0, len + 1); + snprintf(cmd, len, "sed -r -i ':a;N;$!ba;s/[ \\t]*subnet[ \\t]+%s[ \\t]+netmask[ \\t]+%s[ \\t]*\\{[a-zA-Z#:; \\t\\n0-9\\.\\,\\-]+\\}/#/g' /etc/dhcp/dhcpd.conf", segment, mask); + system(cmd); + system("sed -r -i '/#/d' /etc/dhcp/dhcpd.conf"); + if(segment){ + free(segment); + } + if(mask){ + free(mask); + } + /*ÔËÐÐÅäÖÃÎļþ*/ + system("service isc-dhcp-server restart"); + return ret; +} char *getfileall(char *fname) { diff --git a/Platform/user/configm/config-server/include/configm.h b/Platform/user/configm/config-server/include/configm.h index e6c97eac7..f3e084a20 100755 --- a/Platform/user/configm/config-server/include/configm.h +++ b/Platform/user/configm/config-server/include/configm.h @@ -14,7 +14,7 @@ #include "../web_config/auth_recover_config.h" #include "natconfig.h" #include "vlan_config.h" - +#include "dhcp_lib.h" #define RET_CODE_LEN 16 #define RET_MSG_LEN 128 @@ -31,7 +31,11 @@ { \ VLAN_CONFIG_MODULE, \ vlan_config_init \ - } \ + }, \ + { \ + DHCP_CONFIG_MODULE, \ + dhcp_config_init \ + } \ } /* @@ -217,6 +221,60 @@ vlan_config_proc, \ vlan_config_get, \ vlan_config_get_all \ + },\ + {\ + DHCP_HOST_CONFIG, \ + CONFIG_FROM_WEB, \ + FALSE, \ + dhcp_host_config_chk, \ + dhcp_host_config_proc, \ + dhcp_host_config_get, \ + NULL \ + },\ + {\ + DHCP_SUBNET_CONFIG, \ + CONFIG_FROM_WEB, \ + FALSE, \ + dhcp_subnet_config_chk, \ + dhcp_subnet_config_proc, \ + dhcp_subnet_config_get, \ + NULL \ + },\ + {\ + DHCP_RELAY_CONFIG, \ + CONFIG_FROM_WEB, \ + FALSE, \ + dhcp_relay_config_chk, \ + dhcp_relay_config_proc, \ + NULL, \ + NULL \ + },\ + {\ + DHCP_CLIENT_CONFIG, \ + CONFIG_FROM_WEB, \ + FALSE, \ + dhcp_client_config_chk, \ + dhcp_client_config_proc, \ + dhcp_client_get, \ + NULL \ + },\ + {\ + DHCP_DHCPD_LEASE, \ + CONFIG_FROM_WEB, \ + FALSE, \ + dhcp_dhcpd_lease_config_chk, \ + NULL, \ + NULL, \ + dhcp_dhcpd_lease_get_all \ + },\ + {\ + DHCP_SHARED_NETWORK_CONFIG, \ + CONFIG_FROM_WEB, \ + FALSE, \ + dhcp_shared_network_config_chk, \ + dhcp_shared_network_config_proc, \ + NULL, \ + dhcp_shared_network_config_get_all \ }\ } diff --git a/Platform/user/configm/config-server/include/dhcp_lib.h b/Platform/user/configm/config-server/include/dhcp_lib.h index 8ee1c12a9..0901c6e53 100644 --- a/Platform/user/configm/config-server/include/dhcp_lib.h +++ b/Platform/user/configm/config-server/include/dhcp_lib.h @@ -20,6 +20,19 @@ #include "rpc.h" #include "netconfig.h" +#include "dhcp_client_config.h" +#include "dhcp_host_config.h" +#include "dhcp_relay_config.h" +#include "dhcp_shared_network_config.h" +#include "dhcp_subnet_config.h" +#include "dhcp_dhcpd_lease.h" + + +void dhcp_config_init(void); + +int del_interface_dhcp_cb(BR_EVENT_TYPE event_type, br_event_t event_arg); + + char *getfileall(char *fname); char *getfilefirstline(char *fname);