From 8743c77697568c88131c3c39a0b1e002e1fa09a0 Mon Sep 17 00:00:00 2001 Message-Id: <8743c77697568c88131c3c39a0b1e002e1fa09a0.1714019850.git.mdw@distorted.org.uk> From: Mark Wooding Date: Mon, 27 Jun 2011 09:41:02 +0100 Subject: [PATCH] server: Repurpose the flags in `peerspec'. Organization: Straylight/Edgeware From: Mark Wooding They're now general flags, though they share the bottom bits of the space with key-exchange flags. This is just a preliminary refactoring: we'll be adding some peer-specific flags later. --- debian/changelog | 6 +++++- server/admin.c | 4 ++-- server/peer.c | 4 ++-- server/tripe.h | 3 ++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4d8a4416..29df1d5e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,12 @@ tripe (1.0.0pre11~preview) experimental; urgency=low arrange for that directory to exist with the correct permissions. Don't try to open the log until after dropping privileges, so as to provide a check that we can reopen them later. + * New peer option `mobile' can be set in peers.d files to indicate that + the peer's IP address and/or port are highly volatile and the server + should try to keep up with changes by attempting to decrypt incoming + packets using any available mobile keys. - -- Mark Wooding Mon, 27 Jun 2011 09:51:08 +0100 + -- Mark Wooding Mon, 27 Jun 2011 09:50:31 +0100 tripe (1.0.0pre10) experimental; urgency=low diff --git a/server/admin.c b/server/admin.c index 8eb5ec3c..df8af92b 100644 --- a/server/admin.c +++ b/server/admin.c @@ -1232,7 +1232,7 @@ static void acmd_add(admin *a, unsigned ac, char *av[]) add->peer.tag = 0; add->peer.t_ka = 0; add->peer.tops = tun_default; - add->peer.kxf = 0; + add->peer.f = 0; /* --- Parse options --- */ @@ -1252,7 +1252,7 @@ static void acmd_add(admin *a, unsigned ac, char *av[]) } }) OPTTIME("-keepalive", t, { add->peer.t_ka = t; }) - OPT("-cork", { add->peer.kxf |= KXF_CORK; }) + OPT("-cork", { add->peer.f |= KXF_CORK; }) OPTARG("-key", arg, { if (add->peer.tag) xfree(add->peer.tag); diff --git a/server/peer.c b/server/peer.c index 456efd77..ec89f771 100644 --- a/server/peer.c +++ b/server/peer.c @@ -753,14 +753,14 @@ peer *p_create(peerspec *spec) T( trace(T_TUNNEL, "peer: attached interface %s to peer `%s'", p->ifname, p_name(p)); ) p_setkatimer(p); - if (kx_init(&p->kx, p, &p->ks, p->spec.kxf)) + if (kx_init(&p->kx, p, &p->ks, p->spec.f & PSF_KXMASK)) goto tidy_4; a_notify("ADD", "?PEER", p, "%s", p->ifname, "?ADDR", &p->spec.sa, A_END); - if (!(p->spec.kxf & KXF_CORK)) { + if (!(p->spec.f & KXF_CORK)) { a_notify("KXSTART", "?PEER", p, A_END); /* Couldn't tell anyone before */ } diff --git a/server/tripe.h b/server/tripe.h index adb87e2c..b6c1cd5d 100644 --- a/server/tripe.h +++ b/server/tripe.h @@ -340,7 +340,8 @@ typedef struct peerspec { unsigned long t_ka; /* Keep alive interval */ addr sa; /* Socket address to speak to */ size_t sasz; /* Socket address size */ - unsigned kxf; /* Key exchange flags to set */ + unsigned f; /* Flags for the peer */ +#define PSF_KXMASK 255u /* Key exchange flags to set */ } peerspec; typedef struct peer_byname { -- [mdw]