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 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 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 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 Line | Count | Source | 91 | 412 | { | 92 | 412 | return memcmp(&a, &b, sizeof(a)); | 93 | 412 | } |
Unexecuted instantiation: pim_jp_agg.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 Line | Count | Source | 91 | 1.12M | { | 92 | 1.12M | return memcmp(&a, &b, sizeof(a)); | 93 | 1.12M | } |
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 Line | Count | Source | 91 | 12.7M | { | 92 | 12.7M | return memcmp(&a, &b, sizeof(a)); | 93 | 12.7M | } |
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 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 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 */ |