Coverage Report

Created: 2025-07-14 06:48

/src/frr/bgpd/bgp_ecommunity.h
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/* BGP Extended Communities Attribute.
3
 * Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
4
 */
5
6
#ifndef _QUAGGA_BGP_ECOMMUNITY_H
7
#define _QUAGGA_BGP_ECOMMUNITY_H
8
9
#include "bgpd/bgp_route.h"
10
#include "bgpd/bgp_rpki.h"
11
#include "bgpd/bgpd.h"
12
13
/* Refer to rfc7153 for the IANA registry definitions. These are
14
 * updated by other standards like rfc7674.
15
 */
16
/* High-order octet of the Extended Communities type field.  */
17
54.5k
#define ECOMMUNITY_ENCODE_AS                0x00
18
162k
#define ECOMMUNITY_ENCODE_IP                0x01
19
12.6k
#define ECOMMUNITY_ENCODE_AS4               0x02
20
78.3k
#define ECOMMUNITY_ENCODE_OPAQUE            0x03
21
125k
#define ECOMMUNITY_ENCODE_EVPN              0x06
22
10.1k
#define ECOMMUNITY_ENCODE_REDIRECT_IP_NH    0x08 /* Flow Spec */
23
/* Generic Transitive Experimental */
24
20.4k
#define ECOMMUNITY_ENCODE_TRANS_EXP         0x80
25
26
/* RFC7674 */
27
19.3k
#define ECOMMUNITY_EXTENDED_COMMUNITY_PART_2 0x81
28
9.28k
#define ECOMMUNITY_EXTENDED_COMMUNITY_PART_3 0x82
29
30
/* Non-transitive extended community types. */
31
15.3k
#define ECOMMUNITY_ENCODE_AS_NON_TRANS      0x40
32
9.06k
#define ECOMMUNITY_ENCODE_IP_NON_TRANS      0x41
33
#define ECOMMUNITY_ENCODE_AS4_NON_TRANS     0x42
34
8.95k
#define ECOMMUNITY_ENCODE_OPAQUE_NON_TRANS  0x43
35
36
/* Low-order octet of the Extended Communities type field.  */
37
/* Note: This really depends on the high-order octet. This means that
38
 * multiple definitions for the same value are possible.
39
 */
40
101
#define ECOMMUNITY_ORIGIN_VALIDATION_STATE  0x00
41
15.4k
#define ECOMMUNITY_ROUTE_TARGET             0x02
42
6.12k
#define ECOMMUNITY_SITE_ORIGIN              0x03
43
15.4k
#define ECOMMUNITY_LINK_BANDWIDTH           0x04
44
205
#define ECOMMUNITY_TRAFFIC_RATE             0x06 /* Flow Spec */
45
236
#define ECOMMUNITY_TRAFFIC_ACTION           0x07
46
451
#define ECOMMUNITY_REDIRECT_VRF             0x08
47
195
#define ECOMMUNITY_TRAFFIC_MARKING          0x09
48
312
#define ECOMMUNITY_REDIRECT_IP_NH           0x00
49
/* from IANA: bgp-extended-communities/bgp-extended-communities.xhtml
50
 * 0x0c Flow-spec Redirect to IPv4 - draft-ietf-idr-flowspec-redirect
51
 */
52
12.0k
#define ECOMMUNITY_FLOWSPEC_REDIRECT_IPV4   0x0c
53
/* from draft-ietf-idr-flow-spec-v6-09
54
 * 0x0b Flow-spec Redirect to IPv6
55
 */
56
484
#define ECOMMUNITY_FLOWSPEC_REDIRECT_IPV6   0x0b
57
58
/* Low-order octet of the Extended Communities type field for EVPN types */
59
1.07k
#define ECOMMUNITY_EVPN_SUBTYPE_MACMOBILITY  0x00
60
500
#define ECOMMUNITY_EVPN_SUBTYPE_ESI_LABEL    0x01
61
540
#define ECOMMUNITY_EVPN_SUBTYPE_ES_IMPORT_RT 0x02
62
1.33k
#define ECOMMUNITY_EVPN_SUBTYPE_ROUTERMAC    0x03
63
808
#define ECOMMUNITY_EVPN_SUBTYPE_DF_ELECTION 0x06
64
596
#define ECOMMUNITY_EVPN_SUBTYPE_DEF_GW       0x0d
65
1.14k
#define ECOMMUNITY_EVPN_SUBTYPE_ND           0x08
66
67
33
#define ECOMMUNITY_EVPN_SUBTYPE_MACMOBILITY_FLAG_STICKY 0x01
68
69
/* DF alg bits - only lower 5 bits are applicable */
70
64
#define ECOMMUNITY_EVPN_SUBTYPE_DF_ALG_BITS 0x1f
71
72
15
#define ECOMMUNITY_EVPN_SUBTYPE_ND_ROUTER_FLAG   0x01
73
#define ECOMMUNITY_EVPN_SUBTYPE_ND_OVERRIDE_FLAG 0x02
74
15
#define ECOMMUNITY_EVPN_SUBTYPE_PROXY_FLAG       0x04
75
76
39
#define ECOMMUNITY_EVPN_SUBTYPE_ESI_SA_FLAG (1 << 0) /* single-active */
77
78
/* Low-order octet of the Extended Communities type field for OPAQUE types */
79
607
#define ECOMMUNITY_OPAQUE_SUBTYPE_ENCAP     0x0c
80
81
/* Extended communities attribute string format.  */
82
0
#define ECOMMUNITY_FORMAT_ROUTE_MAP            0
83
548
#define ECOMMUNITY_FORMAT_COMMUNITY_LIST       1
84
867
#define ECOMMUNITY_FORMAT_DISPLAY              2
85
86
/* Extended Communities value is eight octet long.  */
87
166k
#define ECOMMUNITY_SIZE                        8
88
22
#define IPV6_ECOMMUNITY_SIZE                  20
89
90
/* Extended Community Origin Validation State */
91
enum ecommunity_origin_validation_states {
92
  ECOMMUNITY_ORIGIN_VALIDATION_STATE_VALID,
93
  ECOMMUNITY_ORIGIN_VALIDATION_STATE_NOTFOUND,
94
  ECOMMUNITY_ORIGIN_VALIDATION_STATE_INVALID,
95
  ECOMMUNITY_ORIGIN_VALIDATION_STATE_NOTUSED
96
};
97
98
/* Extended Communities type flag.  */
99
0
#define ECOMMUNITY_FLAG_NON_TRANSITIVE      0x40
100
101
/* Extended Community readable string length */
102
158
#define ECOMMUNITY_STRLEN 64
103
104
/* Node Target Extended Communities */
105
19.8k
#define ECOMMUNITY_NODE_TARGET 0x09
106
0
#define ECOMMUNITY_NODE_TARGET_RESERVED 0
107
108
/* Extended Communities attribute.  */
109
struct ecommunity {
110
  /* Reference counter.  */
111
  unsigned long refcnt;
112
113
  /* Size of Each Unit of Extended Communities attribute.
114
   * to differentiate between IPv6 ext comm and ext comm
115
   */
116
  uint8_t unit_size;
117
118
  /* Size of Extended Communities attribute.  */
119
  uint32_t size;
120
121
  /* Extended Communities value.  */
122
  uint8_t *val;
123
124
  /* Human readable format string.  */
125
  char *str;
126
127
  /* Disable IEEE floating-point encoding for extended community */
128
  bool disable_ieee_floating;
129
};
130
131
struct ecommunity_as {
132
  as_t as;
133
  uint32_t val;
134
};
135
136
struct ecommunity_ip {
137
  struct in_addr ip;
138
  uint16_t val;
139
};
140
141
struct ecommunity_ip6 {
142
  struct in6_addr ip;
143
  uint16_t val;
144
};
145
146
/* Extended community value is eight octet.  */
147
struct ecommunity_val {
148
  char val[ECOMMUNITY_SIZE];
149
};
150
151
/* IPv6 Extended community value is eight octet.  */
152
struct ecommunity_val_ipv6 {
153
  char val[IPV6_ECOMMUNITY_SIZE];
154
};
155
156
#define ecom_length_size(X, Y)    ((X)->size * (Y))
157
158
/*
159
 * Encode BGP Route Target AS:nn.
160
 */
