starter: Drop support for %defaultroute.
This commit is contained in:
+2
-16
@@ -451,24 +451,10 @@ Relevant only locally, other end need not agree on it.
|
|||||||
synonym for
|
synonym for
|
||||||
.BR lifetime .
|
.BR lifetime .
|
||||||
.TP
|
.TP
|
||||||
.BR left " = <ip address> | <fqdn> | %defaultroute | " %any
|
.BR left " = <ip address> | <fqdn> | " %any
|
||||||
(required)
|
(required)
|
||||||
the IP address of the left participant's public-network interface
|
the IP address of the left participant's public-network interface
|
||||||
or one of several magic values.
|
or one of several magic values.
|
||||||
If it is
|
|
||||||
.BR %defaultroute ,
|
|
||||||
.B left
|
|
||||||
will be filled in automatically with the local address
|
|
||||||
of the default-route interface (as determined at IPsec startup time and
|
|
||||||
during configuration update).
|
|
||||||
Either
|
|
||||||
.B left
|
|
||||||
or
|
|
||||||
.B right
|
|
||||||
may be
|
|
||||||
.BR %defaultroute ,
|
|
||||||
but not both.
|
|
||||||
|
|
||||||
The value
|
The value
|
||||||
.B %any
|
.B %any
|
||||||
for the local endpoint signifies an address to be filled in (by automatic
|
for the local endpoint signifies an address to be filled in (by automatic
|
||||||
@@ -644,7 +630,7 @@ to 4500 if a NAT is detected or MOBIKE is enabled. Specifying a local IKE port
|
|||||||
different from the default additionally requires a socket implementation that
|
different from the default additionally requires a socket implementation that
|
||||||
listens to this port.
|
listens to this port.
|
||||||
.TP
|
.TP
|
||||||
.BR leftnexthop " = %direct | %defaultroute | <ip address> | <fqdn>"
|
.BR leftnexthop " = %direct | <ip address> | <fqdn>"
|
||||||
this parameter is usually not needed any more because the NETKEY IPsec stack
|
this parameter is usually not needed any more because the NETKEY IPsec stack
|
||||||
does not require explicit routing entries for the traffic to be tunneled. If
|
does not require explicit routing entries for the traffic to be tunneled. If
|
||||||
.B leftsourceip
|
.B leftsourceip
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ include $(CLEAR_VARS)
|
|||||||
LOCAL_SRC_FILES := \
|
LOCAL_SRC_FILES := \
|
||||||
parser.c lexer.c ipsec-parser.h netkey.c args.h netkey.h \
|
parser.c lexer.c ipsec-parser.h netkey.c args.h netkey.h \
|
||||||
starterwhack.c starterwhack.h starterstroke.c invokepluto.c confread.c \
|
starterwhack.c starterwhack.h starterstroke.c invokepluto.c confread.c \
|
||||||
starterstroke.h interfaces.c invokepluto.h confread.h interfaces.h args.c \
|
starterstroke.h invokepluto.h confread.h args.c \
|
||||||
keywords.c files.h keywords.h cmp.c starter.c cmp.h invokecharon.c \
|
keywords.c files.h keywords.h cmp.c starter.c cmp.h invokecharon.c \
|
||||||
invokecharon.h klips.c klips.h
|
invokecharon.h klips.c klips.h
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ ipsec_PROGRAMS = starter
|
|||||||
starter_SOURCES = \
|
starter_SOURCES = \
|
||||||
parser.y lexer.l ipsec-parser.h netkey.c args.h netkey.h \
|
parser.y lexer.l ipsec-parser.h netkey.c args.h netkey.h \
|
||||||
starterwhack.c starterwhack.h starterstroke.c invokepluto.c confread.c \
|
starterwhack.c starterwhack.h starterstroke.c invokepluto.c confread.c \
|
||||||
starterstroke.h interfaces.c invokepluto.h confread.h interfaces.h args.c \
|
starterstroke.h invokepluto.h confread.h args.c \
|
||||||
keywords.c files.h keywords.h cmp.c starter.c cmp.h invokecharon.c \
|
keywords.c files.h keywords.h cmp.c starter.c cmp.h invokecharon.c \
|
||||||
invokecharon.h klips.c klips.h
|
invokecharon.h klips.c klips.h
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
#include "confread.h"
|
#include "confread.h"
|
||||||
#include "args.h"
|
#include "args.h"
|
||||||
#include "interfaces.h"
|
|
||||||
#include "cmp.h"
|
#include "cmp.h"
|
||||||
|
|
||||||
#define VARCMP(obj) if (c1->obj != c2->obj) return FALSE
|
#define VARCMP(obj) if (c1->obj != c2->obj) return FALSE
|
||||||
@@ -105,11 +104,3 @@ starter_cmp_pluto(starter_config_t *c1, starter_config_t *c2)
|
|||||||
|
|
||||||
return cmp_args(KW_PLUTO_FIRST, KW_PLUTO_LAST, (char *)c1, (char *)c2);
|
return cmp_args(KW_PLUTO_FIRST, KW_PLUTO_LAST, (char *)c1, (char *)c2);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
starter_cmp_defaultroute(defaultroute_t *d1, defaultroute_t *d2)
|
|
||||||
{
|
|
||||||
if ((d1 == NULL) || (d2 == NULL))
|
|
||||||
return FALSE;
|
|
||||||
return memcmp(d1, d2, sizeof(defaultroute_t)) == 0;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -15,13 +15,10 @@
|
|||||||
#ifndef _STARTER_CMP_H_
|
#ifndef _STARTER_CMP_H_
|
||||||
#define _STARTER_CMP_H_
|
#define _STARTER_CMP_H_
|
||||||
|
|
||||||
#include "interfaces.h"
|
|
||||||
|
|
||||||
extern bool starter_cmp_conn(starter_conn_t *c1, starter_conn_t *c2);
|
extern bool starter_cmp_conn(starter_conn_t *c1, starter_conn_t *c2);
|
||||||
extern bool starter_cmp_ca(starter_ca_t *c1, starter_ca_t *c2);
|
extern bool starter_cmp_ca(starter_ca_t *c1, starter_ca_t *c2);
|
||||||
extern bool starter_cmp_klips(starter_config_t *c1, starter_config_t *c2);
|
extern bool starter_cmp_klips(starter_config_t *c1, starter_config_t *c2);
|
||||||
extern bool starter_cmp_pluto(starter_config_t *c1, starter_config_t *c2);
|
extern bool starter_cmp_pluto(starter_config_t *c1, starter_config_t *c2);
|
||||||
extern bool starter_cmp_defaultroute(defaultroute_t *d1, defaultroute_t *d2);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
+11
-61
@@ -30,7 +30,6 @@
|
|||||||
#include "confread.h"
|
#include "confread.h"
|
||||||
#include "args.h"
|
#include "args.h"
|
||||||
#include "files.h"
|
#include "files.h"
|
||||||
#include "interfaces.h"
|
|
||||||
|
|
||||||
/* strings containing a colon are interpreted as an IPv6 address */
|
/* strings containing a colon are interpreted as an IPv6 address */
|
||||||
#define ip_version(string) (strchr(string, '.') ? AF_INET : AF_INET6)
|
#define ip_version(string) (strchr(string, '.') ? AF_INET : AF_INET6)
|
||||||
@@ -184,24 +183,7 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token,
|
|||||||
case KW_HOST:
|
case KW_HOST:
|
||||||
free(end->host);
|
free(end->host);
|
||||||
end->host = NULL;
|
end->host = NULL;
|
||||||
if (streq(value, "%defaultroute"))
|
if (streq(value, "%any") || streq(value, "%any4"))
|
||||||
{
|
|
||||||
if (cfg->defaultroute.defined)
|
|
||||||
{
|
|
||||||
end->addr = cfg->defaultroute.addr;
|
|
||||||
end->nexthop = cfg->defaultroute.nexthop;
|
|
||||||
}
|
|
||||||
else if (!cfg->defaultroute.supported)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "%%defaultroute not supported, fallback to %%any");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "# default route not known: %s=%s", name, value);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (streq(value, "%any") || streq(value, "%any4"))
|
|
||||||
{
|
{
|
||||||
anyaddr(conn->addr_family, &end->addr);
|
anyaddr(conn->addr_family, &end->addr);
|
||||||
}
|
}
|
||||||
@@ -355,19 +337,7 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token,
|
|||||||
switch (token)
|
switch (token)
|
||||||
{
|
{
|
||||||
case KW_NEXTHOP:
|
case KW_NEXTHOP:
|
||||||
if (streq(value, "%defaultroute"))
|
if (streq(value, "%direct"))
|
||||||
{
|
|
||||||
if (cfg->defaultroute.defined)
|
|
||||||
{
|
|
||||||
end->nexthop = cfg->defaultroute.nexthop;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "# default route not known: %s=%s", name, value);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (streq(value, "%direct"))
|
|
||||||
{
|
{
|
||||||
ugh = anyaddr(conn->addr_family, &end->nexthop);
|
ugh = anyaddr(conn->addr_family, &end->nexthop);
|
||||||
}
|
}
|
||||||
@@ -404,42 +374,25 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token,
|
|||||||
end->has_port_wildcard = has_port_wildcard;
|
end->has_port_wildcard = has_port_wildcard;
|
||||||
break;
|
break;
|
||||||
case KW_NATIP:
|
case KW_NATIP:
|
||||||
|
{
|
||||||
|
ip_address addr;
|
||||||
if (end->sourceip)
|
if (end->sourceip)
|
||||||
{
|
{
|
||||||
DBG1(DBG_APP, "# natip and sourceip cannot be defined at the same time");
|
DBG1(DBG_APP, "# natip and sourceip cannot be defined at the same time");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (streq(value, "%defaultroute"))
|
conn->tunnel_addr_family = ip_version(value);
|
||||||
|
ugh = ttoaddr(value, 0, conn->tunnel_addr_family, &addr);
|
||||||
|
if (ugh != NULL)
|
||||||
{
|
{
|
||||||
char buf[64];
|
DBG1(DBG_APP, "# bad addr: %s=%s [%s]", name, value, ugh);
|
||||||
|
goto err;
|
||||||
if (cfg->defaultroute.defined)
|
|
||||||
{
|
|
||||||
addrtot(&cfg->defaultroute.addr, 0, buf, sizeof(buf));
|
|
||||||
end->sourceip = clone_str(buf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "# default route not known: %s=%s", name, value);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ip_address addr;
|
|
||||||
|
|
||||||
conn->tunnel_addr_family = ip_version(value);
|
|
||||||
ugh = ttoaddr(value, 0, conn->tunnel_addr_family, &addr);
|
|
||||||
if (ugh != NULL)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "# bad addr: %s=%s [%s]", name, value, ugh);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
end->sourceip = clone_str(value);
|
|
||||||
}
|
}
|
||||||
|
end->sourceip = clone_str(value);
|
||||||
end->has_natip = TRUE;
|
end->has_natip = TRUE;
|
||||||
conn->policy |= POLICY_TUNNEL;
|
conn->policy |= POLICY_TUNNEL;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1053,9 +1006,6 @@ starter_config_t* confread_load(const char *file)
|
|||||||
/* set default values */
|
/* set default values */
|
||||||
default_values(cfg);
|
default_values(cfg);
|
||||||
|
|
||||||
/* determine default route */
|
|
||||||
get_defaultroute(&cfg->defaultroute);
|
|
||||||
|
|
||||||
/* load config setup section */
|
/* load config setup section */
|
||||||
load_setup(cfg, cfgp);
|
load_setup(cfg, cfgp);
|
||||||
|
|
||||||
|
|||||||
@@ -16,12 +16,10 @@
|
|||||||
#ifndef _IPSEC_CONFREAD_H_
|
#ifndef _IPSEC_CONFREAD_H_
|
||||||
#define _IPSEC_CONFREAD_H_
|
#define _IPSEC_CONFREAD_H_
|
||||||
|
|
||||||
#ifndef _FREESWAN_H
|
|
||||||
#include <freeswan.h>
|
#include <freeswan.h>
|
||||||
#endif
|
#include "../pluto/constants.h"
|
||||||
|
|
||||||
#include "ipsec-parser.h"
|
#include "ipsec-parser.h"
|
||||||
#include "interfaces.h"
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
STARTUP_NO,
|
STARTUP_NO,
|
||||||
@@ -218,9 +216,6 @@ struct starter_config {
|
|||||||
bool hidetos;
|
bool hidetos;
|
||||||
} setup;
|
} setup;
|
||||||
|
|
||||||
/* information about the default route */
|
|
||||||
defaultroute_t defaultroute;
|
|
||||||
|
|
||||||
/* number of encountered parsing errors */
|
/* number of encountered parsing errors */
|
||||||
u_int err;
|
u_int err;
|
||||||
u_int non_fatal_err;
|
u_int non_fatal_err;
|
||||||
|
|||||||
@@ -1,212 +0,0 @@
|
|||||||
/* strongSwan IPsec interfaces management
|
|
||||||
* Copyright (C) 2001-2002 Mathieu Lafon - Arkoon Network Security
|
|
||||||
* 2009 Heiko Hund - Astaro AG
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
* for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include <freeswan.h>
|
|
||||||
|
|
||||||
#include <debug.h>
|
|
||||||
#include <constants.h>
|
|
||||||
#include <defs.h>
|
|
||||||
|
|
||||||
#include "interfaces.h"
|
|
||||||
#include "files.h"
|
|
||||||
|
|
||||||
#ifdef START_PLUTO
|
|
||||||
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <linux/rtnetlink.h>
|
|
||||||
#ifdef HAVE_SYS_SOCKIO_H
|
|
||||||
#include <sys/sockio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the default route information via rtnetlink
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
get_defaultroute(defaultroute_t *defaultroute)
|
|
||||||
{
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
struct nlmsghdr nh;
|
|
||||||
struct rtmsg rt;
|
|
||||||
} m;
|
|
||||||
char buf[4096];
|
|
||||||
} rtu;
|
|
||||||
|
|
||||||
struct nlmsghdr *nh;
|
|
||||||
uint32_t best_metric = ~0;
|
|
||||||
ssize_t msglen;
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
memset(&rtu, 0, sizeof(rtu));
|
|
||||||
rtu.m.nh.nlmsg_len = NLMSG_LENGTH(sizeof(rtu.m.rt));
|
|
||||||
rtu.m.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
|
|
||||||
rtu.m.nh.nlmsg_type = RTM_GETROUTE;
|
|
||||||
rtu.m.rt.rtm_family = AF_INET;
|
|
||||||
rtu.m.rt.rtm_table = RT_TABLE_UNSPEC;
|
|
||||||
rtu.m.rt.rtm_protocol = RTPROT_UNSPEC;
|
|
||||||
rtu.m.rt.rtm_type = RTN_UNICAST;
|
|
||||||
|
|
||||||
fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
|
|
||||||
if (fd == -1)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "could not create rtnetlink socket");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (send(fd, &rtu, rtu.m.nh.nlmsg_len, 0) == -1)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "could not write to rtnetlink socket");
|
|
||||||
close(fd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
msglen = recv(fd, &rtu, sizeof(rtu), MSG_WAITALL);
|
|
||||||
if (msglen == -1)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "could not read from rtnetlink socket");
|
|
||||||
close(fd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
close(fd);
|
|
||||||
|
|
||||||
for (nh = &rtu.m.nh; NLMSG_OK(nh, msglen); nh = NLMSG_NEXT(nh, msglen))
|
|
||||||
{
|
|
||||||
struct rtmsg *rt;
|
|
||||||
struct rtattr *rta;
|
|
||||||
uint32_t rtalen, metric = 0;
|
|
||||||
struct in_addr gw = { .s_addr = INADDR_ANY };
|
|
||||||
int iface_idx = -1;
|
|
||||||
|
|
||||||
if (nh->nlmsg_type == NLMSG_ERROR)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "error from rtnetlink");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nh->nlmsg_type == NLMSG_DONE)
|
|
||||||
break;
|
|
||||||
|
|
||||||
rt = NLMSG_DATA(nh);
|
|
||||||
if ( rt->rtm_dst_len != 0
|
|
||||||
|| (rt->rtm_table != RT_TABLE_MAIN
|
|
||||||
&& rt->rtm_table != RT_TABLE_DEFAULT) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
rta = RTM_RTA(rt);
|
|
||||||
rtalen = RTM_PAYLOAD(nh);
|
|
||||||
while ( RTA_OK(rta, rtalen) )
|
|
||||||
{
|
|
||||||
switch (rta->rta_type)
|
|
||||||
{
|
|
||||||
case RTA_GATEWAY:
|
|
||||||
gw = *(struct in_addr *) RTA_DATA(rta);
|
|
||||||
break;
|
|
||||||
case RTA_OIF:
|
|
||||||
iface_idx = *(int *) RTA_DATA(rta);
|
|
||||||
break;
|
|
||||||
case RTA_PRIORITY:
|
|
||||||
metric = *(uint32_t *) RTA_DATA(rta);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
rta = RTA_NEXT(rta, rtalen);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metric < best_metric
|
|
||||||
&& iface_idx != -1)
|
|
||||||
{
|
|
||||||
struct ifreq req;
|
|
||||||
|
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
|
||||||
if (fd < 0)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "could not open AF_INET socket");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
memset(&req, 0, sizeof(req));
|
|
||||||
req.ifr_ifindex = iface_idx;
|
|
||||||
if (ioctl(fd, SIOCGIFNAME, &req) < 0 ||
|
|
||||||
ioctl(fd, SIOCGIFADDR, &req) < 0)
|
|
||||||
{
|
|
||||||
DBG1(DBG_APP, "could not read interface data, ignoring route");
|
|
||||||
close(fd);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy(defaultroute->iface, req.ifr_name, IFNAMSIZ);
|
|
||||||
defaultroute->iface[IFNAMSIZ-1] = '\0';
|
|
||||||
defaultroute->addr.u.v4 = *((struct sockaddr_in *) &req.ifr_addr);
|
|
||||||
defaultroute->nexthop.u.v4.sin_family = AF_INET;
|
|
||||||
|
|
||||||
if (gw.s_addr == INADDR_ANY)
|
|
||||||
{
|
|
||||||
if (ioctl(fd, SIOCGIFDSTADDR, &req) < 0 ||
|
|
||||||
((struct sockaddr_in*) &req.ifr_dstaddr)->sin_addr.s_addr == INADDR_ANY)
|
|
||||||
{
|
|
||||||
DBG2(DBG_APP, "Ignoring default route to device %s because we can't get it's destination",
|
|
||||||
req.ifr_name);
|
|
||||||
close(fd);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultroute->nexthop.u.v4 = *((struct sockaddr_in *) &req.ifr_dstaddr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
defaultroute->nexthop.u.v4.sin_addr = gw;
|
|
||||||
|
|
||||||
close(fd);
|
|
||||||
|
|
||||||
{
|
|
||||||
char addr[20];
|
|
||||||
char nexthop[20];
|
|
||||||
addrtot(&defaultroute->addr, 0, addr, sizeof(addr));
|
|
||||||
addrtot(&defaultroute->nexthop, 0, nexthop, sizeof(nexthop));
|
|
||||||
|
|
||||||
DBG2(DBG_APP,
|
|
||||||
( !defaultroute->defined
|
|
||||||
? "Default route found: iface=%s, addr=%s, nexthop=%s"
|
|
||||||
: "Better default route: iface=%s, addr=%s, nexthop=%s"
|
|
||||||
), defaultroute->iface, addr, nexthop
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
best_metric = metric;
|
|
||||||
defaultroute->defined = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
defaultroute->supported = TRUE;
|
|
||||||
|
|
||||||
if (!defaultroute->defined)
|
|
||||||
DBG1(DBG_APP, "no default route - cannot cope with %%defaultroute!!!");
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* !START_PLUTO */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pluto disabled, fall back to %any
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
get_defaultroute(defaultroute_t *defaultroute)
|
|
||||||
{
|
|
||||||
defaultroute->supported = FALSE;
|
|
||||||
}
|
|
||||||
#endif /* START_PLUTO */
|
|
||||||
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
/* strongSwan IPsec interfaces management
|
|
||||||
* Copyright (C) 2001-2002 Mathieu Lafon - Arkoon Network Security
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
* for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _STARTER_INTERFACES_H_
|
|
||||||
#define _STARTER_INTERFACES_H_
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <net/if.h>
|
|
||||||
|
|
||||||
#include "../pluto/constants.h"
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
bool defined;
|
|
||||||
bool supported;
|
|
||||||
char iface[IFNAMSIZ];
|
|
||||||
ip_address addr;
|
|
||||||
ip_address nexthop;
|
|
||||||
} defaultroute_t;
|
|
||||||
|
|
||||||
extern void get_defaultroute(defaultroute_t *defaultroute);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _STARTER_INTERFACES_H_ */
|
|
||||||
|
|
||||||
@@ -49,7 +49,6 @@
|
|||||||
#include "netkey.h"
|
#include "netkey.h"
|
||||||
#include "klips.h"
|
#include "klips.h"
|
||||||
#include "cmp.h"
|
#include "cmp.h"
|
||||||
#include "interfaces.h"
|
|
||||||
|
|
||||||
#ifndef LOG_AUTHPRIV
|
#ifndef LOG_AUTHPRIV
|
||||||
#define LOG_AUTHPRIV LOG_AUTH
|
#define LOG_AUTHPRIV LOG_AUTH
|
||||||
@@ -662,12 +661,6 @@ int main (int argc, char **argv)
|
|||||||
if (new_cfg && (new_cfg->err + new_cfg->non_fatal_err == 0))
|
if (new_cfg && (new_cfg->err + new_cfg->non_fatal_err == 0))
|
||||||
{
|
{
|
||||||
/* Switch to new config. New conn will be loaded below */
|
/* Switch to new config. New conn will be loaded below */
|
||||||
if (!starter_cmp_defaultroute(&new_cfg->defaultroute
|
|
||||||
, &cfg->defaultroute))
|
|
||||||
{
|
|
||||||
_action_ |= FLAG_ACTION_LISTEN;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!starter_cmp_pluto(cfg, new_cfg))
|
if (!starter_cmp_pluto(cfg, new_cfg))
|
||||||
{
|
{
|
||||||
DBG1(DBG_APP, "Pluto has changed");
|
DBG1(DBG_APP, "Pluto has changed");
|
||||||
|
|||||||
Reference in New Issue
Block a user