libhydra: Move kernel interface to libcharon
This moves hydra->kernel_interface to charon->kernel.
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
#include <library.h>
|
||||
#include <ipsec.h>
|
||||
#include <hydra.h>
|
||||
#include <daemon.h>
|
||||
#include <networking/tun_device.h>
|
||||
#include <threading/mutex.h>
|
||||
#include <utils/debug.h>
|
||||
@@ -224,8 +224,7 @@ static inline bool policy_entry_equals(policy_entry_t *a,
|
||||
*/
|
||||
static void expire(u_int8_t protocol, u_int32_t spi, host_t *dst, bool hard)
|
||||
{
|
||||
hydra->kernel_interface->expire(hydra->kernel_interface, protocol,
|
||||
spi, dst, hard);
|
||||
charon->kernel->expire(charon->kernel, protocol, spi, dst, hard);
|
||||
}
|
||||
|
||||
METHOD(kernel_ipsec_t, get_features, kernel_feature_t,
|
||||
@@ -313,16 +312,13 @@ static void add_exclude_route(private_kernel_libipsec_ipsec_t *this,
|
||||
if (!route->exclude)
|
||||
{
|
||||
DBG2(DBG_KNL, "installing new exclude route for %H src %H", dst, src);
|
||||
gtw = hydra->kernel_interface->get_nexthop(hydra->kernel_interface,
|
||||
dst, -1, NULL);
|
||||
gtw = charon->kernel->get_nexthop(charon->kernel, dst, -1, NULL);
|
||||
if (gtw)
|
||||
{
|
||||
char *if_name = NULL;
|
||||
|
||||
if (hydra->kernel_interface->get_interface(
|
||||
hydra->kernel_interface, src, &if_name) &&
|
||||
hydra->kernel_interface->add_route(hydra->kernel_interface,
|
||||
dst->get_address(dst),
|
||||
if (charon->kernel->get_interface(charon->kernel, src, &if_name) &&
|
||||
charon->kernel->add_route(charon->kernel, dst->get_address(dst),
|
||||
dst->get_family(dst) == AF_INET ? 32 : 128,
|
||||
gtw, src, if_name) == SUCCESS)
|
||||
{
|
||||
@@ -367,14 +363,12 @@ static void remove_exclude_route(private_kernel_libipsec_ipsec_t *this,
|
||||
dst = route->exclude->dst;
|
||||
DBG2(DBG_KNL, "uninstalling exclude route for %H src %H",
|
||||
dst, route->exclude->src);
|
||||
if (hydra->kernel_interface->get_interface(
|
||||
hydra->kernel_interface,
|
||||
route->exclude->src, &if_name) &&
|
||||
hydra->kernel_interface->del_route(hydra->kernel_interface,
|
||||
dst->get_address(dst),
|
||||
dst->get_family(dst) == AF_INET ? 32 : 128,
|
||||
route->exclude->gtw, route->exclude->src,
|
||||
if_name) != SUCCESS)
|
||||
if (charon->kernel->get_interface(charon->kernel, route->exclude->src,
|
||||
&if_name) &&
|
||||
charon->kernel->del_route(charon->kernel, dst->get_address(dst),
|
||||
dst->get_family(dst) == AF_INET ? 32 : 128,
|
||||
route->exclude->gtw, route->exclude->src,
|
||||
if_name) != SUCCESS)
|
||||
{
|
||||
DBG1(DBG_KNL, "uninstalling exclude route for %H failed", dst);
|
||||
}
|
||||
@@ -402,8 +396,8 @@ static bool install_route(private_kernel_libipsec_ipsec_t *this,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (hydra->kernel_interface->get_address_by_ts(hydra->kernel_interface,
|
||||
src_ts, &src_ip, &is_virtual) != SUCCESS)
|
||||
if (charon->kernel->get_address_by_ts(charon->kernel, src_ts, &src_ip,
|
||||
&is_virtual) != SUCCESS)
|
||||
{
|
||||
traffic_selector_t *multicast, *broadcast = NULL;
|
||||
bool ignore = FALSE;
|
||||
@@ -444,8 +438,7 @@ static bool install_route(private_kernel_libipsec_ipsec_t *this,
|
||||
);
|
||||
#ifndef __linux__
|
||||
/* on Linux we cant't install a gateway */
|
||||
route->gateway = hydra->kernel_interface->get_nexthop(
|
||||
hydra->kernel_interface, dst, -1, src);
|
||||
route->gateway = charon->kernel->get_nexthop(charon->kernel, dst, -1, src);
|
||||
#endif
|
||||
|
||||
if (policy->route)
|
||||
@@ -459,9 +452,9 @@ static bool install_route(private_kernel_libipsec_ipsec_t *this,
|
||||
return TRUE;
|
||||
}
|
||||
/* uninstall previously installed route */
|
||||
if (hydra->kernel_interface->del_route(hydra->kernel_interface,
|
||||
old->dst_net, old->prefixlen, old->gateway,
|
||||
old->src_ip, old->if_name) != SUCCESS)
|
||||
if (charon->kernel->del_route(charon->kernel, old->dst_net,
|
||||
old->prefixlen, old->gateway,
|
||||
old->src_ip, old->if_name) != SUCCESS)
|
||||
{
|
||||
DBG1(DBG_KNL, "error uninstalling route installed with policy "
|
||||
"%R === %R %N", src_ts, dst_ts, policy_dir_names,
|
||||
@@ -490,9 +483,9 @@ static bool install_route(private_kernel_libipsec_ipsec_t *this,
|
||||
DBG2(DBG_KNL, "installing route: %R src %H dev %s",
|
||||
dst_ts, route->src_ip, route->if_name);
|
||||
|
||||
switch (hydra->kernel_interface->add_route(hydra->kernel_interface,
|
||||
route->dst_net, route->prefixlen, route->gateway,
|
||||
route->src_ip, route->if_name))
|
||||
switch (charon->kernel->add_route(charon->kernel, route->dst_net,
|
||||
route->prefixlen, route->gateway,
|
||||
route->src_ip, route->if_name))
|
||||
{
|
||||
case ALREADY_DONE:
|
||||
/* route exists, do not uninstall */
|
||||
@@ -598,9 +591,9 @@ METHOD(kernel_ipsec_t, del_policy, status_t,
|
||||
{
|
||||
route_entry_t *route = policy->route;
|
||||
|
||||
if (hydra->kernel_interface->del_route(hydra->kernel_interface,
|
||||
route->dst_net, route->prefixlen, route->gateway, route->src_ip,
|
||||
route->if_name) != SUCCESS)
|
||||
if (charon->kernel->del_route(charon->kernel, route->dst_net,
|
||||
route->prefixlen, route->gateway,
|
||||
route->src_ip, route->if_name) != SUCCESS)
|
||||
{
|
||||
DBG1(DBG_KNL, "error uninstalling route installed with "
|
||||
"policy %R === %R %N", src_ts, dst_ts,
|
||||
@@ -629,9 +622,9 @@ METHOD(kernel_ipsec_t, flush_policies, status_t,
|
||||
{
|
||||
route_entry_t *route = pol->route;
|
||||
|
||||
hydra->kernel_interface->del_route(hydra->kernel_interface,
|
||||
route->dst_net, route->prefixlen, route->gateway,
|
||||
route->src_ip, route->if_name);
|
||||
charon->kernel->del_route(charon->kernel, route->dst_net,
|
||||
route->prefixlen, route->gateway,
|
||||
route->src_ip, route->if_name);
|
||||
remove_exclude_route(this, route);
|
||||
}
|
||||
policy_entry_destroy(pol);
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#include "kernel_libipsec_router.h"
|
||||
|
||||
#include <daemon.h>
|
||||
#include <hydra.h>
|
||||
#include <ipsec.h>
|
||||
#include <collections/hashtable.h>
|
||||
#include <networking/tun_device.h>
|
||||
@@ -298,8 +297,7 @@ METHOD(kernel_libipsec_router_t, destroy, void,
|
||||
(ipsec_outbound_cb_t)send_esp);
|
||||
ipsec->processor->unregister_inbound(ipsec->processor,
|
||||
(ipsec_inbound_cb_t)deliver_plain);
|
||||
hydra->kernel_interface->remove_listener(hydra->kernel_interface,
|
||||
&this->public.listener);
|
||||
charon->kernel->remove_listener(charon->kernel, &this->public.listener);
|
||||
this->lock->destroy(this->lock);
|
||||
this->tuns->destroy(this->tuns);
|
||||
close(this->notify[0]);
|
||||
@@ -351,8 +349,7 @@ kernel_libipsec_router_t *kernel_libipsec_router_create()
|
||||
(hashtable_equals_t)tun_entry_equals, 4);
|
||||
this->lock = rwlock_create(RWLOCK_TYPE_DEFAULT);
|
||||
|
||||
hydra->kernel_interface->add_listener(hydra->kernel_interface,
|
||||
&this->public.listener);
|
||||
charon->kernel->add_listener(charon->kernel, &this->public.listener);
|
||||
ipsec->processor->register_outbound(ipsec->processor, send_esp, NULL);
|
||||
ipsec->processor->register_inbound(ipsec->processor,
|
||||
(ipsec_inbound_cb_t)deliver_plain, this);
|
||||
|
||||
Reference in New Issue
Block a user