Hi,
the iked.conf(5) manpage says: "If srcid is omitted, the default is to
use the hostname of the local machine, see hostname(1) to set or print
the hostname." This was true but I broke it with a commit about two
years ago :(
The following diff tells ikev2_policy2id() in ca_setreq() that it's
dealing with a srcid that needs to be obtained from the local hostname
if empty (setting the srcid parameter to 1). This code is called
after receiving a CERTREQ from the peer: The peer gives us a list of
SHA1 hashes of accepted CAs and we look up a matching host certificate
that is signed by one of these CAs and includes a subjectAltName field
that matches our srcid.
This should unbreak some configurations with OpenBSD as the initiator.
OK?
Reyk
Index: ca.c
===================================================================
RCS file: /cvs/src/sbin/iked/ca.c,v
retrieving revision 1.18
diff -u -p -r1.18 ca.c
--- ca.c 18 Sep 2012 12:07:59 -0000 1.18
+++ ca.c 9 Oct 2012 10:19:03 -0000
@@ -248,7 +248,7 @@ ca_setreq(struct iked *env, struct iked_
/* Convert to a static Id */
bzero(&id, sizeof(id));
- if (ikev2_policy2id(localid, &id, 0) != 0)
+ if (ikev2_policy2id(localid, &id, 1) != 0)
return (-1);
bzero(&idb, sizeof(idb));