diff options
| author | Yves-Alexis Perez <corsac@debian.org> | 2014-03-11 20:48:48 +0100 | 
|---|---|---|
| committer | Yves-Alexis Perez <corsac@debian.org> | 2014-03-11 20:48:48 +0100 | 
| commit | 15fb7904f4431a6e7c305fd08732458f7f885e7e (patch) | |
| tree | c93b60ee813af70509f00f34e29ebec311762427 /src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | |
| parent | 5313d2d78ca150515f7f5eb39801c100690b6b29 (diff) | |
| download | vyos-strongswan-15fb7904f4431a6e7c305fd08732458f7f885e7e.tar.gz vyos-strongswan-15fb7904f4431a6e7c305fd08732458f7f885e7e.zip | |
Imported Upstream version 5.1.2
Diffstat (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c')
| -rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | 25 | 
1 files changed, 14 insertions, 11 deletions
| diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c index d27075082..3cf317634 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c @@ -1962,10 +1962,13 @@ METHOD(kernel_net_t, add_route, status_t,  		this->routes_lock->unlock(this->routes_lock);  		return ALREADY_DONE;  	} -	found = route_entry_clone(&route); -	this->routes->put(this->routes, found, found);  	status = manage_srcroute(this, RTM_NEWROUTE, NLM_F_CREATE | NLM_F_EXCL,  							 dst_net, prefixlen, gateway, src_ip, if_name); +	if (status == SUCCESS) +	{ +		found = route_entry_clone(&route); +		this->routes->put(this->routes, found, found); +	}  	this->routes_lock->unlock(this->routes_lock);  	return status;  } @@ -2122,7 +2125,7 @@ static status_t manage_rule(private_kernel_netlink_net_t *this, int nlmsg_type,  	netlink_add_attribute(hdr, RTA_PRIORITY, chunk, sizeof(request));  	fwmark = lib->settings->get_str(lib->settings, -					"%s.plugins.kernel-netlink.fwmark", NULL, hydra->daemon); +							"%s.plugins.kernel-netlink.fwmark", NULL, lib->ns);  	if (fwmark)  	{  #ifdef HAVE_LINUX_FIB_RULES_H @@ -2282,30 +2285,30 @@ kernel_netlink_net_t *kernel_netlink_net_create()  		.condvar = rwlock_condvar_create(),  		.roam_lock = spinlock_create(),  		.routing_table = lib->settings->get_int(lib->settings, -				"%s.routing_table", ROUTING_TABLE, hydra->daemon), +						"%s.routing_table", ROUTING_TABLE, lib->ns),  		.routing_table_prio = lib->settings->get_int(lib->settings, -				"%s.routing_table_prio", ROUTING_TABLE_PRIO, hydra->daemon), +						"%s.routing_table_prio", ROUTING_TABLE_PRIO, lib->ns),  		.process_route = lib->settings->get_bool(lib->settings, -				"%s.process_route", TRUE, hydra->daemon), +						"%s.process_route", TRUE, lib->ns),  		.install_virtual_ip = lib->settings->get_bool(lib->settings, -				"%s.install_virtual_ip", TRUE, hydra->daemon), +						"%s.install_virtual_ip", TRUE, lib->ns),  		.install_virtual_ip_on = lib->settings->get_str(lib->settings, -				"%s.install_virtual_ip_on", NULL, hydra->daemon), +						"%s.install_virtual_ip_on", NULL, lib->ns),  		.roam_events = lib->settings->get_bool(lib->settings, -				"%s.plugins.kernel-netlink.roam_events", TRUE, hydra->daemon), +						"%s.plugins.kernel-netlink.roam_events", TRUE, lib->ns),  	);  	timerclear(&this->last_route_reinstall);  	timerclear(&this->next_roam);  	check_kernel_features(this); -	if (streq(hydra->daemon, "starter")) +	if (streq(lib->ns, "starter"))  	{	/* starter has no threads, so we do not register for kernel events */  		register_for_events = FALSE;  	}  	exclude = lib->settings->get_str(lib->settings, -					"%s.ignore_routing_tables", NULL, hydra->daemon); +									 "%s.ignore_routing_tables", NULL, lib->ns);  	if (exclude)  	{  		char *token; | 
