Coverage Report

Created: 2026-03-21 06:19

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/pimd/pim_addr.h
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
 * PIM address generalizations
4
 * Copyright (C) 2022  David Lamparter for NetDEF, Inc.
5
 */
6
7
#ifndef _PIMD_PIM_ADDR_H
8
#define _PIMD_PIM_ADDR_H
9
10
#include "jhash.h"
11
#include "prefix.h"
12
13
/* clang-format off */
14
15
#if PIM_IPV == 4
16
typedef struct in_addr pim_addr;
17
18
#define PIM_ADDRSTRLEN  INET_ADDRSTRLEN
19
26.3M
#define PIM_AF    AF_INET
20
0
#define PIM_AFI   AFI_IP
21
0
#define PIM_PROTO_REG   IPPROTO_RAW
22
0
#define PIM_IPADDR  IPADDR_V4
23
0
#define ipaddr_pim  ipaddr_v4
24
26.3M
#define PIM_MAX_BITLEN  IPV4_MAX_BITLEN
25
#define PIM_AF_NAME     "ip"
26
#define PIM_AF_DBG  "pim"
27
#define GM_AF_DBG "igmp"
28
#define PIM_MROUTE_DBG  "mroute"
29
1
#define PIMREG          "pimreg"
30
0
#define GM              "IGMP"
31
0
#define IPPROTO_GM      IPPROTO_IGMP
32
33
28
#define PIM_ADDR_FUNCNAME(name) ipv4_##name
34
35
union pimprefixptr {
36
  prefixtype(pimprefixptr, struct prefix,      p)
37
  prefixtype(pimprefixptr, struct prefix_ipv4, p4)
38
} TRANSPARENT_UNION;
39
40
union pimprefixconstptr {
41
  prefixtype(pimprefixconstptr, const struct prefix,      p)
42
  prefixtype(pimprefixconstptr, const struct prefix_ipv4, p4)
43
} TRANSPARENT_UNION;
44
45
#else
46
typedef struct in6_addr pim_addr;
47
48
#define PIM_ADDRSTRLEN  INET6_ADDRSTRLEN
49
#define PIM_AF    AF_INET6
50
#define PIM_AFI   AFI_IP6
51
#define PIM_PROTO_REG   IPPROTO_PIM
52
#define PIM_IPADDR  IPADDR_V6
53
#define ipaddr_pim  ipaddr_v6
54
#define PIM_MAX_BITLEN  IPV6_MAX_BITLEN
55
#define PIM_AF_NAME     "ipv6"
56
#define PIM_AF_DBG  "pimv6"
57
#define GM_AF_DBG "mld"
58
#define PIM_MROUTE_DBG  "mroute6"
59
#define PIMREG          "pim6reg"
60
#define GM              "MLD"
61
#define IPPROTO_GM      IPPROTO_ICMPV6
62
63
#define PIM_ADDR_FUNCNAME(name) ipv6_##name
64
65
union pimprefixptr {
66
  prefixtype(pimprefixptr, struct prefix,      p)
67
  prefixtype(pimprefixptr, struct prefix_ipv6, p6)
68
} TRANSPARENT_UNION;
69
70
union pimprefixconstptr {
71
  prefixtype(pimprefixconstptr, const struct prefix,      p)
72
  prefixtype(pimprefixconstptr, const struct prefix_ipv6, p6)
73
} TRANSPARENT_UNION;
74
#endif
75
76
/* for assignment/initialization (C99 compound literal)
77
 * named PIMADDR_ANY (not PIM_ADDR_ANY) to match INADDR_ANY
78
 */
