]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: irdp: convert into module
authorDavid Lamparter <equinox@opensourcerouting.org>
Sun, 6 Aug 2017 07:19:14 +0000 (09:19 +0200)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 15 Aug 2017 11:26:55 +0000 (13:26 +0200)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
configure.ac
zebra/irdp.h
zebra/irdp_interface.c
zebra/irdp_main.c
zebra/irdp_packet.c
zebra/main.c
zebra/subdir.am

index 574992342fd1f0ce45fd9d0f71fa3bb2f2eedcda..710a71f63620d66070552f418ee65bb7acd9929d 100755 (executable)
@@ -344,7 +344,7 @@ AC_ARG_ENABLE(shell_access,
 AC_ARG_ENABLE(rtadv,
   AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
 AC_ARG_ENABLE(irdp,
-  AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
+  AS_HELP_STRING([--disable-irdp], [enable IRDP server support in zebra (default if supported)]))
 AC_ARG_ENABLE(capabilities,
   AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
 AC_ARG_ENABLE(rusage,
@@ -570,10 +570,6 @@ else
   AC_MSG_RESULT(no)
 fi
 
-if test "${enable_irdp}" = "yes"; then
-  AC_DEFINE(HAVE_IRDP,, IRDP )
-fi
-
 if test x"${enable_user}" = x"no"; then
   enable_user=""
 else
@@ -1479,17 +1475,27 @@ AC_CHECK_MEMBERS([struct sockaddr.sa_len,
 dnl ---------------------------
 dnl IRDP/pktinfo/icmphdr checks
 dnl ---------------------------
-AC_CHECK_TYPES([struct in_pktinfo], 
- [AC_CHECK_TYPES([struct icmphdr],
-   [if test "${enable_irdp}" != "no"; then
-      AC_DEFINE(HAVE_IRDP,, IRDP)
-    fi],
-   [if test "${enable_irdp}" = "yes"; then
-      AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
-    fi], [FRR_INCLUDES])],
- [if test "${enable_irdp}" = "yes"; then
-    AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
-  fi], [FRR_INCLUDES])
+
+AC_CHECK_TYPES([struct in_pktinfo], [
+  AC_CHECK_TYPES([struct icmphdr], [
+    IRDP=true
+  ], [
+    IRDP=false
+  ], [FRR_INCLUDES])
+], [
+  IRDP=false
+], [FRR_INCLUDES])
+
+case "${enable_irdp}" in
+yes)
+  $IRDP || AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
+  ;;
+no)
+  IRDP=false
+  ;;
+esac
+
+AM_CONDITIONAL(IRDP, $IRDP)
 
 dnl -----------------------
 dnl checking for IP_PKTINFO
index f8f7811248a4e370137c39dda4e0778071d41966..ea190b574df0896af22df60ae7f05f7b2e74fcfc 100644 (file)
@@ -138,7 +138,6 @@ struct Adv {
        int pref;
 };
 
-extern void irdp_init(void);
 extern void irdp_if_init(void);
 extern int irdp_sock_init(void);
 extern int irdp_config_write(struct vty *, struct interface *);
index 3465bdebbfbda3243173af39f2fec884a1e797d7..34c78e2a482002ea7182f2a1fb25c6c0ebf454e9 100644 (file)
@@ -35,8 +35,6 @@
 
 #include <zebra.h>
 
-#ifdef HAVE_IRDP
-
 #include "if.h"
 #include "vty.h"
 #include "sockunion.h"
@@ -691,5 +689,3 @@ void irdp_if_init()
        install_element(INTERFACE_NODE, &ip_irdp_debug_packet_cmd);
        install_element(INTERFACE_NODE, &ip_irdp_debug_disable_cmd);
 }
-
-#endif /* HAVE_IRDP */
index 73c6d8141aea6cb24ac83ae58e5a09edc147b7a5..9dfa854725318a97a9849683d0ba798945cae6fd 100644 (file)
@@ -35,8 +35,6 @@
 
 #include <zebra.h>
 
-#ifdef HAVE_IRDP
-
 #include "if.h"
 #include "vty.h"
 #include "sockunion.h"
@@ -53,6 +51,7 @@
 #include "thread.h"
 #include "privs.h"
 #include "libfrr.h"
+#include "version.h"
 #include "zebra/interface.h"
 #include "zebra/rtadv.h"
 #include "zebra/rib.h"
@@ -341,11 +340,23 @@ static int irdp_finish(void)
        return 0;
 }
 
-void irdp_init(void)
+static int irdp_init(struct thread_master *master)
 {
        irdp_if_init();
 
        hook_register(frr_early_fini, irdp_finish);
+       return 0;
+}
+
+static int irdp_module_init(void)
+{
+       hook_register(frr_late_init, irdp_init);
+       return 0;
 }
 
-#endif /* HAVE_IRDP */
+FRR_MODULE_SETUP(
+       .name = "zebra_irdp",
+       .version = FRR_VERSION,
+       .description = "zebra IRDP module",
+       .init = irdp_module_init,
+)
index a64eac2ea46c83cf7b60c2b5f1aa3b958a75d3c5..08322455368fde4b1e3104bceb48a898b5a88f97 100644 (file)
@@ -36,8 +36,6 @@
 #include <zebra.h>
 
 
-#ifdef HAVE_IRDP
-
 #include "if.h"
 #include "vty.h"
 #include "sockunion.h"
@@ -353,6 +351,3 @@ void send_packet(struct interface *ifp, struct stream *s, u_int32_t dst,
        }
        /*   printf("TX on %s idx %d\n", ifp->name, ifp->ifindex); */
 }
-
-
-#endif /* HAVE_IRDP */
index 72f96add8671d2c4841504a26577e57777cb6a96..bc7276817d560e5c08020979345e310553cece97 100644 (file)
@@ -292,9 +292,6 @@ int main(int argc, char **argv)
 #if defined(HAVE_RTADV)
        rtadv_cmd_init();
 #endif
-#ifdef HAVE_IRDP
-       irdp_init();
-#endif
 /* PTM socket */
 #ifdef ZEBRA_PTM_SUPPORT
        zebra_ptm_init();
index 0391cab9fde750aed0eee3ce03bfc87f0bb94b1b..347482362341bfc4c58ba32549e6f19ae976668d 100644 (file)
@@ -6,6 +6,9 @@ if ZEBRA
 sbin_PROGRAMS += zebra/zebra
 dist_examples_DATA += zebra/zebra.conf.sample
 
+if IRDP
+module_LTLIBRARIES += zebra/zebra_irdp.la
+endif
 if SNMP
 module_LTLIBRARIES += zebra/zebra_snmp.la
 endif
@@ -30,9 +33,6 @@ zebra_zebra_SOURCES = \
        zebra/ipforward_proc.c \
        zebra/ipforward_solaris.c \
        zebra/ipforward_sysctl.c \
-       zebra/irdp_interface.c \
-       zebra/irdp_main.c \
-       zebra/irdp_packet.c \
        zebra/kernel_netlink.c \
        zebra/kernel_socket.c \
        zebra/label_manager.c \
@@ -106,6 +106,13 @@ noinst_HEADERS += \
        zebra/zserv.h \
        # end
 
+zebra_zebra_irdp_la_SOURCES = \
+       zebra/irdp_interface.c \
+       zebra/irdp_main.c \
+       zebra/irdp_packet.c \
+       # end
+zebra_zebra_irdp_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
+
 zebra_zebra_snmp_la_SOURCES = zebra/zebra_snmp.c
 zebra_zebra_snmp_la_CFLAGS = $(WERROR) $(SNMP_CFLAGS)
 zebra_zebra_snmp_la_LDFLAGS = -avoid-version -module -shared -export-dynamic