Coverage Report

Created: 2025-07-01 06:50

/src/openvswitch/lib/csum.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2008, 2011, 2015 Nicira, Inc.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at:
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
17
#ifndef CSUM_H
18
#define CSUM_H 1
19
20
#include <stddef.h>
21
#include <stdint.h>
22
#include "openvswitch/types.h"
23
24
struct in6_addr;
25
26
ovs_be16 csum(const void *, size_t);
27
uint32_t csum_continue(uint32_t partial, const void *, size_t);
28
ovs_be16 csum_finish(uint32_t partial);
29
ovs_be16 recalc_csum16(ovs_be16 old_csum, ovs_be16 old_u16, ovs_be16 new_u16);
30
ovs_be16 recalc_csum32(ovs_be16 old_csum, ovs_be32 old_u32, ovs_be32 new_u32);
31
ovs_be16 recalc_csum48(ovs_be16 old_csum, const struct eth_addr old_mac,
32
                       const struct eth_addr new_mac);
33
ovs_be16 recalc_csum128(ovs_be16 old_csum, ovs_16aligned_be32 old_u32[4],
34
                        const struct in6_addr *);
35
36
#ifndef __CHECKER__
37
/* Adds the 16 bits in 'new' to the partial IP checksum 'partial' and returns
38
 * the updated checksum.  (To start a new checksum, pass 0 for 'partial'.  To
39
 * obtain the finished checksum, pass the return value to csum_finish().) */
40
static inline uint32_t
41
csum_add16(uint32_t partial, ovs_be16 new)
42
0
{
43
0
    return partial + new;
44
0
}
Unexecuted instantiation: packets.c:csum_add16
Unexecuted instantiation: csum.c:csum_add16
Unexecuted instantiation: dp-packet.c:csum_add16
45
46
/* Adds the 32 bits in 'new' to the partial IP checksum 'partial' and returns
47
 * the updated checksum.  (To start a new checksum, pass 0 for 'partial'.  To
48
 * obtain the finished checksum, pass the return value to csum_finish().) */
49
static inline uint32_t
50
csum_add32(uint32_t partial, ovs_be32 new)
51
0
{
52
0
    return partial + (new >> 16) + (new & 0xffff);
53
0
}
Unexecuted instantiation: packets.c:csum_add32
Unexecuted instantiation: csum.c:csum_add32
Unexecuted instantiation: dp-packet.c:csum_add32
54
#else
55
uint32_t csum_add16(uint32_t partial, ovs_be16);
56
uint32_t csum_add32(uint32_t partial, ovs_be32);
57
#endif
58
59
#endif /* csum.h */