161
static inline void encode_route_target_as(as_t as, uint32_t val,
162
            struct ecommunity_val *eval,
163
            bool trans)
164
0
{
165
0
  eval->val[0] = ECOMMUNITY_ENCODE_AS;
166
0
  if (!trans)
167
0
    eval->val[0] |= ECOMMUNITY_FLAG_NON_TRANSITIVE;
168
0
  eval->val[1] = ECOMMUNITY_ROUTE_TARGET;
169
0
  eval->val[2] = (as >> 8) & 0xff;
170
0
  eval->val[3] = as & 0xff;
171
0
  eval->val[4] = (val >> 24) & 0xff;
172
0
  eval->val[5] = (val >> 16) & 0xff;
173
0
  eval->val[6] = (val >> 8) & 0xff;
174
0
  eval->val[7] = val & 0xff;
175
0
}
Unexecuted instantiation: bgp_main.c:encode_route_target_as
Unexecuted instantiation: bgp_attr.c:encode_route_target_as
Unexecuted instantiation: bgp_attr_evpn.c:encode_route_target_as
Unexecuted instantiation: bgp_clist.c:encode_route_target_as
Unexecuted instantiation: bgp_community.c:encode_route_target_as
Unexecuted instantiation: bgp_debug.c:encode_route_target_as
Unexecuted instantiation: bgp_dump.c:encode_route_target_as
Unexecuted instantiation: bgp_ecommunity.c:encode_route_target_as
Unexecuted instantiation: bgp_evpn.c:encode_route_target_as
Unexecuted instantiation: bgp_evpn_mh.c:encode_route_target_as
Unexecuted instantiation: bgp_evpn_vty.c:encode_route_target_as
Unexecuted instantiation: bgp_flowspec_vty.c:encode_route_target_as
Unexecuted instantiation: bgp_fsm.c:encode_route_target_as
Unexecuted instantiation: bgp_io.c:encode_route_target_as
Unexecuted instantiation: bgp_keepalives.c:encode_route_target_as
Unexecuted instantiation: bgp_labelpool.c:encode_route_target_as
Unexecuted instantiation: bgp_mac.c:encode_route_target_as
Unexecuted instantiation: bgp_mpath.c:encode_route_target_as
Unexecuted instantiation: bgp_mplsvpn.c:encode_route_target_as
Unexecuted instantiation: bgp_network.c:encode_route_target_as
Unexecuted instantiation: bgp_nexthop.c:encode_route_target_as
Unexecuted instantiation: bgp_nht.c:encode_route_target_as
Unexecuted instantiation: bgp_packet.c:encode_route_target_as
Unexecuted instantiation: bgp_pbr.c:encode_route_target_as
Unexecuted instantiation: bgp_rd.c:encode_route_target_as
Unexecuted instantiation: bgp_route.c:encode_route_target_as
Unexecuted instantiation: bgp_routemap.c:encode_route_target_as
Unexecuted instantiation: bgp_updgrp.c:encode_route_target_as
Unexecuted instantiation: bgp_updgrp_adv.c:encode_route_target_as
Unexecuted instantiation: bgp_updgrp_packet.c:encode_route_target_as
Unexecuted instantiation: bgp_vpn.c:encode_route_target_as
Unexecuted instantiation: bgp_vty.c:encode_route_target_as
Unexecuted instantiation: bgp_zebra.c:encode_route_target_as
Unexecuted instantiation: bgpd.c:encode_route_target_as
Unexecuted instantiation: bgp_rfapi_cfg.c:encode_route_target_as
Unexecuted instantiation: rfapi_import.c:encode_route_target_as
Unexecuted instantiation: rfapi.c:encode_route_target_as
Unexecuted instantiation: rfapi_ap.c:encode_route_target_as
Unexecuted instantiation: rfapi_encap_tlv.c:encode_route_target_as
Unexecuted instantiation: rfapi_nve_addr.c:encode_route_target_as
Unexecuted instantiation: rfapi_monitor.c:encode_route_target_as
Unexecuted instantiation: rfapi_rib.c:encode_route_target_as
Unexecuted instantiation: rfapi_vty.c:encode_route_target_as
Unexecuted instantiation: vnc_export_bgp.c:encode_route_target_as
Unexecuted instantiation: vnc_export_table.c:encode_route_target_as
Unexecuted instantiation: vnc_import_bgp.c:encode_route_target_as
Unexecuted instantiation: vnc_zebra.c:encode_route_target_as
Unexecuted instantiation: bgp_advertise.c:encode_route_target_as
Unexecuted instantiation: bgp_aspath.c:encode_route_target_as
Unexecuted instantiation: bgp_bfd.c:encode_route_target_as
Unexecuted instantiation: bgp_conditional_adv.c:encode_route_target_as
Unexecuted instantiation: bgp_damp.c:encode_route_target_as
Unexecuted instantiation: bgp_encap_tlv.c:encode_route_target_as
Unexecuted instantiation: bgp_flowspec.c:encode_route_target_as
Unexecuted instantiation: bgp_label.c:encode_route_target_as
Unexecuted instantiation: bgp_open.c:encode_route_target_as
Unexecuted instantiation: rfp_example.c:encode_route_target_as
176
177
/*
178
 * Encode BGP Route Target IP:nn.
179
 */
