Coverage Report

Created: 2026-02-21 06:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/lib/checksum.h
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
ospf_packet.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 */