kernel-netlink: Add an option to disable roam events
authorTobias Brunner <tobias@strongswan.org>
Tue, 16 Apr 2013 11:54:25 +0000 (13:54 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 3 May 2013 13:11:19 +0000 (15:11 +0200)
man/strongswan.conf.5.in
src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c

index 44fe330..e4b7e49 100644 (file)
@@ -595,6 +595,9 @@ Number of ipsecN devices
 .BR charon.plugins.kernel-klips.ipsec_dev_mtu " [0]"
 Set MTU of ipsecN device
 .TP
+.BR charon.plugins.kernel-netlink.roam_events " [yes]"
+Whether to trigger roam events when interfaces, addresses or routes change
+.TP
 .BR charon.plugins.load-tester
 Section to configure the load-tester plugin, see LOAD TESTS
 .TP
index 9586fa4..739a1f4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2012 Tobias Brunner
+ * Copyright (C) 2008-2013 Tobias Brunner
  * Copyright (C) 2005-2008 Martin Willi
  * Hochschule fuer Technik Rapperswil
  *
@@ -436,6 +436,11 @@ struct private_kernel_netlink_net_t {
        bool process_route;
 
        /**
+        * whether to trigger roam events
+        */
+       bool roam_events;
+
+       /**
         * whether to actually install virtual IPs
         */
        bool install_virtual_ip;
@@ -703,6 +708,11 @@ static void fire_roam_event(private_kernel_netlink_net_t *this, bool address)
        timeval_t now;
        job_t *job;
 
+       if (!this->roam_events)
+       {
+               return;
+       }
+
        time_monotonic(&now);
        this->roam_lock->lock(this->roam_lock);
        if (!timercmp(&now, &this->next_roam, >))
@@ -2235,6 +2245,8 @@ kernel_netlink_net_t *kernel_netlink_net_create()
                                "%s.install_virtual_ip", TRUE, hydra->daemon),
                .install_virtual_ip_on = lib->settings->get_str(lib->settings,
                                "%s.install_virtual_ip_on", NULL, hydra->daemon),
+               .roam_events = lib->settings->get_bool(lib->settings,
+                               "%s.plugins.kernel-netlink.roam_events", TRUE, hydra->daemon),
        );
        timerclear(&this->last_route_reinstall);
        timerclear(&this->next_roam);