180
static inline void encode_route_target_ip(struct in_addr *ip, uint16_t val,
181
            struct ecommunity_val *eval,
182
            bool trans)
183
0
{
184
0
  eval->val[0] = ECOMMUNITY_ENCODE_IP;
185
0
  if (!trans)
186
0
    eval->val[0] |= ECOMMUNITY_FLAG_NON_TRANSITIVE;
187
0
  eval->val[1] = ECOMMUNITY_ROUTE_TARGET;
188
0
  memcpy(&eval->val[2], ip, sizeof(struct in_addr));
189
0
  eval->val[6] = (val >> 8) & 0xff;
190
0
  eval->val[7] = val & 0xff;
191
0
}
Unexecuted instantiation: bgp_main.c:encode_route_target_ip
Unexecuted instantiation: bgp_attr.c:encode_route_target_ip
Unexecuted instantiation: bgp_attr_evpn.c:encode_route_target_ip
Unexecuted instantiation: bgp_clist.c:encode_route_target_ip
Unexecuted instantiation: bgp_community.c:encode_route_target_ip
Unexecuted instantiation: bgp_debug.c:encode_route_target_ip
Unexecuted instantiation: bgp_dump.c:encode_route_target_ip
Unexecuted instantiation: bgp_ecommunity.c:encode_route_target_ip
Unexecuted instantiation: bgp_evpn.c:encode_route_target_ip
Unexecuted instantiation: bgp_evpn_mh.c:encode_route_target_ip
Unexecuted instantiation: bgp_evpn_vty.c:encode_route_target_ip
Unexecuted instantiation: bgp_flowspec_vty.c:encode_route_target_ip
Unexecuted instantiation: bgp_fsm.c:encode_route_target_ip
Unexecuted instantiation: bgp_io.c:encode_route_target_ip
Unexecuted instantiation: bgp_keepalives.c:encode_route_target_ip
Unexecuted instantiation: bgp_labelpool.c:encode_route_target_ip
Unexecuted instantiation: bgp_mac.c:encode_route_target_ip
Unexecuted instantiation: bgp_mpath.c:encode_route_target_ip
Unexecuted instantiation: bgp_mplsvpn.c:encode_route_target_ip
Unexecuted instantiation: bgp_network.c:encode_route_target_ip
Unexecuted instantiation: bgp_nexthop.c:encode_route_target_ip
Unexecuted instantiation: bgp_nht.c:encode_route_target_ip
Unexecuted instantiation: bgp_packet.c:encode_route_target_ip
Unexecuted instantiation: bgp_pbr.c:encode_route_target_ip
Unexecuted instantiation: bgp_rd.c:encode_route_target_ip
Unexecuted instantiation: bgp_route.c:encode_route_target_ip
Unexecuted instantiation: bgp_routemap.c:encode_route_target_ip
Unexecuted instantiation: bgp_updgrp.c:encode_route_target_ip
Unexecuted instantiation: bgp_updgrp_adv.c:encode_route_target_ip
Unexecuted instantiation: bgp_updgrp_packet.c:encode_route_target_ip
Unexecuted instantiation: bgp_vpn.c:encode_route_target_ip
Unexecuted instantiation: bgp_vty.c:encode_route_target_ip
Unexecuted instantiation: bgp_zebra.c:encode_route_target_ip
Unexecuted instantiation: bgpd.c:encode_route_target_ip
Unexecuted instantiation: bgp_rfapi_cfg.c:encode_route_target_ip
Unexecuted instantiation: rfapi_import.c:encode_route_target_ip
Unexecuted instantiation: rfapi.c:encode_route_target_ip
Unexecuted instantiation: rfapi_ap.c:encode_route_target_ip
Unexecuted instantiation: rfapi_encap_tlv.c:encode_route_target_ip
Unexecuted instantiation: rfapi_nve_addr.c:encode_route_target_ip
Unexecuted instantiation: rfapi_monitor.c:encode_route_target_ip
Unexecuted instantiation: rfapi_rib.c:encode_route_target_ip
Unexecuted instantiation: rfapi_vty.c:encode_route_target_ip
Unexecuted instantiation: vnc_export_bgp.c:encode_route_target_ip
Unexecuted instantiation: vnc_export_table.c:encode_route_target_ip
Unexecuted instantiation: vnc_import_bgp.c:encode_route_target_ip
Unexecuted instantiation: vnc_zebra.c:encode_route_target_ip
Unexecuted instantiation: bgp_advertise.c:encode_route_target_ip
Unexecuted instantiation: bgp_aspath.c:encode_route_target_ip
Unexecuted instantiation: bgp_bfd.c:encode_route_target_ip
Unexecuted instantiation: bgp_conditional_adv.c:encode_route_target_ip
Unexecuted instantiation: bgp_damp.c:encode_route_target_ip
Unexecuted instantiation: bgp_encap_tlv.c:encode_route_target_ip
Unexecuted instantiation: bgp_flowspec.c:encode_route_target_ip
Unexecuted instantiation: bgp_label.c:encode_route_target_ip
Unexecuted instantiation: bgp_open.c:encode_route_target_ip
Unexecuted instantiation: rfp_example.c:encode_route_target_ip
192
193
/*
194
 * Encode BGP Route Target AS4:nn.
195
 */
