summaryrefslogtreecommitdiff
path: root/src/whack
diff options
context:
space:
mode:
authorRene Mayrhofer <rene@mayrhofer.eu.org>2010-05-25 19:01:36 +0000
committerRene Mayrhofer <rene@mayrhofer.eu.org>2010-05-25 19:01:36 +0000
commit1ac70afcc1f7d6d2738a34308810719b0976d29f (patch)
tree805f6ce2a15d1a717781d7cbceac8408a74b6b0c /src/whack
parented7d79f96177044949744da10f4431c1d6242241 (diff)
downloadvyos-strongswan-1ac70afcc1f7d6d2738a34308810719b0976d29f.tar.gz
vyos-strongswan-1ac70afcc1f7d6d2738a34308810719b0976d29f.zip
[svn-upgrade] Integrating new upstream version, strongswan (4.4.0)
Diffstat (limited to 'src/whack')
-rw-r--r--src/whack/Makefile.in1
-rw-r--r--src/whack/whack.c41
-rw-r--r--src/whack/whack.h6
3 files changed, 43 insertions, 5 deletions
diff --git a/src/whack/Makefile.in b/src/whack/Makefile.in
index eb6238d80..098e5110e 100644
--- a/src/whack/Makefile.in
+++ b/src/whack/Makefile.in
@@ -196,6 +196,7 @@ ipsecuid = @ipsecuid@
ipsecuser = @ipsecuser@
libdir = @libdir@
libexecdir = @libexecdir@
+libhydra_plugins = @libhydra_plugins@
libstrongswan_plugins = @libstrongswan_plugins@
linux_headers = @linux_headers@
localedir = @localedir@
diff --git a/src/whack/whack.c b/src/whack/whack.c
index c458d6760..5f986108b 100644
--- a/src/whack/whack.c
+++ b/src/whack/whack.c
@@ -185,6 +185,10 @@ static void help(void)
" [--debug-private]"
"\n\n"
#endif
+ "leases: whack --leases"
+ " [--name <connection_name>]"
+ " [--lease-addr <ip-address> | --lease-id <identity>]"
+ "\n\n"
"listen: whack"
" (--listen | --unlisten)"
"\n\n"
@@ -322,6 +326,10 @@ enum {
OPT_LISTEN,
OPT_UNLISTEN,
+ OPT_LEASES,
+ OPT_LEASEADDR,
+ OPT_LEASEID,
+
OPT_PURGEOCSP,
OPT_REREADSECRETS,
@@ -519,6 +527,10 @@ static const struct option long_opts[] = {
{ "listen", no_argument, NULL, OPT_LISTEN + OO },
{ "unlisten", no_argument, NULL, OPT_UNLISTEN + OO },
+ { "leases", no_argument, NULL, OPT_LEASES + OO },
+ { "lease-addr", required_argument, NULL, OPT_LEASEADDR + OO },
+ { "lease-id", required_argument, NULL, OPT_LEASEID + OO },
+
{ "purgeocsp", no_argument, NULL, OPT_PURGEOCSP + OO },
{ "rereadsecrets", no_argument, NULL, OPT_REREADSECRETS + OO },
@@ -1103,6 +1115,18 @@ int main(int argc, char **argv)
diagq("0.0.0.0 or 0::0 isn't a valid client address", optarg);
continue;
+ case OPT_LEASES: /* --leases */
+ msg.whack_leases = TRUE;
+ continue;
+
+ case OPT_LEASEADDR: /* --lease-addr <ip-address> */
+ msg.whack_lease_ip = optarg; /* decoded by Pluto */
+ continue;
+
+ case OPT_LEASEID: /* --lease-id <identity> */
+ msg.whack_lease_id = optarg; /* decoded by Pluto */
+ continue;
+
case OPT_LISTEN: /* --listen */
msg.whack_listen = TRUE;
continue;
@@ -1618,6 +1642,12 @@ int main(int argc, char **argv)
break;
}
+ /* check leases */
+ if (LHAS(opts_seen, OPT_LEASEADDR) && LHAS(opts_seen, OPT_LEASEID))
+ {
+ diag("--lease-addr and --lease-id cannot be used together");
+ }
+
/* check connection description */
if (LHAS(opts_seen, OPT_CD))
{
@@ -1682,7 +1712,7 @@ int main(int argc, char **argv)
if (!LHAS(opts_seen, OPT_NAME) && !msg.whack_ca)
diag("missing --name <connection_name>");
}
- else if (!msg.whack_options && !msg.whack_status)
+ else if (!msg.whack_options && !msg.whack_status && !msg.whack_leases)
{
if (LHAS(opts_seen, OPT_NAME))
diag("no reason for --name");
@@ -1698,9 +1728,10 @@ int main(int argc, char **argv)
|| msg.whack_delete || msg.whack_deletestate
|| msg.whack_initiate || msg.whack_oppo_initiate || msg.whack_terminate
|| msg.whack_route || msg.whack_unroute || msg.whack_listen
- || msg.whack_unlisten || msg.whack_list || msg.whack_purgeocsp || msg.whack_reread
- || msg.whack_ca || msg.whack_status || msg.whack_options || msg.whack_shutdown
- || msg.whack_sc_op))
+ || msg.whack_unlisten || msg.whack_list || msg.whack_purgeocsp
+ || msg.whack_reread || msg.whack_ca || msg.whack_status
+ || msg.whack_options || msg.whack_shutdown || msg.whack_sc_op
+ || msg.whack_leases))
{
diag("no action specified; try --help for hints");
}
@@ -1771,6 +1802,8 @@ int main(int argc, char **argv)
|| !pack_str(&msg.ike) /* string 24 */
|| !pack_str(&msg.esp) /* string 25 */
|| !pack_str(&msg.sc_data) /* string 26 */
+ || !pack_str(&msg.whack_lease_ip) /* string 27 */
+ || !pack_str(&msg.whack_lease_id) /* string 28 */
|| str_roof - next_str < (ptrdiff_t)msg.keyval.len)
diag("too many bytes of strings to fit in message to pluto");
diff --git a/src/whack/whack.h b/src/whack/whack.h
index 3f66a7b4f..b495d3489 100644
--- a/src/whack/whack.h
+++ b/src/whack/whack.h
@@ -65,7 +65,7 @@ struct whack_end {
int sourceip_mask;
ip_address host_addr;
ip_address host_nexthop;
- ip_address host_srcip;
+ ip_address host_srcip;
ip_subnet client;
bool key_from_DNS_on_demand;
bool has_client;
@@ -177,6 +177,10 @@ struct whack_message {
bool whack_deletestate;
so_serial_t whack_deletestateno;
+ /* for WHACK_LEASES: */
+ bool whack_leases;
+ char *whack_lease_ip, *whack_lease_id;
+
/* for WHACK_LISTEN: */
bool whack_listen, whack_unlisten;