[Openvpn-devel] [S] Change in openvpn[master]: Extract multi_get_instance_udp_real method
"plaisthos \(Code Review\) via Openvpn-devel" <[email protected]> Thu, 30 Jul 2026 12:03:44 +0000
| Newsgroups | net.sourceforge.lists.openvpn-devel |
|---|---|
| Message-ID | <a409f8209872278fb5d90471d3f59e86c215e53e-EmailReplacePatchSet-HTML@gerrit.openvpn.net> |
--===============0320761490492325123==
Content-Transfer-Encoding: 8bit
Content-Disposition: inline
Content-Type: multipart/alternative; boundary="ov2EaacHJpM="; charset=UTF-8
--ov2EaacHJpM=
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/+/1725?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_get_instance_udp_real method
=
=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=
_get_instance_udp_real method
This is just a small refactoring to make the=
code a little bit
better organised=2E
Change-Id: I37ade55d7674c68dd98cf4d=
fde35c4ad42e20d39
Signed-off-by: Arne Schwabe <arne@rfc2549=2Eorg>
---
M sr=
c/openvpn/mudp=2Ec
1 file changed, 25 insertions(+), 8 deletions(-)
git=
pull ssh://gerrit=2Eopenvpn=2Enet:29418/openvpn refs/changes/25/1725/15
d=
iff --git a/src/openvpn/mudp=2Ec b/src/openvpn/mudp=2Ec
index b64cdd7=2E=2E=
596a458 100644
--- a/src/openvpn/mudp=2Ec
+++ b/src/openvpn/mudp=2Ec
@@ -20=
5,7 +205,6 @@
handle_connection_attempt(struct multi_context *m,
=
struct link_socket *sock,
stru=
ct mroute_addr *real,
- const uint64_t hv,
=
struct hash_bucket *bucket)
{
struct hash *hash =
=3D m->hash;
@@ -236,6 +235,7 @@
mi =3D multi_create_instance(=
m, real, sock);
if (mi)
{
+ const =
uint64_t hv =3D hash_value(hash, real);
hash_add_fast(hash=
, bucket, &mi->real, hv, mi);
mi->did_real_hash =3D true;
=
multi_assign_peer_id(m, mi);
@@ -265,6 +265,28 @@
}
/*=
*
+ * Looks up an multi instance by its real address (IP and port)
+ * @par=
am m multi context
+ * @param real Address to look up
+ * @return =
instance matching the address, NULL otherwise
+ */
+static struct multi_in=
stance *
+multi_get_instance_udp_real(struct multi_context *m, struct mrout=
e_addr *real)
+{
+ struct hash *hash =3D m->hash;
+ struct hash_eleme=
nt *he;
+ const uint64_t hv =3D hash_value(hash, real);
+ struct hash=
_bucket *bucket =3D hash_bucket(hash, hv);
+ he =3D hash_lookup_fast(has=
h, bucket, real, hv);
+ if (he)
+ {
+ return he->value;
+ }=
+ return NULL;
+}
+
+
+/**
* Get a client instance based on real addr=
ess=2E If
* the instance doesn't exist, create it while
* maintaining =
real address hash table atomicity=2E
@@ -280,7 +302,6 @@
if (mroute_=
extract_openvpn_sockaddr(&real, &m->top=2Ec2=2Efrom=2Edest, true) && m->top=
=2Ec2=2Ebuf=2Elen > 0)
{
- struct hash_element *he;
co=
nst uint64_t hv =3D hash_value(hash, &real);
struct hash_bucket *b=
ucket =3D hash_bucket(hash, hv);
uint8_t *ptr =3D BPTR(&m->top=2Ec=
2=2Ebuf);
@@ -317,17 +338,13 @@
}
if (!v2 || peer_id_disa=
bled)
{
- he =3D hash_lookup_fast(hash, bucket, &real, =
hv);
- if (he)
- {
- mi =3D (struct mu=
lti_instance *)he->value;
- }
+ mi =3D multi_get_inst=
ance_udp_real(m, &real);
}
/* we have no existing multi=
instance for this connection */
if (!mi)
{
- =
mi =3D handle_connection_attempt(m, sock, &real, hv, bucket);
+ =
mi =3D handle_connection_attempt(m, sock, &real, bucket);
}
#if=
def ENABLE_DEBUG
--
To view, visit http://gerrit=2Eopenvpn=2Enet/c/openvp=
n/+/1725?usp=3Demail
To unsubscribe, or for help writing mail filters, visi=
t http://gerrit=2Eopenvpn=2Enet/settings?usp=3Demail
Gerrit-MessageType: n=
ewpatchset
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: =
I37ade55d7674c68dd98cf4dfde35c4ad42e20d39
Gerrit-Change-Number: 1725
Gerrit=
-PatchSet: 15
Gerrit-Owner: plaisthos <arne-openvpn@rfc2549=2Eorg>
Gerrit-R=
eviewer: flichtenheld <frank@lichtenheld=2Ecom>
Gerrit-CC: openvpn-devel <o=
penvpn-devel@lists=2Esourceforge=2Enet>
Gerrit-Attention: plaisthos <arne-o=
penvpn@rfc2549=2Eorg>
--ov2EaacHJpM=
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/+/1725?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_get_instance_udp_real method<br><br>This is just a =
small refactoring to make the code a little bit<br>better organised=2E<br><=
br>Change-Id: I37ade55d7674c68dd98cf4dfde35c4ad42e20d39<br>Signed-off-by: A=
rne Schwabe <arne@rfc2549=2Eorg><br>---<br>M src/openvpn/mudp=2Ec<br>=
1 file changed, 25 insertions(+), 8 deletions(-)<br><br></pre><pre class=3D=
"blocks" style=3D"font-family: monospace,monospace; white-space: pre-wrap;"=
>git pull ssh://gerrit=2Eopenvpn=2Enet:29418/openvpn refs/changes/25/1725/1=
5</pre><pre style=3D"font-family: monospace,monospace; white-space: pre-wra=
p;"><span>diff --git a/src/openvpn/mudp=2Ec b/src/openvpn/mudp=2Ec</span><b=
r><span>index b64cdd7=2E=2E596a458 100644</span><br><span>--- a/src/openvpn=
/mudp=2Ec</span><br><span>+++ b/src/openvpn/mudp=2Ec</span><br><span>@@ -20=
5,7 +205,6 @@</span><br><span> handle_connection_attempt(struct multi_conte=
xt *m,</span><br><span> struct link_socket *sock,=
</span><br><span> struct mroute_addr *real,</span=
><br><span style=3D"color: hsl(0, 100%, 40%);">- c=
onst uint64_t hv,</span><br><span> struct hash_bu=
cket *bucket)</span><br><span> {</span><br><span> struct hash *hash =3D=
m->hash;</span><br><span>@@ -236,6 +235,7 @@</span><br><span> =
mi =3D multi_create_instance(m, real, sock);</span><br><span> =
if (mi)</span><br><span> {</span><br><span style=3D"color: hs=
l(120, 100%, 40%);">+ const uint64_t hv =3D hash_value(hash,=
real);</span><br><span> hash_add_fast(hash, bucket, &m=
i->real, hv, mi);</span><br><span> mi->did_real_hash =
=3D true;</span><br><span> multi_assign_peer_id(m, mi);</sp=
an><br><span>@@ -265,6 +265,28 @@</span><br><span> }</span><br><span> </spa=
n><br><span> /**</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ * =
Looks up an multi instance by its real address (IP and port)</span><br><spa=
n style=3D"color: hsl(120, 100%, 40%);">+ * @param m multi context</spa=
n><br><span style=3D"color: hsl(120, 100%, 40%);">+ * @param real Address =
to look up</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ * @retur=
n instance matching the address, NULL otherwise</span><br><span style=
=3D"color: hsl(120, 100%, 40%);">+ */</span><br><span style=3D"color: hsl(1=
20, 100%, 40%);">+static struct multi_instance *</span><br><span style=3D"c=
olor: hsl(120, 100%, 40%);">+multi_get_instance_udp_real(struct multi_conte=
xt *m, struct mroute_addr *real)</span><br><span style=3D"color: hsl(120, 1=
00%, 40%);">+{</span><br><span style=3D"color: hsl(120, 100%, 40%);">+ s=
truct hash *hash =3D m->hash;</span><br><span style=3D"color: hsl(120, 1=
00%, 40%);">+ struct hash_element *he;</span><br><span style=3D"color: h=
sl(120, 100%, 40%);">+ const uint64_t hv =3D hash_value(hash, real);</sp=
an><br><span style=3D"color: hsl(120, 100%, 40%);">+ struct hash_bucket =
*bucket =3D hash_bucket(hash, hv);</span><br><span style=3D"color: hsl(120,=
100%, 40%);">+ he =3D hash_lookup_fast(hash, bucket, real, hv);</span><=
br><span style=3D"color: hsl(120, 100%, 40%);">+ if (he)</span><br><span=
style=3D"color: hsl(120, 100%, 40%);">+ {</span><br><span style=3D"colo=
r: hsl(120, 100%, 40%);">+ return he->value;</span><br><span styl=
e=3D"color: hsl(120, 100%, 40%);">+ }</span><br><span style=3D"color: hs=
l(120, 100%, 40%);">+ return NULL;</span><br><span style=3D"color: hsl(1=
20, 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 st=
yle=3D"color: hsl(120, 100%, 40%);">+/**</span><br><span> * Get a client i=
nstance based on real address=2E If</span><br><span> * the instance doesn=
't exist, create it while</span><br><span> * maintaining real address =
hash table atomicity=2E</span><br><span>@@ -280,7 +302,6 @@</span><br><span=
> </span><br><span> if (mroute_extract_openvpn_sockaddr(&real, &=
;m->top=2Ec2=2Efrom=2Edest, true) && m->top=2Ec2=2Ebuf=2Elen =
> 0)</span><br><span> {</span><br><span style=3D"color: hsl(0, 100%,=
40%);">- struct hash_element *he;</span><br><span> const ui=
nt64_t hv =3D hash_value(hash, &real);</span><br><span> struct =
hash_bucket *bucket =3D hash_bucket(hash, hv);</span><br><span> uin=
t8_t *ptr =3D BPTR(&m->top=2Ec2=2Ebuf);</span><br><span>@@ -317,17 +=
338,13 @@</span><br><span> }</span><br><span> if (!v2 || pe=
er_id_disabled)</span><br><span> {</span><br><span style=3D"color: =
hsl(0, 100%, 40%);">- 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(0, 100%, 40%);">- =
{</span><br><span style=3D"color: hsl(0, 100%, 40%);">- mi =
=3D (struct multi_instance *)he->value;</span><br><span style=3D"color: =
hsl(0, 100%, 40%);">- }</span><br><span style=3D"color: hsl(120,=
100%, 40%);">+ mi =3D multi_get_instance_udp_real(m, &real)=
;</span><br><span> }</span><br><span> </span><br><span> /* =
we have no existing multi instance for this connection */</span><br><span> =
if (!mi)</span><br><span> {</span><br><span style=3D"color:=
hsl(0, 100%, 40%);">- mi =3D handle_connection_attempt(m, sock,=
&real, hv, bucket);</span><br><span style=3D"color: hsl(120, 100%, 40%=
);">+ mi =3D handle_connection_attempt(m, sock, &real, bucke=
t);</span><br><span> }</span><br><span> </span><br><span> #ifdef EN=
ABLE_DEBUG</span><br><span></span><br></pre><p>To view, visit <a href=3D"ht=
tp://gerrit=2Eopenvpn=2Enet/c/openvpn/+/1725?usp=3Demail">change 1725</a>=
=2E To unsubscribe, or for help writing mail filters, visit <a href=3D"http=
://gerrit=2Eopenvpn=2Enet/settings?usp=3Demail">settings</a>=2E</p><div ite=
mscope itemtype=3D"http://schema=2Eorg/EmailMessage"><div itemscope itempro=
p=3D"action" itemtype=3D"http://schema=2Eorg/ViewAction"><link itemprop=3D"=
url" href=3D"http://gerrit=2Eopenvpn=2Enet/c/openvpn/+/1725?usp=3Demail"/><=
meta itemprop=3D"name" content=3D"View Change"/></div></div>
<div style=3D=
"display:none"> Gerrit-MessageType: newpatchset </div>
<div style=3D"displa=
y:none"> Gerrit-Project: openvpn </div>
<div style=3D"display:none"> Gerrit=
-Branch: master </div>
<div style=3D"display:none"> Gerrit-Change-Id: I37ad=
e55d7674c68dd98cf4dfde35c4ad42e20d39 </div>
<div style=3D"display:none"> Ge=
rrit-Change-Number: 1725 </div>
<div style=3D"display:none"> Gerrit-PatchSe=
t: 15 </div>
<div style=3D"display:none"> Gerrit-Owner: plaisthos <arne-=
openvpn@rfc2549=2Eorg> </div>
<div style=3D"display:none"> Gerrit-Review=
er: flichtenheld <frank@lichtenheld=2Ecom> </div>
<div style=3D"displ=
ay:none"> Gerrit-CC: openvpn-devel <openvpn-devel@lists=2Esourceforge=2E=
net> </div>
<div style=3D"display:none"> Gerrit-Attention: plaisthos <=
;arne-openvpn@rfc2549=2Eorg> </div>
</body></html>
--ov2EaacHJpM=--
--===============0320761490492325123==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============0320761490492325123==
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
--===============0320761490492325123==--