196
static inline void encode_route_target_as4(as_t as, uint16_t val,
197
             struct ecommunity_val *eval,
198
             bool trans)
199
0
{
200
0
  eval->val[0] = ECOMMUNITY_ENCODE_AS4;
201
0
  if (!trans)
202
0
    eval->val[0] |= ECOMMUNITY_FLAG_NON_TRANSITIVE;
203
0
  eval->val[1] = ECOMMUNITY_ROUTE_TARGET;
204
0
  eval->val[2] = (as >> 24) & 0xff;
205
0
  eval->val[3] = (as >> 16) & 0xff;
206
0
  eval->val[4] = (as >> 8) & 0xff;
207
0
  eval->val[5] = as & 0xff;
208
0
  eval->val[6] = (val >> 8) & 0xff;
209
0
  eval->val[7] = val & 0xff;
210
0
}
Unexecuted instantiation: bgp_main.c:encode_route_target_as4
Unexecuted instantiation: bgp_attr.c:encode_route_target_as4
Unexecuted instantiation: bgp_attr_evpn.c:encode_route_target_as4
Unexecuted instantiation: bgp_clist.c:encode_route_target_as4
Unexecuted instantiation: bgp_community.c:encode_route_target_as4
Unexecuted instantiation: bgp_debug.c:encode_route_target_as4
Unexecuted instantiation: bgp_dump.c:encode_route_target_as4
Unexecuted instantiation: bgp_ecommunity.c:encode_route_target_as4
Unexecuted instantiation: bgp_evpn.c:encode_route_target_as4
Unexecuted instantiation: bgp_evpn_mh.c:encode_route_target_as4
Unexecuted instantiation: bgp_evpn_vty.c:encode_route_target_as4
Unexecuted instantiation: bgp_flowspec_vty.c:encode_route_target_as4
Unexecuted instantiation: bgp_fsm.c:encode_route_target_as4
Unexecuted instantiation: bgp_io.c:encode_route_target_as4
Unexecuted instantiation: bgp_keepalives.c:encode_route_target_as4
Unexecuted instantiation: bgp_labelpool.c:encode_route_target_as4
Unexecuted instantiation: bgp_mac.c:encode_route_target_as4
Unexecuted instantiation: bgp_mpath.c:encode_route_target_as4
Unexecuted instantiation: bgp_mplsvpn.c:encode_route_target_as4
Unexecuted instantiation: bgp_network.c:encode_route_target_as4
Unexecuted instantiation: bgp_nexthop.c:encode_route_target_as4
Unexecuted instantiation: bgp_nht.c:encode_route_target_as4
Unexecuted instantiation: bgp_packet.c:encode_route_target_as4
Unexecuted instantiation: bgp_pbr.c:encode_route_target_as4
Unexecuted instantiation: bgp_rd.c:encode_route_target_as4
Unexecuted instantiation: bgp_route.c:encode_route_target_as4
Unexecuted instantiation: bgp_routemap.c:encode_route_target_as4
Unexecuted instantiation: bgp_updgrp.c:encode_route_target_as4
Unexecuted instantiation: bgp_updgrp_adv.c:encode_route_target_as4
Unexecuted instantiation: bgp_updgrp_packet.c:encode_route_target_as4
Unexecuted instantiation: bgp_vpn.c:encode_route_target_as4
Unexecuted instantiation: bgp_vty.c:encode_route_target_as4
Unexecuted instantiation: bgp_zebra.c:encode_route_target_as4
Unexecuted instantiation: bgpd.c:encode_route_target_as4
Unexecuted instantiation: bgp_rfapi_cfg.c:encode_route_target_as4
Unexecuted instantiation: rfapi_import.c:encode_route_target_as4
Unexecuted instantiation: rfapi.c:encode_route_target_as4
Unexecuted instantiation: rfapi_ap.c:encode_route_target_as4
Unexecuted instantiation: rfapi_encap_tlv.c:encode_route_target_as4
Unexecuted instantiation: rfapi_nve_addr.c:encode_route_target_as4
Unexecuted instantiation: rfapi_monitor.c:encode_route_target_as4
Unexecuted instantiation: rfapi_rib.c:encode_route_target_as4
Unexecuted instantiation: rfapi_vty.c:encode_route_target_as4
Unexecuted instantiation: vnc_export_bgp.c:encode_route_target_as4
Unexecuted instantiation: vnc_export_table.c:encode_route_target_as4
Unexecuted instantiation: vnc_import_bgp.c:encode_route_target_as4
Unexecuted instantiation: vnc_zebra.c:encode_route_target_as4
Unexecuted instantiation: bgp_advertise.c:encode_route_target_as4
Unexecuted instantiation: bgp_aspath.c:encode_route_target_as4
Unexecuted instantiation: bgp_bfd.c:encode_route_target_as4
Unexecuted instantiation: bgp_conditional_adv.c:encode_route_target_as4
Unexecuted instantiation: bgp_damp.c:encode_route_target_as4
Unexecuted instantiation: bgp_encap_tlv.c:encode_route_target_as4
Unexecuted instantiation: bgp_flowspec.c:encode_route_target_as4
Unexecuted instantiation: bgp_label.c:encode_route_target_as4
Unexecuted instantiation: bgp_open.c:encode_route_target_as4
Unexecuted instantiation: rfp_example.c:encode_route_target_as4
211
212
/* Helper function to convert uint32 to IEEE-754 Floating Point */
213
static uint32_t uint32_to_ieee_float_uint32(uint32_t u)
214
0
{
215
0
  union {
216
0
    float r;
217
0
    uint32_t d;
218
0
  } f = {.r = (float)u};
219
220
0
  return f.d;
221
0
}
Unexecuted instantiation: bgp_main.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_attr.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_attr_evpn.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_clist.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_community.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_debug.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_dump.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_ecommunity.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_evpn.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_evpn_mh.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_evpn_vty.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_flowspec_vty.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_fsm.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_io.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_keepalives.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_labelpool.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_mac.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_mpath.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_mplsvpn.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_network.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_nexthop.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_nht.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_packet.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_pbr.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_rd.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_route.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_routemap.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_updgrp.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_updgrp_adv.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_updgrp_packet.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_vpn.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_vty.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_zebra.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgpd.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_rfapi_cfg.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_import.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_ap.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_encap_tlv.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_nve_addr.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_monitor.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_rib.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfapi_vty.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: vnc_export_bgp.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: vnc_export_table.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: vnc_import_bgp.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: vnc_zebra.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_advertise.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_aspath.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_bfd.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_conditional_adv.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_damp.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_encap_tlv.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_flowspec.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_label.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: bgp_open.c:uint32_to_ieee_float_uint32
Unexecuted instantiation: rfp_example.c:uint32_to_ieee_float_uint32
222
223
/*
224
 * Encode BGP Link Bandwidth extended community
225
 *  bandwidth (bw) is in bytes-per-sec
226
 */
