/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 */ |