FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
flowhash_8_8.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012 Cisco 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
#ifndef SRC_VPPINFRA_FLOWHASH_8_8_H_
17
#define SRC_VPPINFRA_FLOWHASH_8_8_H_
18
19
#ifdef __included_flowhash_template_h__
20
#undef __included_flowhash_template_h__
21
#endif
22
23
#include <
vppinfra/clib.h
>
24
#include <
vppinfra/xxhash.h
>
25
#include <
vppinfra/crc32.h
>
26
27
typedef
struct
{
28
u64
as_u64
[1];
29
}
flowhash_skey_8_8_t
;
30
31
typedef
struct
{
32
u64
as_u64
[1];
33
}
flowhash_lkey_8_8_t
;
34
35
typedef
struct
{
36
u64
as_u64
[1];
37
}
flowhash_value_8_8_t
;
38
39
#define FLOWHASH_TYPE _8_8
40
#include <
vppinfra/flowhash_template.h
>
41
#undef FLOWHASH_TYPE
42
43
static_always_inline
44
u32
flowhash_hash_8_8
(
flowhash_lkey_8_8_t
*k)
45
{
46
#ifdef clib_crc32c_uses_intrinsics
47
return
clib_crc32c ((
u8
*) &k->
as_u64
[0], 8);
48
#else
49
return
clib_xxhash
(k->
as_u64
[0]);
50
#endif
51
}
52
53
static_always_inline
54
u8
flowhash_cmp_key_8_8
(
flowhash_skey_8_8_t
*
a
,
55
flowhash_lkey_8_8_t
*
b
)
56
{
57
return
a
->as_u64[0] !=
b
->as_u64[0];
58
}
59
60
static_always_inline
61
void
flowhash_cpy_key_8_8
(
flowhash_skey_8_8_t
*
dst
,
62
flowhash_lkey_8_8_t
*
src
)
63
{
64
dst
->as_u64[0] =
src
->as_u64[0];
65
}
66
67
#endif
/* SRC_VPPINFRA_FLOWHASH_8_8_H_ */
clib.h
flowhash_cpy_key_8_8
static_always_inline void flowhash_cpy_key_8_8(flowhash_skey_8_8_t *dst, flowhash_lkey_8_8_t *src)
Definition:
flowhash_8_8.h:61
flowhash_lkey_8_8_t
Definition:
flowhash_8_8.h:31
flowhash_template.h
static_always_inline
#define static_always_inline
Definition:
clib.h:112
crc32.h
flowhash_value_8_8_t
Definition:
flowhash_8_8.h:35
flowhash_lkey_8_8_t::as_u64
u64 as_u64[1]
Definition:
flowhash_8_8.h:32
flowhash_cmp_key_8_8
static_always_inline u8 flowhash_cmp_key_8_8(flowhash_skey_8_8_t *a, flowhash_lkey_8_8_t *b)
Definition:
flowhash_8_8.h:54
clib_xxhash
static u64 clib_xxhash(u64 key)
Definition:
xxhash.h:58
src
vl_api_address_t src
Definition:
gre.api:54
xxhash.h
u64
unsigned long u64
Definition:
types.h:89
u32
unsigned int u32
Definition:
types.h:88
dst
vl_api_ip4_address_t dst
Definition:
pnat.api:41
as_u64
u64 as_u64
Definition:
bihash_doc.h:63
flowhash_skey_8_8_t
Definition:
flowhash_8_8.h:27
b
vlib_buffer_t ** b
Definition:
nat44_ei_out2in.c:717
u8
unsigned char u8
Definition:
types.h:56
a
a
Definition:
bitmap.h:525
flowhash_hash_8_8
static_always_inline u32 flowhash_hash_8_8(flowhash_lkey_8_8_t *k)
Definition:
flowhash_8_8.h:44
extras
deprecated
vppinfra
flowhash_8_8.h
Generated on Sat Jan 8 2022 10:34:48 for FD.io VPP by
1.8.17