227
static inline void encode_lb_extcomm(as_t as, uint32_t bw, bool non_trans,
228
             struct ecommunity_val *eval,
229
             bool disable_ieee_floating)
230
0
{
231
0
  uint32_t bandwidth =
232
0
    disable_ieee_floating ? bw : uint32_to_ieee_float_uint32(bw);
233
234
0
  memset(eval, 0, sizeof(*eval));
235
0
  eval->val[0] = ECOMMUNITY_ENCODE_AS;
236
0
  if (non_trans)
237
0
    eval->val[0] |= ECOMMUNITY_FLAG_NON_TRANSITIVE;
238
0
  eval->val[1] = ECOMMUNITY_LINK_BANDWIDTH;
239
0
  eval->val[2] = (as >> 8) & 0xff;
240
0
  eval->val[3] = as & 0xff;
241
0
  eval->val[4] = (bandwidth >> 24) & 0xff;
242
0
  eval->val[5] = (bandwidth >> 16) & 0xff;
243
0
  eval->val[6] = (bandwidth >> 8) & 0xff;
244
0
  eval->val[7] = bandwidth & 0xff;
245
0
}
Unexecuted instantiation: bgp_main.c:encode_lb_extcomm
Unexecuted instantiation: bgp_attr.c:encode_lb_extcomm
Unexecuted instantiation: bgp_attr_evpn.c:encode_lb_extcomm
Unexecuted instantiation: bgp_clist.c:encode_lb_extcomm
Unexecuted instantiation: bgp_community.c:encode_lb_extcomm
Unexecuted instantiation: bgp_debug.c:encode_lb_extcomm
Unexecuted instantiation: bgp_dump.c:encode_lb_extcomm
Unexecuted instantiation: bgp_ecommunity.c:encode_lb_extcomm
Unexecuted instantiation: bgp_evpn.c:encode_lb_extcomm
Unexecuted instantiation: bgp_evpn_mh.c:encode_lb_extcomm
Unexecuted instantiation: bgp_evpn_vty.c:encode_lb_extcomm
Unexecuted instantiation: bgp_flowspec_vty.c:encode_lb_extcomm
Unexecuted instantiation: bgp_fsm.c:encode_lb_extcomm
Unexecuted instantiation: bgp_io.c:encode_lb_extcomm
Unexecuted instantiation: bgp_keepalives.c:encode_lb_extcomm
Unexecuted instantiation: bgp_labelpool.c:encode_lb_extcomm
Unexecuted instantiation: bgp_mac.c:encode_lb_extcomm
Unexecuted instantiation: bgp_mpath.c:encode_lb_extcomm
Unexecuted instantiation: bgp_mplsvpn.c:encode_lb_extcomm
Unexecuted instantiation: bgp_network.c:encode_lb_extcomm
Unexecuted instantiation: bgp_nexthop.c:encode_lb_extcomm
Unexecuted instantiation: bgp_nht.c:encode_lb_extcomm
Unexecuted instantiation: bgp_packet.c:encode_lb_extcomm
Unexecuted instantiation: bgp_pbr.c:encode_lb_extcomm
Unexecuted instantiation: bgp_rd.c:encode_lb_extcomm
Unexecuted instantiation: bgp_route.c:encode_lb_extcomm
Unexecuted instantiation: bgp_routemap.c:encode_lb_extcomm
Unexecuted instantiation: bgp_updgrp.c:encode_lb_extcomm
Unexecuted instantiation: bgp_updgrp_adv.c:encode_lb_extcomm
Unexecuted instantiation: bgp_updgrp_packet.c:encode_lb_extcomm
Unexecuted instantiation: bgp_vpn.c:encode_lb_extcomm
Unexecuted instantiation: bgp_vty.c:encode_lb_extcomm
Unexecuted instantiation: bgp_zebra.c:encode_lb_extcomm
Unexecuted instantiation: bgpd.c:encode_lb_extcomm
Unexecuted instantiation: bgp_rfapi_cfg.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_import.c:encode_lb_extcomm
Unexecuted instantiation: rfapi.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_ap.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_encap_tlv.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_nve_addr.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_monitor.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_rib.c:encode_lb_extcomm
Unexecuted instantiation: rfapi_vty.c:encode_lb_extcomm
Unexecuted instantiation: vnc_export_bgp.c:encode_lb_extcomm
Unexecuted instantiation: vnc_export_table.c:encode_lb_extcomm
Unexecuted instantiation: vnc_import_bgp.c:encode_lb_extcomm
Unexecuted instantiation: vnc_zebra.c:encode_lb_extcomm
Unexecuted instantiation: bgp_advertise.c:encode_lb_extcomm
Unexecuted instantiation: bgp_aspath.c:encode_lb_extcomm
Unexecuted instantiation: bgp_bfd.c:encode_lb_extcomm
Unexecuted instantiation: bgp_conditional_adv.c:encode_lb_extcomm
Unexecuted instantiation: bgp_damp.c:encode_lb_extcomm
Unexecuted instantiation: bgp_encap_tlv.c:encode_lb_extcomm
Unexecuted instantiation: bgp_flowspec.c:encode_lb_extcomm
Unexecuted instantiation: bgp_label.c:encode_lb_extcomm
Unexecuted instantiation: bgp_open.c:encode_lb_extcomm
Unexecuted instantiation: rfp_example.c:encode_lb_extcomm
246
247
static inline void encode_origin_validation_state(enum rpki_states state,
248
              struct ecommunity_val *eval)
