FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
b
d
e
f
g
i
l
m
n
o
p
r
s
t
v
w
Functions
d
f
g
l
m
n
o
p
t
v
Variables
Typedefs
Enumerations
Enumerator
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
z
~
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
c
e
g
h
k
m
n
o
r
s
Related Functions
c
d
e
h
i
m
o
p
r
s
v
Source
Files
Symbols
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Typedefs
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
Macros
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
wireguard_index_table.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020 Doc.ai and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
16
#include <
vppinfra/hash.h
>
17
#include <
vppinfra/pool.h
>
18
#include <
vppinfra/random.h
>
19
#include <
wireguard/wireguard_index_table.h
>
20
21
u32
22
wg_index_table_add
(
wg_index_table_t
* table,
u32
peer_pool_idx,
u32
rnd_seed)
23
{
24
u32
key
;
25
26
while
(1)
27
{
28
key
=
random_u32
(&rnd_seed);
29
if
(
hash_get
(table->
hash
,
key
))
30
continue
;
31
32
hash_set
(table->
hash
,
key
, peer_pool_idx);
33
break
;
34
}
35
return
key
;
36
}
37
38
void
39
wg_index_table_del
(
wg_index_table_t
* table,
u32
key
)
40
{
41
uword
*p;
42
p =
hash_get
(table->
hash
,
key
);
43
if
(p)
44
hash_unset
(table->
hash
,
key
);
45
}
46
47
u32
*
48
wg_index_table_lookup
(
const
wg_index_table_t
* table,
u32
key
)
49
{
50
uword
*p;
51
52
p =
hash_get
(table->
hash
,
key
);
53
return
(
u32
*) p;
54
}
55
56
/*
57
* fd.io coding-style-patch-verification: ON
58
*
59
* Local Variables:
60
* eval: (c-set-style "gnu")
61
* End:
62
*/
wireguard_index_table.h
wg_index_table_add
u32 wg_index_table_add(wg_index_table_t *table, u32 peer_pool_idx, u32 rnd_seed)
Definition:
wireguard_index_table.c:22
wg_index_table_t::hash
uword * hash
Definition:
wireguard_index_table.h:23
key
typedef key
Definition:
ipsec_types.api:88
random_u32
static u32 random_u32(u32 *seed)
32-bit random number generator
Definition:
random.h:69
hash_set
#define hash_set(h, key, value)
Definition:
hash.h:255
wg_index_table_lookup
u32 * wg_index_table_lookup(const wg_index_table_t *table, u32 key)
Definition:
wireguard_index_table.c:48
random.h
uword
u64 uword
Definition:
types.h:112
hash_get
#define hash_get(h, key)
Definition:
hash.h:249
wg_index_table_t
Definition:
wireguard_index_table.h:21
pool.h
Fixed length block allocator. Pools are built from clib vectors and bitmaps. Use pools when repeatedl...
u32
unsigned int u32
Definition:
types.h:88
hash_unset
#define hash_unset(h, key)
Definition:
hash.h:261
hash.h
wg_index_table_del
void wg_index_table_del(wg_index_table_t *table, u32 key)
Definition:
wireguard_index_table.c:39
src
plugins
wireguard
wireguard_index_table.c
Generated on Sat Jan 8 2022 10:04:28 for FD.io VPP by
1.8.17