dhcpv4: make DHCPv4 support compiletime configurable
authorHans Dedecker <dedeckeh@gmail.com>
Thu, 9 Nov 2017 15:09:51 +0000 (16:09 +0100)
committerHans Dedecker <dedeckeh@gmail.com>
Thu, 9 Nov 2017 15:09:51 +0000 (16:09 +0100)
Make DHCPv4 support compile time configurable; avoids DHCPv4 functionality
overlap with other packages.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
CMakeLists.txt
src/config.c
src/odhcpd.c
src/odhcpd.h

index 839f47f..380d633 100644 (file)
@@ -25,7 +25,12 @@ if(${UBUS})
        set(EXT_LINK ${EXT_LINK} ubus)
 endif(${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
 target_link_libraries(odhcpd resolv ubox uci ${libnl} ${EXT_LINK})
 
 # Installation
index 7e23eb2..bb885d0 100644 (file)
@@ -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);
        router_setup_interface(iface, false);
        dhcpv6_setup_interface(iface, false);
        ndp_setup_interface(iface, false);
+#ifdef DHCPV4_SUPPORT
        dhcpv4_setup_interface(iface, false);
        dhcpv4_setup_interface(iface, false);
+#endif
 
        clean_interface(iface);
        free(iface->addr4);
 
        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);
                        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);
                        dhcpv4_setup_interface(i, !i->ignore || i->dhcpv4 != MODE_DISABLED);
+#endif
                } else
                        close_interface(i);
        }
                } else
                        close_interface(i);
        }
index 4972aa2..13697b7 100644 (file)
@@ -110,8 +110,10 @@ int main(int argc, char **argv)
        if (ndp_init())
                return 4;
 
        if (ndp_init())
                return 4;
 
+#ifdef DHCPV4_SUPPORT
        if (dhcpv4_init())
                return 4;
        if (dhcpv4_init())
                return 4;
+#endif
 
        odhcpd_run();
        return 0;
 
        odhcpd_run();
        return 0;
index a49ab57..45badd3 100644 (file)
@@ -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 netlink_init(void);
 int router_init(void);
 int dhcpv6_init(void);
-int dhcpv4_init(void);
 int ndp_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 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);
 
 void odhcpd_reload(void);