249
0
{
250
0
  enum ecommunity_origin_validation_states ovs_state =
251
0
    ECOMMUNITY_ORIGIN_VALIDATION_STATE_NOTUSED;
252
253
0
  switch (state) {
254
0
  case RPKI_VALID:
255
0
    ovs_state = ECOMMUNITY_ORIGIN_VALIDATION_STATE_VALID;
256
0
    break;
257
0
  case RPKI_NOTFOUND:
258
0
    ovs_state = ECOMMUNITY_ORIGIN_VALIDATION_STATE_NOTFOUND;
259
0
    break;
260
0
  case RPKI_INVALID:
261
0
    ovs_state = ECOMMUNITY_ORIGIN_VALIDATION_STATE_INVALID;
262
0
    break;
263
0
  case RPKI_NOT_BEING_USED:
264
0
    break;
265
0
  }
266
267
0
  memset(eval, 0, sizeof(*eval));
268
0
  eval->val[0] = ECOMMUNITY_ENCODE_OPAQUE_NON_TRANS;
269
0
  eval->val[1] = ECOMMUNITY_ORIGIN_VALIDATION_STATE;
270
0
  eval->val[7] = ovs_state;
271
0
}
Unexecuted instantiation: bgp_main.c:encode_origin_validation_state
Unexecuted instantiation: bgp_attr.c:encode_origin_validation_state
Unexecuted instantiation: bgp_attr_evpn.c:encode_origin_validation_state
Unexecuted instantiation: bgp_clist.c:encode_origin_validation_state
Unexecuted instantiation: bgp_community.c:encode_origin_validation_state
Unexecuted instantiation: bgp_debug.c:encode_origin_validation_state
Unexecuted instantiation: bgp_dump.c:encode_origin_validation_state
Unexecuted instantiation: bgp_ecommunity.c:encode_origin_validation_state
Unexecuted instantiation: bgp_evpn.c:encode_origin_validation_state
Unexecuted instantiation: bgp_evpn_mh.c:encode_origin_validation_state
Unexecuted instantiation: bgp_evpn_vty.c:encode_origin_validation_state
Unexecuted instantiation: bgp_flowspec_vty.c:encode_origin_validation_state
Unexecuted instantiation: bgp_fsm.c:encode_origin_validation_state
Unexecuted instantiation: bgp_io.c:encode_origin_validation_state
Unexecuted instantiation: bgp_keepalives.c:encode_origin_validation_state
Unexecuted instantiation: bgp_labelpool.c:encode_origin_validation_state
Unexecuted instantiation: bgp_mac.c:encode_origin_validation_state
Unexecuted instantiation: bgp_mpath.c:encode_origin_validation_state
Unexecuted instantiation: bgp_mplsvpn.c:encode_origin_validation_state
Unexecuted instantiation: bgp_network.c:encode_origin_validation_state
Unexecuted instantiation: bgp_nexthop.c:encode_origin_validation_state
Unexecuted instantiation: bgp_nht.c:encode_origin_validation_state
Unexecuted instantiation: bgp_packet.c:encode_origin_validation_state
Unexecuted instantiation: bgp_pbr.c:encode_origin_validation_state
Unexecuted instantiation: bgp_rd.c:encode_origin_validation_state
Unexecuted instantiation: bgp_route.c:encode_origin_validation_state
Unexecuted instantiation: bgp_routemap.c:encode_origin_validation_state
Unexecuted instantiation: bgp_updgrp.c:encode_origin_validation_state
Unexecuted instantiation: bgp_updgrp_adv.c:encode_origin_validation_state
Unexecuted instantiation: bgp_updgrp_packet.c:encode_origin_validation_state
Unexecuted instantiation: bgp_vpn.c:encode_origin_validation_state
Unexecuted instantiation: bgp_vty.c:encode_origin_validation_state
Unexecuted instantiation: bgp_zebra.c:encode_origin_validation_state
Unexecuted instantiation: bgpd.c:encode_origin_validation_state
Unexecuted instantiation: bgp_rfapi_cfg.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_import.c:encode_origin_validation_state
Unexecuted instantiation: rfapi.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_ap.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_encap_tlv.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_nve_addr.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_monitor.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_rib.c:encode_origin_validation_state
Unexecuted instantiation: rfapi_vty.c:encode_origin_validation_state
Unexecuted instantiation: vnc_export_bgp.c:encode_origin_validation_state
Unexecuted instantiation: vnc_export_table.c:encode_origin_validation_state
Unexecuted instantiation: vnc_import_bgp.c:encode_origin_validation_state
Unexecuted instantiation: vnc_zebra.c:encode_origin_validation_state
Unexecuted instantiation: bgp_advertise.c:encode_origin_validation_state
Unexecuted instantiation: bgp_aspath.c:encode_origin_validation_state
Unexecuted instantiation: bgp_bfd.c:encode_origin_validation_state
Unexecuted instantiation: bgp_conditional_adv.c:encode_origin_validation_state
Unexecuted instantiation: bgp_damp.c:encode_origin_validation_state
Unexecuted instantiation: bgp_encap_tlv.c:encode_origin_validation_state
Unexecuted instantiation: bgp_flowspec.c:encode_origin_validation_state
Unexecuted instantiation: bgp_label.c:encode_origin_validation_state
Unexecuted instantiation: bgp_open.c:encode_origin_validation_state
Unexecuted instantiation: rfp_example.c:encode_origin_validation_state
272
273
static inline void encode_node_target(struct in_addr *node_id,
274
              struct ecommunity_val *eval, bool trans)
