Line | Count | Source |
1 | | #ifndef _FRR_CHECKSUM_H |
2 | | #define _FRR_CHECKSUM_H |
3 | | |
4 | | #include <stdint.h> |
5 | | #include <netinet/in.h> |
6 | | |
7 | | #ifdef __cplusplus |
8 | | extern "C" { |
9 | | #endif |
10 | | |
11 | | |
12 | | /* IPv4 pseudoheader */ |
13 | | struct ipv4_ph { |
14 | | struct in_addr src; |
15 | | struct in_addr dst; |
16 | | uint8_t rsvd; |
17 | | uint8_t proto; |
18 | | uint16_t len; |
19 | | } __attribute__((packed)); |
20 | | |
21 | | /* IPv6 pseudoheader */ |
22 | | struct ipv6_ph { |
23 | | struct in6_addr src; |
24 | | struct in6_addr dst; |
25 | | uint32_t ulpl; |
26 | | uint8_t zero[3]; |
27 | | uint8_t next_hdr; |
28 | | } __attribute__((packed)); |
29 | | |
30 | | |
31 | | extern uint16_t in_cksumv(const struct iovec *iov, size_t iov_len); |
32 | | |
33 | | static inline uint16_t in_cksum(const void *data, size_t nbytes) |
34 | 2.36k | { |
35 | 2.36k | struct iovec iov[1]; |
36 | | |
37 | 2.36k | iov[0].iov_base = (void *)data; |
38 | 2.36k | iov[0].iov_len = nbytes; |
39 | 2.36k | return in_cksumv(iov, array_size(iov)); |
40 | 2.36k | } Unexecuted instantiation: ospf_lsa.c:in_cksum Line | Count | Source | 34 | 2.36k | { | 35 | 2.36k | struct iovec iov[1]; | 36 | | | 37 | 2.36k | iov[0].iov_base = (void *)data; | 38 | 2.36k | iov[0].iov_len = nbytes; | 39 | 2.36k | return in_cksumv(iov, array_size(iov)); | 40 | 2.36k | } |
Unexecuted instantiation: checksum.c:in_cksum Unexecuted instantiation: pim_bsm.c:in_cksum Unexecuted instantiation: pim_cmd_common.c:in_cksum Unexecuted instantiation: pim_hello.c:in_cksum Unexecuted instantiation: pim_join.c:in_cksum Unexecuted instantiation: pim_msg.c:in_cksum Unexecuted instantiation: pim_nb_config.c:in_cksum Unexecuted instantiation: pim_pim.c:in_cksum Unexecuted instantiation: pim_rp.c:in_cksum Unexecuted instantiation: pim_util.c:in_cksum Unexecuted instantiation: pim_register.c:in_cksum Unexecuted instantiation: pim_cmd.c:in_cksum Unexecuted instantiation: pim_igmp.c:in_cksum Unexecuted instantiation: pim_igmp_mtrace.c:in_cksum Unexecuted instantiation: pim_igmpv2.c:in_cksum Unexecuted instantiation: pim_igmpv3.c:in_cksum |
41 | | |
42 | | static inline uint16_t in_cksum_with_ph4(const struct ipv4_ph *ph, |
43 | | const void *data, size_t nbytes) |
44 | 0 | { |
45 | 0 | struct iovec iov[2]; |
46 | 0 |
|
47 | 0 | iov[0].iov_base = (void *)ph; |
48 | 0 | iov[0].iov_len = sizeof(*ph); |
49 | 0 | iov[1].iov_base = (void *)data; |
50 | 0 | iov[1].iov_len = nbytes; |
51 | 0 | return in_cksumv(iov, array_size(iov)); |
52 | 0 | } Unexecuted instantiation: ospf_lsa.c:in_cksum_with_ph4 Unexecuted instantiation: ospf_packet.c:in_cksum_with_ph4 Unexecuted instantiation: checksum.c:in_cksum_with_ph4 Unexecuted instantiation: pim_bsm.c:in_cksum_with_ph4 Unexecuted instantiation: pim_cmd_common.c:in_cksum_with_ph4 Unexecuted instantiation: pim_hello.c:in_cksum_with_ph4 Unexecuted instantiation: pim_join.c:in_cksum_with_ph4 Unexecuted instantiation: pim_msg.c:in_cksum_with_ph4 Unexecuted instantiation: pim_nb_config.c:in_cksum_with_ph4 Unexecuted instantiation: pim_pim.c:in_cksum_with_ph4 Unexecuted instantiation: pim_rp.c:in_cksum_with_ph4 Unexecuted instantiation: pim_util.c:in_cksum_with_ph4 Unexecuted instantiation: pim_register.c:in_cksum_with_ph4 Unexecuted instantiation: pim_cmd.c:in_cksum_with_ph4 Unexecuted instantiation: pim_igmp.c:in_cksum_with_ph4 Unexecuted instantiation: pim_igmp_mtrace.c:in_cksum_with_ph4 Unexecuted instantiation: pim_igmpv2.c:in_cksum_with_ph4 Unexecuted instantiation: pim_igmpv3.c:in_cksum_with_ph4 |
53 | | |
54 | | static inline uint16_t in_cksum_with_ph6(const struct ipv6_ph *ph, |
55 | | const void *data, size_t nbytes) |
56 | 0 | { |
57 | 0 | struct iovec iov[2]; |
58 | 0 |
|
59 | 0 | iov[0].iov_base = (void *)ph; |
60 | 0 | iov[0].iov_len = sizeof(*ph); |
61 | 0 | iov[1].iov_base = (void *)data; |
62 | 0 | iov[1].iov_len = nbytes; |
63 | 0 | return in_cksumv(iov, array_size(iov)); |
64 | 0 | } Unexecuted instantiation: ospf_lsa.c:in_cksum_with_ph6 Unexecuted instantiation: ospf_packet.c:in_cksum_with_ph6 Unexecuted instantiation: checksum.c:in_cksum_with_ph6 Unexecuted instantiation: pim_bsm.c:in_cksum_with_ph6 Unexecuted instantiation: pim_cmd_common.c:in_cksum_with_ph6 Unexecuted instantiation: pim_hello.c:in_cksum_with_ph6 Unexecuted instantiation: pim_join.c:in_cksum_with_ph6 Unexecuted instantiation: pim_msg.c:in_cksum_with_ph6 Unexecuted instantiation: pim_nb_config.c:in_cksum_with_ph6 Unexecuted instantiation: pim_pim.c:in_cksum_with_ph6 Unexecuted instantiation: pim_rp.c:in_cksum_with_ph6 Unexecuted instantiation: pim_util.c:in_cksum_with_ph6 Unexecuted instantiation: pim_register.c:in_cksum_with_ph6 Unexecuted instantiation: pim_cmd.c:in_cksum_with_ph6 Unexecuted instantiation: pim_igmp.c:in_cksum_with_ph6 Unexecuted instantiation: pim_igmp_mtrace.c:in_cksum_with_ph6 Unexecuted instantiation: pim_igmpv2.c:in_cksum_with_ph6 Unexecuted instantiation: pim_igmpv3.c:in_cksum_with_ph6 |
65 | | |
66 | 130k | #define FLETCHER_CHECKSUM_VALIDATE 0xffff |
67 | | extern uint16_t fletcher_checksum(uint8_t *, const size_t len, |
68 | | const uint16_t offset); |
69 | | |
70 | | #ifdef __cplusplus |
71 | | } |
72 | | #endif |
73 | | |
74 | | #endif /* _FRR_CHECKSUM_H */ |