[M] Change in openvpn[master]: Extract multi_check_dest_addr_allowed from multi_process_float
"plaisthos \(Code Review\) via Openvpn-devel" <[email protected]> Thu, 30 Jul 2026 12:03:44 +0000
| Newsgroups | gmane.network.openvpn.devel |
|---|---|
| Message-ID | <78c834b1d83afc13bb86d0aa1a3dc50954522036-EmailReplacePatchSet-HTML@gerrit.openvpn.net> |
--===============4880053935476397327==
Content-Transfer-Encoding: 8bit
Content-Disposition: inline
Content-Type: multipart/alternative; boundary="r/S8GRGjozo="; charset=UTF-8
--r/S8GRGjozo=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Attention is currently required from: plaisthos=2E
Hello flichtenheld,
I=
'd like you to reexamine a change=2E Please visit
http://gerrit=2Eopen=
vpn=2Enet/c/openvpn/+/1723?usp=3Demail
to look at the new patch set (#15)=
=2E
The change is no longer submittable: checks~ChecksSubmitRule is unsati=
sfied now=2E
Change subject: Extract multi_check_dest_addr_allowed from m=
ulti_process_float
=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=
=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=
=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=2E=
=2E=2E
Extract multi_check_dest_addr_allowed from multi_process_float
Cha=
nge-Id: I3d52c6d008502293c3ec57ad22d1c613dcd1a94e
Signed-off-by: Arne Schwa=
be <arne@rfc2549=2Eorg>
---
M src/openvpn/multi=2Ec
1 file changed, 75 inse=
rtions(+), 45 deletions(-)
git pull ssh://gerrit=2Eopenvpn=2Enet:29418/=
openvpn refs/changes/23/1723/15
diff --git a/src/openvpn/multi=2Ec b/src/o=
penvpn/multi=2Ec
index 72b0b53=2E=2E9b64598 100644
--- a/src/openvpn/multi=
=2Ec
+++ b/src/openvpn/multi=2Ec
@@ -3069,6 +3069,76 @@
}
/**
+ * This =
methods checks if a client instance is allowed to use an address
+ *
+ * Re=
asons for disallowing a specific address are that a client might be
+ * alr=
eady using that address=2E In that case the method needs to decide
+ * if t=
his instance can kick out the other instance=2E
+ *
+ * The method will the=
n terminate the other instance if that check was
+ * positive=2E
+ */
+stat=
ic bool
+multi_check_dest_addr_allowed(struct multi_context *m, struct mult=
i_instance *mi, struct mroute_addr *real)
+{
+ struct hash *hash =3D m->=
hash;
+ const uint64_t hv =3D hash_value(hash, real);
+ struct hash_b=
ucket *bucket =3D hash_bucket(hash, hv);
+
+ /* make sure that we don't =
assign the client to an address taken by
+ * another client */
+ str=
uct hash_element *he =3D hash_lookup_fast(hash, bucket, real, hv);
+ if =
(!he)
+ {
+ /* Address is not taken, everything is fine=2E */
+ =
return true;
+ }
+
+ struct multi_instance *ex_mi =3D he->value=
;
+
+ struct tls_multi *m1 =3D mi->context=2Ec2=2Etls_multi;
+ struct=
tls_multi *m2 =3D ex_mi->context=2Ec2=2Etls_multi;
+
+ struct gc_arena =
gc =3D gc_new();
+ int ret =3D false;
+
+ /* do not allow if target a=
ddress is taken by client with another cert */
+ if (!cert_hash_compare(=
m1->locked_cert_hash_set, m2->locked_cert_hash_set))
+ {
+ msg(D_=
MULTI_LOW, "Disallow float to an address taken by another client %s",
+ =
multi_instance_string(ex_mi, false, &gc));
+
+ mi->context=
=2Ec2=2Ebuf=2Elen =3D 0;
+ goto done;
+ }
+
+ /* It doesn't ma=
ke sense to let a peer float to the address it already
+ * has, so we d=
isallow it=2E This can happen if a DCO netlink notification
+ * gets lo=
st and we miss a floating step=2E
+ */
+ if (m1->rx_peer_id =3D=3D m=
2->rx_peer_id)
+ {
+ msg(M_WARN,
+ "disallowing peer %=
" PRIu32 " (%s) from floating to "
+ "its own address (%s)",
+ =
m1->rx_peer_id, tls_common_name(mi->context=2Ec2=2Etls_multi, fal=
se),
+ mroute_addr_print(&mi->real, &gc));
+ goto done;
+=
}
+
+ msg(D_MULTI_LOW,
+ "closing instance %s due to float co=
llision with %s "
+ "using the same certificate",
+ multi_ins=
tance_string(ex_mi, false, &gc), multi_instance_string(mi, false, &gc));
+ =
multi_close_instance(m, ex_mi, false);
+ ret =3D true;
+
+done:
+ =
gc_free(&gc);
+ return ret;
+}
+
+/**
* Handles peer floating=2E
*
=
* If peer is floated to a taken address, either drops packet
@@ -3080,8 +3=
150,6 @@
multi_process_float(struct multi_context *m, struct multi_instanc=
e *mi, struct link_socket *sock)
{
struct mroute_addr real =3D { 0 };=
- struct hash *hash =3D m->hash;
- struct gc_arena gc =3D gc_new();
=
if (mi->real=2Etype & MR_WITH_PROTO)
{
@@ -3091,53 +3159,16 @@
=
if (!mroute_extract_openvpn_sockaddr(&real, &m->top=2Ec2=2Efrom=2Ede=
st, true))
{
- goto done;
+ return;
}
- const =
uint64_t hv =3D hash_value(hash, &real);
- struct hash_bucket *bucket =
=3D hash_bucket(hash, hv);
-
- /* make sure that we don't float to an ad=
dress taken by another client */
- struct hash_element *he =3D hash_look=
up_fast(hash, bucket, &real, hv);
- if (he)
+ if (!multi_check_dest_a=
ddr_allowed(m, mi, &real))
{
- struct multi_instance *ex_mi =3D=
(struct multi_instance *)he->value;
-
- struct tls_multi *m1 =3D mi=
->context=2Ec2=2Etls_multi;
- struct tls_multi *m2 =3D ex_mi->contex=
t=2Ec2=2Etls_multi;
-
- /* do not float if target address is taken b=
y client with another cert */
- if (!cert_hash_compare(m1->locked_ce=
rt_hash_set, m2->locked_cert_hash_set))
- {
- msg(D_MULTI=
_LOW, "Disallow float to an address taken by another client %s",
- =
multi_instance_string(ex_mi, false, &gc));
-
- mi->contex=
t=2Ec2=2Ebuf=2Elen =3D 0;
-
- goto done;
- }
-
- /=
* It doesn't make sense to let a peer float to the address it already
- =
* has, so we disallow it=2E This can happen if a DCO netlink notificat=
ion
- * gets lost and we miss a floating step=2E
- */
- =
if (m1->rx_peer_id =3D=3D m2->rx_peer_id)
- {
- msg(M=
_WARN,
- "disallowing peer %" PRIu32 " (%s) from floating to=
"
- "its own address (%s)",
- m1->rx_peer_id=
, tls_common_name(mi->context=2Ec2=2Etls_multi, false),
- mr=
oute_addr_print(&mi->real, &gc));
- goto done;
- }
-
- =
msg(D_MULTI_LOW,
- "closing instance %s due to float collis=
ion with %s "
- "using the same certificate",
- multi=
_instance_string(ex_mi, false, &gc), multi_instance_string(mi, false, &gc))=
;
- multi_close_instance(m, ex_mi, false);
+ return;
}
=
+ struct gc_arena gc =3D gc_new();
+
msg(D_MULTI_MEDIUM, "peer %" =
PRIu32 " (%s) floated from %s to %s",
mi->context=2Ec2=2Etls_multi=
->rx_peer_id,
tls_common_name(mi->context=2Ec2=2Etls_multi, false)=
,
@@ -3166,7 +3197,6 @@
ASSERT(hash_add(m->cid_hash, &mi->context=2Ec2=
=2Emda_context=2Ecid, mi, true));
#endif
-done:
gc_free(&gc);
}
=
--
To view, visit http://gerrit=2Eopenvpn=2Enet/c/openvpn/+/1723?usp=3Dem=
ail
To unsubscribe, or for help writing mail filters, visit http://gerrit=
=2Eopenvpn=2Enet/settings?usp=3Demail
Gerrit-MessageType: newpatchset
Gerr=
it-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I3d52c6d0085022=
93c3ec57ad22d1c613dcd1a94e
Gerrit-Change-Number: 1723
Gerrit-PatchSet: 15
G=
errit-Owner: plaisthos <arne-openvpn@rfc2549=2Eorg>
Gerrit-Reviewer: flicht=
enheld <frank@lichtenheld=2Ecom>
Gerrit-CC: openvpn-devel <openvpn-devel@li=
sts=2Esourceforge=2Enet>
Gerrit-Attention: plaisthos <arne-openvpn@rfc2549=
=2Eorg>
--r/S8GRGjozo=
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html><html><head><style></style></head><body><p> Attention is cur=
rently required from: plaisthos=2E </p>
<p>plaisthos <strong>uploaded patch=
set #15</strong> to this change=2E</p><p><a href=3D"http://gerrit=2Eopenvp=
n=2Enet/c/openvpn/+/1723?usp=3Demail">View Change</a></p><p>The change is n=
o longer submittable: checks~ChecksSubmitRule is unsatisfied now=2E</p><pre=
class=3D"blocks" style=3D"font-family: monospace,monospace; white-space: p=
re-wrap;">Extract multi_check_dest_addr_allowed from multi_process_float<br=
><br>Change-Id: I3d52c6d008502293c3ec57ad22d1c613dcd1a94e<br>Signed-off-by:=
Arne Schwabe <arne@rfc2549=2Eorg><br>---<br>M src/openvpn/multi=2Ec<=
br>1 file changed, 75 insertions(+), 45 deletions(-)<br><br></pre><pre clas=
s=3D"blocks" style=3D"font-family: monospace,monospace; white-space: pre-wr=
ap;">git pull ssh://gerrit=2Eopenvpn=2Enet:29418/openvpn refs/changes/23/17=
23/15</pre><pre style=3D"font-family: monospace,monospace; white-space: pre=
-wrap;"><span>diff --git a/src/openvpn/multi=2Ec b/src/openvpn/multi=2Ec</s=
pan><br><span>index 72b0b53=2E=2E9b64598 100644</span><br><span>--- a/src/o=
penvpn/multi=2Ec</span><br><span>+++ b/src/openvpn/multi=2Ec</span><br><spa=
n>@@ -3069,6 +3069,76 @@</span><br><span> }</span><br><span> </span><br><sp=
an> /**</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ * This meth=
ods checks if a client instance is allowed to use an address</span><br><spa=
n style=3D"color: hsl(120, 100%, 40%);">+ *</span><br><span style=3D"color:=
hsl(120, 100%, 40%);">+ * Reasons for disallowing a specific address are t=
hat a client might be</span><br><span style=3D"color: hsl(120, 100%, 40%);"=
>+ * already using that address=2E In that case the method needs to decide<=
/span><br><span style=3D"color: hsl(120, 100%, 40%);">+ * if this instance =
can kick out the other instance=2E</span><br><span style=3D"color: hsl(120,=
100%, 40%);">+ *</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ *=
The method will then terminate the other instance if that check was</span>=
<br><span style=3D"color: hsl(120, 100%, 40%);">+ * positive=2E</span><br><=
span style=3D"color: hsl(120, 100%, 40%);">+ */</span><br><span style=3D"co=
lor: hsl(120, 100%, 40%);">+static bool</span><br><span style=3D"color: hsl=
(120, 100%, 40%);">+multi_check_dest_addr_allowed(struct multi_context *m, =
struct multi_instance *mi, struct mroute_addr *real)</span><br><span style=
=3D"color: hsl(120, 100%, 40%);">+{</span><br><span style=3D"color: hsl(120=
, 100%, 40%);">+ struct hash *hash =3D m->hash;</span><br><span style=
=3D"color: hsl(120, 100%, 40%);">+ const uint64_t hv =3D hash_value(hash=
, real);</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ struct =
hash_bucket *bucket =3D hash_bucket(hash, hv);</span><br><span style=3D"col=
or: hsl(120, 100%, 40%);">+</span><br><span style=3D"color: hsl(120, 100%, =
40%);">+ /* make sure that we don't assign the client to an address =
taken by</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ * anot=
her client */</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ st=
ruct hash_element *he =3D hash_lookup_fast(hash, bucket, real, hv);</span><=
br><span style=3D"color: hsl(120, 100%, 40%);">+ if (!he)</span><br><spa=
n style=3D"color: hsl(120, 100%, 40%);">+ {</span><br><span style=3D"col=
or: hsl(120, 100%, 40%);">+ /* Address is not taken, everything is f=
ine=2E */</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ re=
turn true;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ }</sp=
an><br><span style=3D"color: hsl(120, 100%, 40%);">+</span><br><span style=
=3D"color: hsl(120, 100%, 40%);">+ struct multi_instance *ex_mi =3D he-&=
gt;value;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+</span><br=
><span style=3D"color: hsl(120, 100%, 40%);">+ struct tls_multi *m1 =3D =
mi->context=2Ec2=2Etls_multi;</span><br><span style=3D"color: hsl(120, 1=
00%, 40%);">+ struct tls_multi *m2 =3D ex_mi->context=2Ec2=2Etls_mult=
i;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+</span><br><span =
style=3D"color: hsl(120, 100%, 40%);">+ struct gc_arena gc =3D gc_new();=
</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ int ret =3D fal=
se;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+</span><br><span=
style=3D"color: hsl(120, 100%, 40%);">+ /* do not allow if target addre=
ss is taken by client with another cert */</span><br><span style=3D"color: =
hsl(120, 100%, 40%);">+ if (!cert_hash_compare(m1->locked_cert_hash_s=
et, m2->locked_cert_hash_set))</span><br><span style=3D"color: hsl(120, =
100%, 40%);">+ {</span><br><span style=3D"color: hsl(120, 100%, 40%);">+=
msg(D_MULTI_LOW, "Disallow float to an address taken by anothe=
r client %s",</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ =
multi_instance_string(ex_mi, false, &gc));</span><br><span s=
tyle=3D"color: hsl(120, 100%, 40%);">+</span><br><span style=3D"color: hsl(=
120, 100%, 40%);">+ mi->context=2Ec2=2Ebuf=2Elen =3D 0;</span><br=
><span style=3D"color: hsl(120, 100%, 40%);">+ goto done;</span><br>=
<span style=3D"color: hsl(120, 100%, 40%);">+ }</span><br><span style=3D=
"color: hsl(120, 100%, 40%);">+</span><br><span style=3D"color: hsl(120, 10=
0%, 40%);">+ /* It doesn't make sense to let a peer float to the add=
ress it already</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ =
* has, so we disallow it=2E This can happen if a DCO netlink notification<=
/span><br><span style=3D"color: hsl(120, 100%, 40%);">+ * gets lost and=
we miss a floating step=2E</span><br><span style=3D"color: hsl(120, 100%, =
40%);">+ */</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ =
if (m1->rx_peer_id =3D=3D m2->rx_peer_id)</span><br><span style=3D"co=
lor: hsl(120, 100%, 40%);">+ {</span><br><span style=3D"color: hsl(120, =
100%, 40%);">+ msg(M_WARN,</span><br><span style=3D"color: hsl(120, =
100%, 40%);">+ "disallowing peer %" PRIu32 " (%s)=
from floating to "</span><br><span style=3D"color: hsl(120, 100%, 40%=
);">+ "its own address (%s)",</span><br><span style=3D=
"color: hsl(120, 100%, 40%);">+ m1->rx_peer_id, tls_common_na=
me(mi->context=2Ec2=2Etls_multi, false),</span><br><span style=3D"color:=
hsl(120, 100%, 40%);">+ mroute_addr_print(&mi->real, &am=
p;gc));</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ goto=
done;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ }</span><=
br><span style=3D"color: hsl(120, 100%, 40%);">+</span><br><span style=3D"c=
olor: hsl(120, 100%, 40%);">+ msg(D_MULTI_LOW,</span><br><span style=3D"=
color: hsl(120, 100%, 40%);">+ "closing instance %s due to floa=
t collision with %s "</span><br><span style=3D"color: hsl(120, 100%, 4=
0%);">+ "using the same certificate",</span><br><span styl=
e=3D"color: hsl(120, 100%, 40%);">+ multi_instance_string(ex_mi, fal=
se, &gc), multi_instance_string(mi, false, &gc));</span><br><span s=
tyle=3D"color: hsl(120, 100%, 40%);">+ multi_close_instance(m, ex_mi, fa=
lse);</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ ret =3D tr=
ue;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+</span><br><span=
style=3D"color: hsl(120, 100%, 40%);">+done:</span><br><span style=3D"colo=
r: hsl(120, 100%, 40%);">+ gc_free(&gc);</span><br><span style=3D"co=
lor: hsl(120, 100%, 40%);">+ return ret;</span><br><span style=3D"color:=
hsl(120, 100%, 40%);">+}</span><br><span style=3D"color: hsl(120, 100%, 40=
%);">+</span><br><span style=3D"color: hsl(120, 100%, 40%);">+/**</span><br=
><span> * Handles peer floating=2E</span><br><span> *</span><br><span> *=
If peer is floated to a taken address, either drops packet</span><br><span=
>@@ -3080,8 +3150,6 @@</span><br><span> multi_process_float(struct multi_co=
ntext *m, struct multi_instance *mi, struct link_socket *sock)</span><br><s=
pan> {</span><br><span> struct mroute_addr real =3D { 0 };</span><br><s=
pan style=3D"color: hsl(0, 100%, 40%);">- struct hash *hash =3D m->ha=
sh;</span><br><span style=3D"color: hsl(0, 100%, 40%);">- struct gc_aren=
a gc =3D gc_new();</span><br><span> </span><br><span> if (mi->real=
=2Etype & MR_WITH_PROTO)</span><br><span> {</span><br><span>@@ -309=
1,53 +3159,16 @@</span><br><span> </span><br><span> if (!mroute_extract=
_openvpn_sockaddr(&real, &m->top=2Ec2=2Efrom=2Edest, true))</spa=
n><br><span> {</span><br><span style=3D"color: hsl(0, 100%, 40%);">- =
goto done;</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ =
return;</span><br><span> }</span><br><span> </span><br><span style=
=3D"color: hsl(0, 100%, 40%);">- const uint64_t hv =3D hash_value(hash, =
&real);</span><br><span style=3D"color: hsl(0, 100%, 40%);">- struct=
hash_bucket *bucket =3D hash_bucket(hash, hv);</span><br><span style=3D"co=
lor: hsl(0, 100%, 40%);">-</span><br><span style=3D"color: hsl(0, 100%, 40%=
);">- /* make sure that we don't float to an address taken by anothe=
r client */</span><br><span style=3D"color: hsl(0, 100%, 40%);">- struct=
hash_element *he =3D hash_lookup_fast(hash, bucket, &real, hv);</span>=
<br><span style=3D"color: hsl(0, 100%, 40%);">- if (he)</span><br><span =
style=3D"color: hsl(120, 100%, 40%);">+ if (!multi_check_dest_addr_allow=
ed(m, mi, &real))</span><br><span> {</span><br><span style=3D"color=
: hsl(0, 100%, 40%);">- struct multi_instance *ex_mi =3D (struct mul=
ti_instance *)he->value;</span><br><span style=3D"color: hsl(0, 100%, 40=
%);">-</span><br><span style=3D"color: hsl(0, 100%, 40%);">- struct =
tls_multi *m1 =3D mi->context=2Ec2=2Etls_multi;</span><br><span style=3D=
"color: hsl(0, 100%, 40%);">- struct tls_multi *m2 =3D ex_mi->con=
text=2Ec2=2Etls_multi;</span><br><span style=3D"color: hsl(0, 100%, 40%);">=
-</span><br><span style=3D"color: hsl(0, 100%, 40%);">- /* do not fl=
oat if target address is taken by client with another cert */</span><br><sp=
an style=3D"color: hsl(0, 100%, 40%);">- if (!cert_hash_compare(m1-&=
gt;locked_cert_hash_set, m2->locked_cert_hash_set))</span><br><span styl=
e=3D"color: hsl(0, 100%, 40%);">- {</span><br><span style=3D"color: =
hsl(0, 100%, 40%);">- msg(D_MULTI_LOW, "Disallow float to a=
n address taken by another client %s",</span><br><span style=3D"color:=
hsl(0, 100%, 40%);">- multi_instance_string(ex_mi, false, &=
amp;gc));</span><br><span style=3D"color: hsl(0, 100%, 40%);">-</span><br><=
span style=3D"color: hsl(0, 100%, 40%);">- mi->context=2Ec2=
=2Ebuf=2Elen =3D 0;</span><br><span style=3D"color: hsl(0, 100%, 40%);">-</=
span><br><span style=3D"color: hsl(0, 100%, 40%);">- goto done;<=
/span><br><span style=3D"color: hsl(0, 100%, 40%);">- }</span><br><s=
pan style=3D"color: hsl(0, 100%, 40%);">-</span><br><span style=3D"color: h=
sl(0, 100%, 40%);">- /* It doesn't make sense to let a peer floa=
t to the address it already</span><br><span style=3D"color: hsl(0, 100%, 40=
%);">- * has, so we disallow it=2E This can happen if a DCO netlink=
notification</span><br><span style=3D"color: hsl(0, 100%, 40%);">- =
* gets lost and we miss a floating step=2E</span><br><span style=3D"color:=
hsl(0, 100%, 40%);">- */</span><br><span style=3D"color: hsl(0, 10=
0%, 40%);">- if (m1->rx_peer_id =3D=3D m2->rx_peer_id)</span><=
br><span style=3D"color: hsl(0, 100%, 40%);">- {</span><br><span sty=
le=3D"color: hsl(0, 100%, 40%);">- msg(M_WARN,</span><br><span s=
tyle=3D"color: hsl(0, 100%, 40%);">- "disallowing peer =
%" PRIu32 " (%s) from floating to "</span><br><span style=3D=
"color: hsl(0, 100%, 40%);">- "its own address (%s)&quo=
t;,</span><br><span style=3D"color: hsl(0, 100%, 40%);">- m1=
->rx_peer_id, tls_common_name(mi->context=2Ec2=2Etls_multi, false),</=
span><br><span style=3D"color: hsl(0, 100%, 40%);">- mroute_=
addr_print(&mi->real, &gc));</span><br><span style=3D"color: hsl=
(0, 100%, 40%);">- goto done;</span><br><span style=3D"color: hs=
l(0, 100%, 40%);">- }</span><br><span style=3D"color: hsl(0, 100%, 4=
0%);">-</span><br><span style=3D"color: hsl(0, 100%, 40%);">- msg(D_=
MULTI_LOW,</span><br><span style=3D"color: hsl(0, 100%, 40%);">- =
"closing instance %s due to float collision with %s "</span><br>=
<span style=3D"color: hsl(0, 100%, 40%);">- "using the same=
certificate",</span><br><span style=3D"color: hsl(0, 100%, 40%);">- =
multi_instance_string(ex_mi, false, &gc), multi_instance_stri=
ng(mi, false, &gc));</span><br><span style=3D"color: hsl(0, 100%, 40%);=
">- multi_close_instance(m, ex_mi, false);</span><br><span style=3D"=
color: hsl(120, 100%, 40%);">+ return;</span><br><span> }</span>=
<br><span> </span><br><span style=3D"color: hsl(120, 100%, 40%);">+ stru=
ct gc_arena gc =3D gc_new();</span><br><span style=3D"color: hsl(120, 100%,=
40%);">+</span><br><span> msg(D_MULTI_MEDIUM, "peer %" PRIu3=
2 " (%s) floated from %s to %s",</span><br><span> mi->=
context=2Ec2=2Etls_multi->rx_peer_id,</span><br><span> tls_commo=
n_name(mi->context=2Ec2=2Etls_multi, false),</span><br><span>@@ -3166,7 =
+3197,6 @@</span><br><span> ASSERT(hash_add(m->cid_hash, &mi->=
;context=2Ec2=2Emda_context=2Ecid, mi, true));</span><br><span> #endif</spa=
n><br><span> </span><br><span style=3D"color: hsl(0, 100%, 40%);">-done:</s=
pan><br><span> gc_free(&gc);</span><br><span> }</span><br><span> </=
span><br><span></span><br></pre><p>To view, visit <a href=3D"http://gerrit=
=2Eopenvpn=2Enet/c/openvpn/+/1723?usp=3Demail">change 1723</a>=2E To unsubs=
cribe, or for help writing mail filters, visit <a href=3D"http://gerrit=2Eo=
penvpn=2Enet/settings?usp=3Demail">settings</a>=2E</p><div itemscope itemty=
pe=3D"http://schema=2Eorg/EmailMessage"><div itemscope itemprop=3D"action" =
itemtype=3D"http://schema=2Eorg/ViewAction"><link itemprop=3D"url" href=3D"=
http://gerrit=2Eopenvpn=2Enet/c/openvpn/+/1723?usp=3Demail"/><meta itemprop=
=3D"name" content=3D"View Change"/></div></div>
<div style=3D"display:none=
"> Gerrit-MessageType: newpatchset </div>
<div style=3D"display:none"> Gerr=
it-Project: openvpn </div>
<div style=3D"display:none"> Gerrit-Branch: mast=
er </div>
<div style=3D"display:none"> Gerrit-Change-Id: I3d52c6d008502293c=
3ec57ad22d1c613dcd1a94e </div>
<div style=3D"display:none"> Gerrit-Change-N=
umber: 1723 </div>
<div style=3D"display:none"> Gerrit-PatchSet: 15 </div>
=
<div style=3D"display:none"> Gerrit-Owner: plaisthos <arne-openvpn@rfc25=
49=2Eorg> </div>
<div style=3D"display:none"> Gerrit-Reviewer: flichtenh=
eld <frank@lichtenheld=2Ecom> </div>
<div style=3D"display:none"> Ger=
rit-CC: openvpn-devel <openvpn-devel@lists=2Esourceforge=2Enet> </div=
>
<div style=3D"display:none"> Gerrit-Attention: plaisthos <arne-openvpn=
@rfc2549=2Eorg> </div>
</body></html>
--r/S8GRGjozo=--
--===============4880053935476397327==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============4880053935476397327==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel
--===============4880053935476397327==--