275
0
{
276
  /*
277
   *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
278
   *  | 0x01 or 0x41 | Sub-Type(0x09) |    Target BGP Identifier      |
279
   *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
280
   *  | Target BGP Identifier (cont.) |           Reserved            |
281
   *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
282
   */
283
0
  memset(eval, 0, sizeof(*eval));
284
0
  eval->val[0] = ECOMMUNITY_ENCODE_IP;
285
0
  if (!trans)
286
0
    eval->val[0] |= ECOMMUNITY_ENCODE_IP_NON_TRANS;
287
0
  eval->val[1] = ECOMMUNITY_NODE_TARGET;
288
0
  memcpy(&eval->val[2], node_id, sizeof(*node_id));
289
0
  eval->val[6] = ECOMMUNITY_NODE_TARGET_RESERVED;
290
0
  eval->val[7] = ECOMMUNITY_NODE_TARGET_RESERVED;
291
0
}
Unexecuted instantiation: bgp_main.c:encode_node_target
Unexecuted instantiation: bgp_attr.c:encode_node_target
Unexecuted instantiation: bgp_attr_evpn.c:encode_node_target
Unexecuted instantiation: bgp_clist.c:encode_node_target
Unexecuted instantiation: bgp_community.c:encode_node_target
Unexecuted instantiation: bgp_debug.c:encode_node_target
Unexecuted instantiation: bgp_dump.c:encode_node_target
Unexecuted instantiation: bgp_ecommunity.c:encode_node_target
Unexecuted instantiation: bgp_evpn.c:encode_node_target
Unexecuted instantiation: bgp_evpn_mh.c:encode_node_target
Unexecuted instantiation: bgp_evpn_vty.c:encode_node_target
Unexecuted instantiation: bgp_flowspec_vty.c:encode_node_target
Unexecuted instantiation: bgp_fsm.c:encode_node_target
Unexecuted instantiation: bgp_io.c:encode_node_target
Unexecuted instantiation: bgp_keepalives.c:encode_node_target
Unexecuted instantiation: bgp_labelpool.c:encode_node_target
Unexecuted instantiation: bgp_mac.c:encode_node_target
Unexecuted instantiation: bgp_mpath.c:encode_node_target
Unexecuted instantiation: bgp_mplsvpn.c:encode_node_target
Unexecuted instantiation: bgp_network.c:encode_node_target
Unexecuted instantiation: bgp_nexthop.c:encode_node_target
Unexecuted instantiation: bgp_nht.c:encode_node_target
Unexecuted instantiation: bgp_packet.c:encode_node_target
Unexecuted instantiation: bgp_pbr.c:encode_node_target
Unexecuted instantiation: bgp_rd.c:encode_node_target
Unexecuted instantiation: bgp_route.c:encode_node_target
Unexecuted instantiation: bgp_routemap.c:encode_node_target
Unexecuted instantiation: bgp_updgrp.c:encode_node_target
Unexecuted instantiation: bgp_updgrp_adv.c:encode_node_target
Unexecuted instantiation: bgp_updgrp_packet.c:encode_node_target
Unexecuted instantiation: bgp_vpn.c:encode_node_target
Unexecuted instantiation: bgp_vty.c:encode_node_target
Unexecuted instantiation: bgp_zebra.c:encode_node_target
Unexecuted instantiation: bgpd.c:encode_node_target
Unexecuted instantiation: bgp_rfapi_cfg.c:encode_node_target
Unexecuted instantiation: rfapi_import.c:encode_node_target
Unexecuted instantiation: rfapi.c:encode_node_target
Unexecuted instantiation: rfapi_ap.c:encode_node_target
Unexecuted instantiation: rfapi_encap_tlv.c:encode_node_target
Unexecuted instantiation: rfapi_nve_addr.c:encode_node_target
Unexecuted instantiation: rfapi_monitor.c:encode_node_target
Unexecuted instantiation: rfapi_rib.c:encode_node_target
Unexecuted instantiation: rfapi_vty.c:encode_node_target
Unexecuted instantiation: vnc_export_bgp.c:encode_node_target
Unexecuted instantiation: vnc_export_table.c:encode_node_target
Unexecuted instantiation: vnc_import_bgp.c:encode_node_target
Unexecuted instantiation: vnc_zebra.c:encode_node_target
Unexecuted instantiation: bgp_advertise.c:encode_node_target
Unexecuted instantiation: bgp_aspath.c:encode_node_target
Unexecuted instantiation: bgp_bfd.c:encode_node_target
Unexecuted instantiation: bgp_conditional_adv.c:encode_node_target
Unexecuted instantiation: bgp_damp.c:encode_node_target
Unexecuted instantiation: bgp_encap_tlv.c:encode_node_target
Unexecuted instantiation: bgp_flowspec.c:encode_node_target
Unexecuted instantiation: bgp_label.c:encode_node_target
Unexecuted instantiation: bgp_open.c:encode_node_target
Unexecuted instantiation: rfp_example.c:encode_node_target
292
293
extern void ecommunity_init(void);
294
extern void ecommunity_finish(void);
295
extern void ecommunity_free(struct ecommunity **);
296
extern struct ecommunity *ecommunity_parse(uint8_t *, unsigned short,
297
             bool disable_ieee_floating);
