Browse Source

dhcpv4: make DHCPv4 support compiletime configurable

Make DHCPv4 support compile time configurable; avoids DHCPv4 functionality
overlap with other packages.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Hans Dedecker 6 years ago
parent
commit
fd80621fea
4 changed files with 16 additions and 3 deletions
  1. 6 1
      CMakeLists.txt
  2. 4 0
      src/config.c
  3. 2 0
      src/odhcpd.c
  4. 4 2
      src/odhcpd.h

+ 6 - 1
CMakeLists.txt

@@ -25,7 +25,12 @@ if(${UBUS})
 	set(EXT_LINK ${EXT_LINK} ubus)
 endif(${UBUS})
 
-add_executable(odhcpd src/odhcpd.c src/config.c src/router.c src/dhcpv6.c src/ndp.c src/dhcpv6-ia.c src/dhcpv4.c src/netlink.c ${EXT_SRC})
+if(${DHCPV4_SUPPORT})
+	add_definitions(-DDHCPV4_SUPPORT)
+	set(EXT_SRC ${EXT_SRC} src/dhcpv4.c)
+endif(${DHCPV4_SUPPORT})
+
+add_executable(odhcpd src/odhcpd.c src/config.c src/router.c src/dhcpv6.c src/ndp.c src/dhcpv6-ia.c src/netlink.c ${EXT_SRC})
 target_link_libraries(odhcpd resolv ubox uci ${libnl} ${EXT_LINK})
 
 # Installation

+ 4 - 0
src/config.c

@@ -239,7 +239,9 @@ static void close_interface(struct interface *iface)
 	router_setup_interface(iface, false);
 	dhcpv6_setup_interface(iface, false);
 	ndp_setup_interface(iface, false);
+#ifdef DHCPV4_SUPPORT
 	dhcpv4_setup_interface(iface, false);
+#endif
 
 	clean_interface(iface);
 	free(iface->addr4);
@@ -846,7 +848,9 @@ void odhcpd_reload(void)
 			router_setup_interface(i, !i->ignore || i->ra != MODE_DISABLED);
 			dhcpv6_setup_interface(i, !i->ignore || i->dhcpv6 != MODE_DISABLED);
 			ndp_setup_interface(i, !i->ignore || i->ndp != MODE_DISABLED);
+#ifdef DHCPV4_SUPPORT
 			dhcpv4_setup_interface(i, !i->ignore || i->dhcpv4 != MODE_DISABLED);
+#endif
 		} else
 			close_interface(i);
 	}

+ 2 - 0
src/odhcpd.c

@@ -110,8 +110,10 @@ int main(int argc, char **argv)
 	if (ndp_init())
 		return 4;
 
+#ifdef DHCPV4_SUPPORT
 	if (dhcpv4_init())
 		return 4;
+#endif
 
 	odhcpd_run();
 	return 0;

+ 4 - 2
src/odhcpd.h

@@ -315,12 +315,14 @@ void netlink_dump_addr_table(const bool v6);
 int netlink_init(void);
 int router_init(void);
 int dhcpv6_init(void);
-int dhcpv4_init(void);
 int ndp_init(void);
+#ifdef DHCPV4_SUPPORT
+int dhcpv4_init(void);
 
+int dhcpv4_setup_interface(struct interface *iface, bool enable);
+#endif
 int router_setup_interface(struct interface *iface, bool enable);
 int dhcpv6_setup_interface(struct interface *iface, bool enable);
 int ndp_setup_interface(struct interface *iface, bool enable);
-int dhcpv4_setup_interface(struct interface *iface, bool enable);
 
 void odhcpd_reload(void);