79
331k
#define PIMADDR_ANY (pim_addr){ }
80
81
/* clang-format on */
82
83
static inline bool pim_addr_is_any(pim_addr addr)
84
86.6M
{
85
86.6M
  pim_addr zero = {};
86
87
86.6M
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
86.6M
}
pim_addr.c:pim_addr_is_any
Line
Count
Source
84
172k
{
85
172k
  pim_addr zero = {};
86
87
172k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
172k
}
Unexecuted instantiation: pim_assert.c:pim_addr_is_any
Unexecuted instantiation: pim_bfd.c:pim_addr_is_any
Unexecuted instantiation: pim_bsm.c:pim_addr_is_any
Unexecuted instantiation: pim_cmd_common.c:pim_addr_is_any
Unexecuted instantiation: pim_hello.c:pim_addr_is_any
pim_iface.c:pim_addr_is_any
Line
Count
Source
84
3
{
85
3
  pim_addr zero = {};
86
87
3
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
3
}
pim_ifchannel.c:pim_addr_is_any
Line
Count
Source
84
340k
{
85
340k
  pim_addr zero = {};
86
87
340k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
340k
}
Unexecuted instantiation: pim_instance.c:pim_addr_is_any
pim_join.c:pim_addr_is_any
Line
Count
Source
84
7.45k
{
85
7.45k
  pim_addr zero = {};
86
87
7.45k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
7.45k
}
Unexecuted instantiation: pim_jp_agg.c:pim_addr_is_any
pim_macro.c:pim_addr_is_any
Line
Count
Source
84
108k
{
85
108k
  pim_addr zero = {};
86
87
108k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
108k
}
Unexecuted instantiation: pim_mroute.c:pim_addr_is_any
Unexecuted instantiation: pim_msg.c:pim_addr_is_any
Unexecuted instantiation: pim_nb_config.c:pim_addr_is_any
Unexecuted instantiation: pim_neighbor.c:pim_addr_is_any
pim_nht.c:pim_addr_is_any
Line
Count
Source
84
21.5M
{
85
21.5M
  pim_addr zero = {};
86
87
21.5M
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
21.5M
}
pim_oil.c:pim_addr_is_any
Line
Count
Source
84
7.12k
{
85
7.12k
  pim_addr zero = {};
86
87
7.12k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
7.12k
}
Unexecuted instantiation: pim_pim.c:pim_addr_is_any
Unexecuted instantiation: pim_routemap.c:pim_addr_is_any
pim_rp.c:pim_addr_is_any
Line
Count
Source
84
32.9M
{
85
32.9M
  pim_addr zero = {};
86
87
32.9M
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
32.9M
}
pim_rpf.c:pim_addr_is_any
Line
Count
Source
84
459k
{
85
459k
  pim_addr zero = {};
86
87
459k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
459k
}
Unexecuted instantiation: pim_sock.c:pim_addr_is_any
Unexecuted instantiation: pim_ssm.c:pim_addr_is_any
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_is_any
Unexecuted instantiation: pim_static.c:pim_addr_is_any
Unexecuted instantiation: pim_str.c:pim_addr_is_any
Unexecuted instantiation: pim_tib.c:pim_addr_is_any
Unexecuted instantiation: pim_tlv.c:pim_addr_is_any
pim_upstream.c:pim_addr_is_any
Line
Count
Source
84
30.9M
{
85
30.9M
  pim_addr zero = {};
86
87
30.9M
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
30.9M
}
Unexecuted instantiation: pim_util.c:pim_addr_is_any
Unexecuted instantiation: pim_vty.c:pim_addr_is_any
Unexecuted instantiation: pim_zebra.c:pim_addr_is_any
Unexecuted instantiation: pim_zlookup.c:pim_addr_is_any
Unexecuted instantiation: pim_vxlan.c:pim_addr_is_any
pim_register.c:pim_addr_is_any
Line
Count
Source
84
9
{
85
9
  pim_addr zero = {};
86
87
9
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
9
}
Unexecuted instantiation: pimd.c:pim_addr_is_any
Unexecuted instantiation: pim_cmd.c:pim_addr_is_any
Unexecuted instantiation: pim_igmp.c:pim_addr_is_any
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_is_any
Unexecuted instantiation: pim_igmpv2.c:pim_addr_is_any
Unexecuted instantiation: pim_igmpv3.c:pim_addr_is_any
Unexecuted instantiation: pim_main.c:pim_addr_is_any
Unexecuted instantiation: pim_mlag.c:pim_addr_is_any
pim_msdp.c:pim_addr_is_any
Line
Count
Source
84
42.5k
{
85
42.5k
  pim_addr zero = {};
86
87
42.5k
  return memcmp(&addr, &zero, sizeof(zero)) == 0;
88
42.5k
}
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_is_any
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_is_any
Unexecuted instantiation: pim_signals.c:pim_addr_is_any
Unexecuted instantiation: pim_zpthread.c:pim_addr_is_any
89
90
static inline int pim_addr_cmp(pim_addr a, pim_addr b)
91
14.9M
{
92
14.9M
  return memcmp(&a, &b, sizeof(a));
93
14.9M
}
Unexecuted instantiation: pim_addr.c:pim_addr_cmp
pim_assert.c:pim_addr_cmp
Line
Count
Source
91
86.4k
{
92
86.4k
  return memcmp(&a, &b, sizeof(a));
93
86.4k
}
Unexecuted instantiation: pim_bfd.c:pim_addr_cmp
pim_bsm.c:pim_addr_cmp
Line
Count
Source
91
333k
{
92
333k
  return memcmp(&a, &b, sizeof(a));
93
333k
}
Unexecuted instantiation: pim_cmd_common.c:pim_addr_cmp
Unexecuted instantiation: pim_hello.c:pim_addr_cmp
pim_iface.c:pim_addr_cmp
Line
Count
Source
91
2
{
92
2
  return memcmp(&a, &b, sizeof(a));
93
2
}
pim_ifchannel.c:pim_addr_cmp
Line
Count
Source
91
119k
{
92
119k
  return memcmp(&a, &b, sizeof(a));
93
119k
}
Unexecuted instantiation: pim_instance.c:pim_addr_cmp
pim_join.c:pim_addr_cmp
Line
Count
Source
91
412
{
92
412
  return memcmp(&a, &b, sizeof(a));
93
412
}
Unexecuted instantiation: pim_jp_agg.c:pim_addr_cmp
pim_macro.c:pim_addr_cmp
Line
Count
Source
91
8
{
92
8
  return memcmp(&a, &b, sizeof(a));
93
8
}
Unexecuted instantiation: pim_mroute.c:pim_addr_cmp
Unexecuted instantiation: pim_msg.c:pim_addr_cmp
Unexecuted instantiation: pim_nb_config.c:pim_addr_cmp
pim_neighbor.c:pim_addr_cmp
Line
Count
Source
91
103k
{
92
103k
  return memcmp(&a, &b, sizeof(a));
93
103k
}
Unexecuted instantiation: pim_nht.c:pim_addr_cmp
pim_oil.c:pim_addr_cmp
Line
Count
Source
91
1.12M
{
92
1.12M
  return memcmp(&a, &b, sizeof(a));
93
1.12M
}
pim_pim.c:pim_addr_cmp
Line
Count
Source
91
1.48k
{
92
1.48k
  return memcmp(&a, &b, sizeof(a));
93
1.48k
}
Unexecuted instantiation: pim_routemap.c:pim_addr_cmp
pim_rp.c:pim_addr_cmp
Line
Count
Source
91
12.7M
{
92
12.7M
  return memcmp(&a, &b, sizeof(a));
93
12.7M
}
pim_rpf.c:pim_addr_cmp
Line
Count
Source
91
315k
{
92
315k
  return memcmp(&a, &b, sizeof(a));
93
315k
}
Unexecuted instantiation: pim_sock.c:pim_addr_cmp
Unexecuted instantiation: pim_ssm.c:pim_addr_cmp
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_cmp
Unexecuted instantiation: pim_static.c:pim_addr_cmp
Unexecuted instantiation: pim_str.c:pim_addr_cmp
Unexecuted instantiation: pim_tib.c:pim_addr_cmp
pim_tlv.c:pim_addr_cmp
Line
Count
Source
91
308
{
92
308
  return memcmp(&a, &b, sizeof(a));
93
308
}
pim_upstream.c:pim_addr_cmp
Line
Count
Source
91
58.5k
{
92
58.5k
  return memcmp(&a, &b, sizeof(a));
93
58.5k
}
Unexecuted instantiation: pim_util.c:pim_addr_cmp
Unexecuted instantiation: pim_vty.c:pim_addr_cmp
Unexecuted instantiation: pim_zebra.c:pim_addr_cmp
Unexecuted instantiation: pim_zlookup.c:pim_addr_cmp
Unexecuted instantiation: pim_vxlan.c:pim_addr_cmp
pim_register.c:pim_addr_cmp
Line
Count
Source
91
400
{
92
400
  return memcmp(&a, &b, sizeof(a));
93
400
}
Unexecuted instantiation: pimd.c:pim_addr_cmp
Unexecuted instantiation: pim_cmd.c:pim_addr_cmp
Unexecuted instantiation: pim_igmp.c:pim_addr_cmp
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_cmp
Unexecuted instantiation: pim_igmpv2.c:pim_addr_cmp
Unexecuted instantiation: pim_igmpv3.c:pim_addr_cmp
Unexecuted instantiation: pim_main.c:pim_addr_cmp
Unexecuted instantiation: pim_mlag.c:pim_addr_cmp
Unexecuted instantiation: pim_msdp.c:pim_addr_cmp
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_cmp
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_cmp
Unexecuted instantiation: pim_signals.c:pim_addr_cmp
Unexecuted instantiation: pim_zpthread.c:pim_addr_cmp
94
95
static inline void pim_addr_to_prefix(union pimprefixptr out, pim_addr in)
96
26.0M
{
97
26.0M
  out.p->family = PIM_AF;
98
26.0M
  out.p->prefixlen = PIM_MAX_BITLEN;
99
26.0M
  memcpy(out.p->u.val, &in, sizeof(in));
100
26.0M
}
Unexecuted instantiation: pim_addr.c:pim_addr_to_prefix
Unexecuted instantiation: pim_assert.c:pim_addr_to_prefix
Unexecuted instantiation: pim_bfd.c:pim_addr_to_prefix
pim_bsm.c:pim_addr_to_prefix
Line
Count
Source
96
287k
{
97
287k
  out.p->family = PIM_AF;
98
287k
  out.p->prefixlen = PIM_MAX_BITLEN;
99
287k
  memcpy(out.p->u.val, &in, sizeof(in));
100
287k
}
Unexecuted instantiation: pim_cmd_common.c:pim_addr_to_prefix
Unexecuted instantiation: pim_hello.c:pim_addr_to_prefix
Unexecuted instantiation: pim_iface.c:pim_addr_to_prefix
Unexecuted instantiation: pim_ifchannel.c:pim_addr_to_prefix
Unexecuted instantiation: pim_instance.c:pim_addr_to_prefix
Unexecuted instantiation: pim_join.c:pim_addr_to_prefix
Unexecuted instantiation: pim_jp_agg.c:pim_addr_to_prefix
Unexecuted instantiation: pim_macro.c:pim_addr_to_prefix
Unexecuted instantiation: pim_mroute.c:pim_addr_to_prefix
Unexecuted instantiation: pim_msg.c:pim_addr_to_prefix
Unexecuted instantiation: pim_nb_config.c:pim_addr_to_prefix
Unexecuted instantiation: pim_neighbor.c:pim_addr_to_prefix
pim_nht.c:pim_addr_to_prefix
Line
Count
Source
96
5.58M
{
97
5.58M
  out.p->family = PIM_AF;
98
5.58M
  out.p->prefixlen = PIM_MAX_BITLEN;
99
5.58M
  memcpy(out.p->u.val, &in, sizeof(in));
100
5.58M
}
Unexecuted instantiation: pim_oil.c:pim_addr_to_prefix
Unexecuted instantiation: pim_pim.c:pim_addr_to_prefix
Unexecuted instantiation: pim_routemap.c:pim_addr_to_prefix
pim_rp.c:pim_addr_to_prefix
Line
Count
Source
96
20.0M
{
97
20.0M
  out.p->family = PIM_AF;
98
20.0M
  out.p->prefixlen = PIM_MAX_BITLEN;
99
20.0M
  memcpy(out.p->u.val, &in, sizeof(in));
100
20.0M
}
pim_rpf.c:pim_addr_to_prefix
Line
Count
Source
96
68.0k
{
97
68.0k
  out.p->family = PIM_AF;
98
68.0k
  out.p->prefixlen = PIM_MAX_BITLEN;
99
68.0k
  memcpy(out.p->u.val, &in, sizeof(in));
100
68.0k
}
Unexecuted instantiation: pim_sock.c:pim_addr_to_prefix
pim_ssm.c:pim_addr_to_prefix
Line
Count
Source
96
28
{
97
28
  out.p->family = PIM_AF;
98
28
  out.p->prefixlen = PIM_MAX_BITLEN;
99
28
  memcpy(out.p->u.val, &in, sizeof(in));
100
28
}
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_to_prefix
Unexecuted instantiation: pim_static.c:pim_addr_to_prefix
Unexecuted instantiation: pim_str.c:pim_addr_to_prefix
Unexecuted instantiation: pim_tib.c:pim_addr_to_prefix
pim_tlv.c:pim_addr_to_prefix
Line
Count
Source
96
3.01k
{
97
3.01k
  out.p->family = PIM_AF;
98
3.01k
  out.p->prefixlen = PIM_MAX_BITLEN;
99
3.01k
  memcpy(out.p->u.val, &in, sizeof(in));
100
3.01k
}
Unexecuted instantiation: pim_upstream.c:pim_addr_to_prefix
Unexecuted instantiation: pim_util.c:pim_addr_to_prefix
Unexecuted instantiation: pim_vty.c:pim_addr_to_prefix
Unexecuted instantiation: pim_zebra.c:pim_addr_to_prefix
Unexecuted instantiation: pim_zlookup.c:pim_addr_to_prefix
Unexecuted instantiation: pim_vxlan.c:pim_addr_to_prefix
Unexecuted instantiation: pim_register.c:pim_addr_to_prefix
Unexecuted instantiation: pimd.c:pim_addr_to_prefix
Unexecuted instantiation: pim_cmd.c:pim_addr_to_prefix
Unexecuted instantiation: pim_igmp.c:pim_addr_to_prefix
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_to_prefix
Unexecuted instantiation: pim_igmpv2.c:pim_addr_to_prefix
Unexecuted instantiation: pim_igmpv3.c:pim_addr_to_prefix
Unexecuted instantiation: pim_main.c:pim_addr_to_prefix
Unexecuted instantiation: pim_mlag.c:pim_addr_to_prefix
Unexecuted instantiation: pim_msdp.c:pim_addr_to_prefix
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_to_prefix
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_to_prefix
Unexecuted instantiation: pim_signals.c:pim_addr_to_prefix
Unexecuted instantiation: pim_zpthread.c:pim_addr_to_prefix
101
102
static inline pim_addr pim_addr_from_prefix(union pimprefixconstptr in)
103
337
{
104
337
  pim_addr ret;
105
106
337
  if (in.p->family != PIM_AF)
107
0
    return PIMADDR_ANY;
108
109
337
  memcpy(&ret, in.p->u.val, sizeof(ret));
110
337
  return ret;
111
337
}
Unexecuted instantiation: pim_addr.c:pim_addr_from_prefix
Unexecuted instantiation: pim_assert.c:pim_addr_from_prefix
Unexecuted instantiation: pim_bfd.c:pim_addr_from_prefix
Unexecuted instantiation: pim_bsm.c:pim_addr_from_prefix
Unexecuted instantiation: pim_cmd_common.c:pim_addr_from_prefix
Unexecuted instantiation: pim_hello.c:pim_addr_from_prefix
pim_iface.c:pim_addr_from_prefix
Line
Count
Source
103
1
{
104
1
  pim_addr ret;
105
106
1
  if (in.p->family != PIM_AF)
107
0
    return PIMADDR_ANY;
108
109
1
  memcpy(&ret, in.p->u.val, sizeof(ret));
110
1
  return ret;
111
1
}
Unexecuted instantiation: pim_ifchannel.c:pim_addr_from_prefix
Unexecuted instantiation: pim_instance.c:pim_addr_from_prefix
Unexecuted instantiation: pim_join.c:pim_addr_from_prefix
Unexecuted instantiation: pim_jp_agg.c:pim_addr_from_prefix
Unexecuted instantiation: pim_macro.c:pim_addr_from_prefix
Unexecuted instantiation: pim_mroute.c:pim_addr_from_prefix
Unexecuted instantiation: pim_msg.c:pim_addr_from_prefix
Unexecuted instantiation: pim_nb_config.c:pim_addr_from_prefix
Unexecuted instantiation: pim_neighbor.c:pim_addr_from_prefix
Unexecuted instantiation: pim_nht.c:pim_addr_from_prefix
Unexecuted instantiation: pim_oil.c:pim_addr_from_prefix
Unexecuted instantiation: pim_pim.c:pim_addr_from_prefix
Unexecuted instantiation: pim_routemap.c:pim_addr_from_prefix
Unexecuted instantiation: pim_rp.c:pim_addr_from_prefix
Unexecuted instantiation: pim_rpf.c:pim_addr_from_prefix
Unexecuted instantiation: pim_sock.c:pim_addr_from_prefix
pim_ssm.c:pim_addr_from_prefix
Line
Count
Source
103
28
{
104
28
  pim_addr ret;
105
106
28
  if (in.p->family != PIM_AF)
107
0
    return PIMADDR_ANY;
108
109
28
  memcpy(&ret, in.p->u.val, sizeof(ret));
110
28
  return ret;
111
28
}
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_from_prefix
Unexecuted instantiation: pim_static.c:pim_addr_from_prefix
Unexecuted instantiation: pim_str.c:pim_addr_from_prefix
Unexecuted instantiation: pim_tib.c:pim_addr_from_prefix
pim_tlv.c:pim_addr_from_prefix
Line
Count
Source
103
308
{
104
308
  pim_addr ret;
105
106
308
  if (in.p->family != PIM_AF)
107
0
    return PIMADDR_ANY;
108
109
308
  memcpy(&ret, in.p->u.val, sizeof(ret));
110
308
  return ret;
111
308
}
Unexecuted instantiation: pim_upstream.c:pim_addr_from_prefix
Unexecuted instantiation: pim_util.c:pim_addr_from_prefix
Unexecuted instantiation: pim_vty.c:pim_addr_from_prefix
Unexecuted instantiation: pim_zebra.c:pim_addr_from_prefix
Unexecuted instantiation: pim_zlookup.c:pim_addr_from_prefix
Unexecuted instantiation: pim_vxlan.c:pim_addr_from_prefix
Unexecuted instantiation: pim_register.c:pim_addr_from_prefix
Unexecuted instantiation: pimd.c:pim_addr_from_prefix
Unexecuted instantiation: pim_cmd.c:pim_addr_from_prefix
Unexecuted instantiation: pim_igmp.c:pim_addr_from_prefix
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_from_prefix
Unexecuted instantiation: pim_igmpv2.c:pim_addr_from_prefix
Unexecuted instantiation: pim_igmpv3.c:pim_addr_from_prefix
Unexecuted instantiation: pim_main.c:pim_addr_from_prefix
Unexecuted instantiation: pim_mlag.c:pim_addr_from_prefix
Unexecuted instantiation: pim_msdp.c:pim_addr_from_prefix
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_from_prefix
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_from_prefix
Unexecuted instantiation: pim_signals.c:pim_addr_from_prefix
Unexecuted instantiation: pim_zpthread.c:pim_addr_from_prefix
112
113
static inline uint8_t pim_addr_scope(const pim_addr addr)
114
0
{
115
0
  return PIM_ADDR_FUNCNAME(mcast_scope)(&addr);
116
0
}
Unexecuted instantiation: pim_addr.c:pim_addr_scope
Unexecuted instantiation: pim_assert.c:pim_addr_scope
Unexecuted instantiation: pim_bfd.c:pim_addr_scope
Unexecuted instantiation: pim_bsm.c:pim_addr_scope
Unexecuted instantiation: pim_cmd_common.c:pim_addr_scope
Unexecuted instantiation: pim_hello.c:pim_addr_scope
Unexecuted instantiation: pim_iface.c:pim_addr_scope
Unexecuted instantiation: pim_ifchannel.c:pim_addr_scope
Unexecuted instantiation: pim_instance.c:pim_addr_scope
Unexecuted instantiation: pim_join.c:pim_addr_scope
Unexecuted instantiation: pim_jp_agg.c:pim_addr_scope
Unexecuted instantiation: pim_macro.c:pim_addr_scope
Unexecuted instantiation: pim_mroute.c:pim_addr_scope
Unexecuted instantiation: pim_msg.c:pim_addr_scope
Unexecuted instantiation: pim_nb_config.c:pim_addr_scope
Unexecuted instantiation: pim_neighbor.c:pim_addr_scope
Unexecuted instantiation: pim_nht.c:pim_addr_scope
Unexecuted instantiation: pim_oil.c:pim_addr_scope
Unexecuted instantiation: pim_pim.c:pim_addr_scope
Unexecuted instantiation: pim_routemap.c:pim_addr_scope
Unexecuted instantiation: pim_rp.c:pim_addr_scope
Unexecuted instantiation: pim_rpf.c:pim_addr_scope
Unexecuted instantiation: pim_sock.c:pim_addr_scope
Unexecuted instantiation: pim_ssm.c:pim_addr_scope
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_scope
Unexecuted instantiation: pim_static.c:pim_addr_scope
Unexecuted instantiation: pim_str.c:pim_addr_scope
Unexecuted instantiation: pim_tib.c:pim_addr_scope
Unexecuted instantiation: pim_tlv.c:pim_addr_scope
Unexecuted instantiation: pim_upstream.c:pim_addr_scope
Unexecuted instantiation: pim_util.c:pim_addr_scope
Unexecuted instantiation: pim_vty.c:pim_addr_scope
Unexecuted instantiation: pim_zebra.c:pim_addr_scope
Unexecuted instantiation: pim_zlookup.c:pim_addr_scope
Unexecuted instantiation: pim_vxlan.c:pim_addr_scope
Unexecuted instantiation: pim_register.c:pim_addr_scope
Unexecuted instantiation: pimd.c:pim_addr_scope
Unexecuted instantiation: pim_cmd.c:pim_addr_scope
Unexecuted instantiation: pim_igmp.c:pim_addr_scope
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_scope
Unexecuted instantiation: pim_igmpv2.c:pim_addr_scope
Unexecuted instantiation: pim_igmpv3.c:pim_addr_scope
Unexecuted instantiation: pim_main.c:pim_addr_scope
Unexecuted instantiation: pim_mlag.c:pim_addr_scope
Unexecuted instantiation: pim_msdp.c:pim_addr_scope
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_scope
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_scope
Unexecuted instantiation: pim_signals.c:pim_addr_scope
Unexecuted instantiation: pim_zpthread.c:pim_addr_scope
117
118
static inline bool pim_addr_nofwd(const pim_addr addr)
119
0
{
120
0
  return PIM_ADDR_FUNCNAME(mcast_nofwd)(&addr);
121
0
}
Unexecuted instantiation: pim_addr.c:pim_addr_nofwd
Unexecuted instantiation: pim_assert.c:pim_addr_nofwd
Unexecuted instantiation: pim_bfd.c:pim_addr_nofwd
Unexecuted instantiation: pim_bsm.c:pim_addr_nofwd
Unexecuted instantiation: pim_cmd_common.c:pim_addr_nofwd
Unexecuted instantiation: pim_hello.c:pim_addr_nofwd
Unexecuted instantiation: pim_iface.c:pim_addr_nofwd
Unexecuted instantiation: pim_ifchannel.c:pim_addr_nofwd
Unexecuted instantiation: pim_instance.c:pim_addr_nofwd
Unexecuted instantiation: pim_join.c:pim_addr_nofwd
Unexecuted instantiation: pim_jp_agg.c:pim_addr_nofwd
Unexecuted instantiation: pim_macro.c:pim_addr_nofwd
Unexecuted instantiation: pim_mroute.c:pim_addr_nofwd
Unexecuted instantiation: pim_msg.c:pim_addr_nofwd
Unexecuted instantiation: pim_nb_config.c:pim_addr_nofwd
Unexecuted instantiation: pim_neighbor.c:pim_addr_nofwd
Unexecuted instantiation: pim_nht.c:pim_addr_nofwd
Unexecuted instantiation: pim_oil.c:pim_addr_nofwd
Unexecuted instantiation: pim_pim.c:pim_addr_nofwd
Unexecuted instantiation: pim_routemap.c:pim_addr_nofwd
Unexecuted instantiation: pim_rp.c:pim_addr_nofwd
Unexecuted instantiation: pim_rpf.c:pim_addr_nofwd
Unexecuted instantiation: pim_sock.c:pim_addr_nofwd
Unexecuted instantiation: pim_ssm.c:pim_addr_nofwd
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_nofwd
Unexecuted instantiation: pim_static.c:pim_addr_nofwd
Unexecuted instantiation: pim_str.c:pim_addr_nofwd
Unexecuted instantiation: pim_tib.c:pim_addr_nofwd
Unexecuted instantiation: pim_tlv.c:pim_addr_nofwd
Unexecuted instantiation: pim_upstream.c:pim_addr_nofwd
Unexecuted instantiation: pim_util.c:pim_addr_nofwd
Unexecuted instantiation: pim_vty.c:pim_addr_nofwd
Unexecuted instantiation: pim_zebra.c:pim_addr_nofwd
Unexecuted instantiation: pim_zlookup.c:pim_addr_nofwd
Unexecuted instantiation: pim_vxlan.c:pim_addr_nofwd
Unexecuted instantiation: pim_register.c:pim_addr_nofwd
Unexecuted instantiation: pimd.c:pim_addr_nofwd
Unexecuted instantiation: pim_cmd.c:pim_addr_nofwd
Unexecuted instantiation: pim_igmp.c:pim_addr_nofwd
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_nofwd
Unexecuted instantiation: pim_igmpv2.c:pim_addr_nofwd
Unexecuted instantiation: pim_igmpv3.c:pim_addr_nofwd
Unexecuted instantiation: pim_main.c:pim_addr_nofwd
Unexecuted instantiation: pim_mlag.c:pim_addr_nofwd
Unexecuted instantiation: pim_msdp.c:pim_addr_nofwd
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_nofwd
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_nofwd
Unexecuted instantiation: pim_signals.c:pim_addr_nofwd
Unexecuted instantiation: pim_zpthread.c:pim_addr_nofwd
122
123
static inline bool pim_addr_ssm(const pim_addr addr)
124
28
{
125
28
  return PIM_ADDR_FUNCNAME(mcast_ssm)(&addr);
126
28
}
Unexecuted instantiation: pim_addr.c:pim_addr_ssm
Unexecuted instantiation: pim_assert.c:pim_addr_ssm
Unexecuted instantiation: pim_bfd.c:pim_addr_ssm
Unexecuted instantiation: pim_bsm.c:pim_addr_ssm
Unexecuted instantiation: pim_cmd_common.c:pim_addr_ssm
Unexecuted instantiation: pim_hello.c:pim_addr_ssm
Unexecuted instantiation: pim_iface.c:pim_addr_ssm
Unexecuted instantiation: pim_ifchannel.c:pim_addr_ssm
Unexecuted instantiation: pim_instance.c:pim_addr_ssm
Unexecuted instantiation: pim_join.c:pim_addr_ssm
Unexecuted instantiation: pim_jp_agg.c:pim_addr_ssm
Unexecuted instantiation: pim_macro.c:pim_addr_ssm
Unexecuted instantiation: pim_mroute.c:pim_addr_ssm
Unexecuted instantiation: pim_msg.c:pim_addr_ssm
Unexecuted instantiation: pim_nb_config.c:pim_addr_ssm
Unexecuted instantiation: pim_neighbor.c:pim_addr_ssm
Unexecuted instantiation: pim_nht.c:pim_addr_ssm
Unexecuted instantiation: pim_oil.c:pim_addr_ssm
Unexecuted instantiation: pim_pim.c:pim_addr_ssm
Unexecuted instantiation: pim_routemap.c:pim_addr_ssm
Unexecuted instantiation: pim_rp.c:pim_addr_ssm
Unexecuted instantiation: pim_rpf.c:pim_addr_ssm
Unexecuted instantiation: pim_sock.c:pim_addr_ssm
pim_ssm.c:pim_addr_ssm
Line
Count
Source
124
28
{
125
28
  return PIM_ADDR_FUNCNAME(mcast_ssm)(&addr);
126
28
}
Unexecuted instantiation: pim_ssmpingd.c:pim_addr_ssm
Unexecuted instantiation: pim_static.c:pim_addr_ssm
Unexecuted instantiation: pim_str.c:pim_addr_ssm
Unexecuted instantiation: pim_tib.c:pim_addr_ssm
Unexecuted instantiation: pim_tlv.c:pim_addr_ssm
Unexecuted instantiation: pim_upstream.c:pim_addr_ssm
Unexecuted instantiation: pim_util.c:pim_addr_ssm
Unexecuted instantiation: pim_vty.c:pim_addr_ssm
Unexecuted instantiation: pim_zebra.c:pim_addr_ssm
Unexecuted instantiation: pim_zlookup.c:pim_addr_ssm
Unexecuted instantiation: pim_vxlan.c:pim_addr_ssm
Unexecuted instantiation: pim_register.c:pim_addr_ssm
Unexecuted instantiation: pimd.c:pim_addr_ssm
Unexecuted instantiation: pim_cmd.c:pim_addr_ssm
Unexecuted instantiation: pim_igmp.c:pim_addr_ssm
Unexecuted instantiation: pim_igmp_mtrace.c:pim_addr_ssm
Unexecuted instantiation: pim_igmpv2.c:pim_addr_ssm
Unexecuted instantiation: pim_igmpv3.c:pim_addr_ssm
Unexecuted instantiation: pim_main.c:pim_addr_ssm
Unexecuted instantiation: pim_mlag.c:pim_addr_ssm
Unexecuted instantiation: pim_msdp.c:pim_addr_ssm
Unexecuted instantiation: pim_msdp_packet.c:pim_addr_ssm
Unexecuted instantiation: pim_msdp_socket.c:pim_addr_ssm
Unexecuted instantiation: pim_signals.c:pim_addr_ssm
Unexecuted instantiation: pim_zpthread.c:pim_addr_ssm
127
128
/* don't use this struct directly, use the pim_sgaddr typedef */
129
struct _pim_sgaddr {
130
  pim_addr grp;
131
  pim_addr src;
132
};
133
134
typedef struct _pim_sgaddr pim_sgaddr;
135
136
static inline int pim_sgaddr_cmp(const pim_sgaddr a, const pim_sgaddr b)
137
4.75M
{
138
  /* memcmp over the entire struct = memcmp(grp) + memcmp(src) */
139
4.75M
  return memcmp(&a, &b, sizeof(a));
140
4.75M
}
Unexecuted instantiation: pim_addr.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_assert.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_bfd.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_bsm.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_cmd_common.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_hello.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_iface.c:pim_sgaddr_cmp
pim_ifchannel.c:pim_sgaddr_cmp
Line
Count
Source
137
3.07M
{
138
  /* memcmp over the entire struct = memcmp(grp) + memcmp(src) */
139
3.07M
  return memcmp(&a, &b, sizeof(a));
140
3.07M
}
Unexecuted instantiation: pim_instance.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_join.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_jp_agg.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_macro.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_mroute.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_msg.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_nb_config.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_neighbor.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_nht.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_oil.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_pim.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_routemap.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_rp.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_rpf.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_sock.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_ssm.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_ssmpingd.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_static.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_str.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_tib.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_tlv.c:pim_sgaddr_cmp
pim_upstream.c:pim_sgaddr_cmp
Line
Count
Source
137
1.67M
{
138
  /* memcmp over the entire struct = memcmp(grp) + memcmp(src) */
139
1.67M
  return memcmp(&a, &b, sizeof(a));
140
1.67M
}
Unexecuted instantiation: pim_util.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_vty.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_zebra.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_zlookup.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_vxlan.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_register.c:pim_sgaddr_cmp
Unexecuted instantiation: pimd.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_cmd.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_igmp.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_igmp_mtrace.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_igmpv2.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_igmpv3.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_main.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_mlag.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_msdp.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_msdp_packet.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_msdp_socket.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_signals.c:pim_sgaddr_cmp
Unexecuted instantiation: pim_zpthread.c:pim_sgaddr_cmp
141
142
static inline uint32_t pim_sgaddr_hash(const pim_sgaddr a, uint32_t initval)
143
226k
{
144
226k
  return jhash2((uint32_t *)&a, sizeof(a) / sizeof(uint32_t), initval);
145
226k
}
Unexecuted instantiation: pim_addr.c:pim_sgaddr_hash
Unexecuted instantiation: pim_assert.c:pim_sgaddr_hash
Unexecuted instantiation: pim_bfd.c:pim_sgaddr_hash
Unexecuted instantiation: pim_bsm.c:pim_sgaddr_hash
Unexecuted instantiation: pim_cmd_common.c:pim_sgaddr_hash
Unexecuted instantiation: pim_hello.c:pim_sgaddr_hash
Unexecuted instantiation: pim_iface.c:pim_sgaddr_hash
Unexecuted instantiation: pim_ifchannel.c:pim_sgaddr_hash
Unexecuted instantiation: pim_instance.c:pim_sgaddr_hash
Unexecuted instantiation: pim_join.c:pim_sgaddr_hash
Unexecuted instantiation: pim_jp_agg.c:pim_sgaddr_hash
Unexecuted instantiation: pim_macro.c:pim_sgaddr_hash
Unexecuted instantiation: pim_mroute.c:pim_sgaddr_hash
Unexecuted instantiation: pim_msg.c:pim_sgaddr_hash
Unexecuted instantiation: pim_nb_config.c:pim_sgaddr_hash
Unexecuted instantiation: pim_neighbor.c:pim_sgaddr_hash
Unexecuted instantiation: pim_nht.c:pim_sgaddr_hash
Unexecuted instantiation: pim_oil.c:pim_sgaddr_hash
Unexecuted instantiation: pim_pim.c:pim_sgaddr_hash
Unexecuted instantiation: pim_routemap.c:pim_sgaddr_hash
Unexecuted instantiation: pim_rp.c:pim_sgaddr_hash
Unexecuted instantiation: pim_rpf.c:pim_sgaddr_hash
Unexecuted instantiation: pim_sock.c:pim_sgaddr_hash
Unexecuted instantiation: pim_ssm.c:pim_sgaddr_hash
Unexecuted instantiation: pim_ssmpingd.c:pim_sgaddr_hash
Unexecuted instantiation: pim_static.c:pim_sgaddr_hash
Unexecuted instantiation: pim_str.c:pim_sgaddr_hash
Unexecuted instantiation: pim_tib.c:pim_sgaddr_hash
Unexecuted instantiation: pim_tlv.c:pim_sgaddr_hash
pim_upstream.c:pim_sgaddr_hash
Line
Count
Source
143
226k
{
144
226k
  return jhash2((uint32_t *)&a, sizeof(a) / sizeof(uint32_t), initval);
145
226k
}
Unexecuted instantiation: pim_util.c:pim_sgaddr_hash
Unexecuted instantiation: pim_vty.c:pim_sgaddr_hash
Unexecuted instantiation: pim_zebra.c:pim_sgaddr_hash
Unexecuted instantiation: pim_zlookup.c:pim_sgaddr_hash
Unexecuted instantiation: pim_vxlan.c:pim_sgaddr_hash
Unexecuted instantiation: pim_register.c:pim_sgaddr_hash
Unexecuted instantiation: pimd.c:pim_sgaddr_hash
Unexecuted instantiation: pim_cmd.c:pim_sgaddr_hash
Unexecuted instantiation: pim_igmp.c:pim_sgaddr_hash
Unexecuted instantiation: pim_igmp_mtrace.c:pim_sgaddr_hash
Unexecuted instantiation: pim_igmpv2.c:pim_sgaddr_hash
Unexecuted instantiation: pim_igmpv3.c:pim_sgaddr_hash
Unexecuted instantiation: pim_main.c:pim_sgaddr_hash
Unexecuted instantiation: pim_mlag.c:pim_sgaddr_hash
Unexecuted instantiation: pim_msdp.c:pim_sgaddr_hash
Unexecuted instantiation: pim_msdp_packet.c:pim_sgaddr_hash
Unexecuted instantiation: pim_msdp_socket.c:pim_sgaddr_hash
Unexecuted instantiation: pim_signals.c:pim_sgaddr_hash
Unexecuted instantiation: pim_zpthread.c:pim_sgaddr_hash
146
147
#ifdef _FRR_ATTRIBUTE_PRINTFRR
148
#pragma FRR printfrr_ext "%pPA" (pim_addr *)
149
#pragma FRR printfrr_ext "%pSG" (pim_sgaddr *)
150
#endif
151
152
/*
153
 * There is no pim_sgaddr2str().  This is intentional.  Instead, use:
154
 *  snprintfrr(buf, sizeof(buf), "%pPA", sgaddr)
155
 * (and note that snprintfrr is implicit for vty_out and zlog_*)
156
 */
157
158
#endif /* _PIMD_PIM_ADDR_H */