298
extern struct ecommunity *ecommunity_parse_ipv6(uint8_t *pnt,
299
            unsigned short length,
300
            bool disable_ieee_floating);
301
extern struct ecommunity *ecommunity_dup(struct ecommunity *);
302
extern struct ecommunity *ecommunity_merge(struct ecommunity *,
303
             struct ecommunity *);
304
extern struct ecommunity *ecommunity_uniq_sort(struct ecommunity *);
305
extern struct ecommunity *ecommunity_intern(struct ecommunity *);
306
extern bool ecommunity_cmp(const void *arg1, const void *arg2);
307
extern void ecommunity_unintern(struct ecommunity **ecommunity);
308
extern unsigned int ecommunity_hash_make(const void *);
309
extern struct ecommunity *ecommunity_str2com(const char *, int, int);
310
extern struct ecommunity *ecommunity_str2com_ipv6(const char *str, int type,
311
              int keyword_included);
312
extern char *ecommunity_ecom2str(struct ecommunity *, int, int);
313
extern void ecommunity_strfree(char **s);
314
extern bool ecommunity_include(struct ecommunity *e1, struct ecommunity *e2);
315
extern bool ecommunity_match(const struct ecommunity *,
316
           const struct ecommunity *);
317
extern char *ecommunity_str(struct ecommunity *);
318
extern struct ecommunity_val *ecommunity_lookup(const struct ecommunity *,
319
            uint8_t, uint8_t);
320
321
extern bool ecommunity_add_val(struct ecommunity *ecom,
322
             struct ecommunity_val *eval,
323
             bool unique, bool overwrite);
324
extern bool ecommunity_add_val_ipv6(struct ecommunity *ecom,
325
            struct ecommunity_val_ipv6 *eval,
326
            bool unique, bool overwrite);
327
328
/* for vpn */
329
extern struct ecommunity *ecommunity_new(void);
330
extern bool ecommunity_strip(struct ecommunity *ecom, uint8_t type,
331
           uint8_t subtype);
332
extern struct ecommunity *ecommunity_new(void);
333
extern bool ecommunity_del_val(struct ecommunity *ecom,
334
             struct ecommunity_val *eval);
335
struct bgp_pbr_entry_action;
336
extern int ecommunity_fill_pbr_action(struct ecommunity_val *ecom_eval,
337
              struct bgp_pbr_entry_action *api,
338
              afi_t afi);
339
340
extern void bgp_compute_aggregate_ecommunity(
341
          struct bgp_aggregate *aggregate,
342
          struct ecommunity *ecommunity);
343
344
extern void bgp_compute_aggregate_ecommunity_hash(
345
          struct bgp_aggregate *aggregate,
346
          struct ecommunity *ecommunity);
347
extern void bgp_compute_aggregate_ecommunity_val(
348
          struct bgp_aggregate *aggregate);
349
extern void bgp_remove_ecommunity_from_aggregate(
350
          struct bgp_aggregate *aggregate,
351
          struct ecommunity *ecommunity);
352
extern void bgp_remove_ecomm_from_aggregate_hash(
353
          struct bgp_aggregate *aggregate,
354
          struct ecommunity *ecommunity);
355
extern void bgp_aggr_ecommunity_remove(void *arg);
356
extern const uint8_t *ecommunity_linkbw_present(struct ecommunity *ecom,
357
            uint32_t *bw);
358
extern struct ecommunity *ecommunity_replace_linkbw(as_t as,
359
                struct ecommunity *ecom,
360
                uint64_t cum_bw,
361
                bool disable_ieee_floating);
362
363
static inline void ecommunity_strip_rts(struct ecommunity *ecom)
364
0
{
365
0
  uint8_t subtype = ECOMMUNITY_ROUTE_TARGET;
366
367
0
  ecommunity_strip(ecom, ECOMMUNITY_ENCODE_AS, subtype);
368
0
  ecommunity_strip(ecom, ECOMMUNITY_ENCODE_IP, subtype);
369
0
  ecommunity_strip(ecom, ECOMMUNITY_ENCODE_AS4, subtype);
370
0
}
Unexecuted instantiation: bgp_main.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_attr.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_attr_evpn.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_clist.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_community.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_debug.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_dump.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_ecommunity.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_evpn.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_evpn_mh.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_evpn_vty.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_flowspec_vty.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_fsm.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_io.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_keepalives.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_labelpool.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_mac.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_mpath.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_mplsvpn.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_network.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_nexthop.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_nht.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_packet.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_pbr.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_rd.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_route.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_routemap.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_updgrp.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_updgrp_adv.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_updgrp_packet.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_vpn.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_vty.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_zebra.c:ecommunity_strip_rts
Unexecuted instantiation: bgpd.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_rfapi_cfg.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_import.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_ap.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_encap_tlv.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_nve_addr.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_monitor.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_rib.c:ecommunity_strip_rts
Unexecuted instantiation: rfapi_vty.c:ecommunity_strip_rts
Unexecuted instantiation: vnc_export_bgp.c:ecommunity_strip_rts
Unexecuted instantiation: vnc_export_table.c:ecommunity_strip_rts
Unexecuted instantiation: vnc_import_bgp.c:ecommunity_strip_rts
Unexecuted instantiation: vnc_zebra.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_advertise.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_aspath.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_bfd.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_conditional_adv.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_damp.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_encap_tlv.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_flowspec.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_label.c:ecommunity_strip_rts
Unexecuted instantiation: bgp_open.c:ecommunity_strip_rts
Unexecuted instantiation: rfp_example.c:ecommunity_strip_rts
371
extern struct ecommunity *
372
ecommunity_add_origin_validation_state(enum rpki_states rpki_state,
373
               struct ecommunity *ecom);
374
extern struct ecommunity *ecommunity_add_node_target(struct in_addr *node_id,
375
                 struct ecommunity *old,
376
                 bool non_trans);
377
extern bool ecommunity_node_target_match(struct ecommunity *ecomm,
378
           struct in_addr *local_id);
379
#endif /* _QUAGGA_BGP_ECOMMUNITY_H */