Coverage Report

Created: 2025-11-11 06:17

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/zebra/zebra_mpls.h
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
 * Zebra MPLS Data structures and definitions
4
 * Copyright (C) 2015 Cumulus Networks, Inc.
5
 */
6
7
#ifndef _ZEBRA_MPLS_H
8
#define _ZEBRA_MPLS_H
9
10
#include "prefix.h"
11
#include "table.h"
12
#include "queue.h"
13
#include "hash.h"
14
#include "jhash.h"
15
#include "nexthop.h"
16
#include "vty.h"
17
#include "memory.h"
18
#include "mpls.h"
19
#include "zebra/zserv.h"
20
#include "zebra/zebra_vrf.h"
21
#include "hook.h"
22
23
#ifdef __cplusplus
24
extern "C" {
25
#endif
26
27
/* Definitions and macros. */
28
29
#define NHLFE_FAMILY(nhlfe)                                                    \
30
0
  (((nhlfe)->nexthop->type == NEXTHOP_TYPE_IPV6                          \
31
0
    || (nhlfe)->nexthop->type == NEXTHOP_TYPE_IPV6_IFINDEX)              \
32
0
     ? AF_INET6                                                    \
33
0
     : AF_INET)
34
35
/* Declare LSP nexthop list types */
36
PREDECL_DLIST(nhlfe_list);
37
38
/*
39
 * (Outgoing) nexthop label forwarding entry
40
 */
41
struct zebra_nhlfe {
42
  /* Type of entry - static etc. */
43
  enum lsp_types_t type;
44
45
  /* Nexthop information (with outgoing label) */
46
  struct nexthop *nexthop;
47
48
  /* Backpointer to base entry. */
49
  struct zebra_lsp *lsp;
50
51
  /* Runtime info - flags, pointers etc. */
52
  uint32_t flags;
53
#define NHLFE_FLAG_CHANGED     (1 << 0)
54
#define NHLFE_FLAG_SELECTED    (1 << 1)
55
#define NHLFE_FLAG_MULTIPATH   (1 << 2)
56
#define NHLFE_FLAG_DELETED     (1 << 3)
57
#define NHLFE_FLAG_INSTALLED   (1 << 4)
58
#define NHLFE_FLAG_IS_BACKUP   (1 << 5)
59
60
  uint8_t distance;
61
62
  /* Linkage for LSPs' lists */
63
  struct nhlfe_list_item list;
64
};
65
66
/*
67
 * Incoming label entry
68
 */
69
struct zebra_ile {
70
  mpls_label_t in_label;
71
};
72
73
/*
74
 * Label swap entry (ile -> list of nhlfes)
75
 */
76
struct zebra_lsp {
77
  /* Incoming label */
78
  struct zebra_ile ile;
79
80
  /* List of NHLFEs, pointer to best, and num equal-cost. */
81
  struct nhlfe_list_head nhlfe_list;
82
83
  struct zebra_nhlfe *best_nhlfe;
84
  uint32_t num_ecmp;
85
86
  /* Backup nhlfes, if present. The nexthop in a primary/active nhlfe
87
   * refers to its backup (if any) by index, so the order of this list
88
   * is significant.
89
   */
90
  struct nhlfe_list_head backup_nhlfe_list;
91
92
  /* Flags */
93
  uint32_t flags;
94
#define LSP_FLAG_SCHEDULED        (1 << 0)
95
#define LSP_FLAG_INSTALLED        (1 << 1)
96
#define LSP_FLAG_CHANGED          (1 << 2)
97
#define LSP_FLAG_FPM              (1 << 3)
98
99
  /* Address-family of NHLFE - saved here for delete. All NHLFEs */
100
  /* have to be of the same AF */
101
  uint8_t addr_family;
102
};
103
104
/*
105
 * FEC to label binding.
106
 */
107
struct zebra_fec {
108
  /* FEC (prefix) */
109
  struct route_node *rn;
110
111
  /* In-label - either statically bound or derived from label block. */
112
  mpls_label_t label;
113
114
  /* Label index (into global label block), if valid */
115
  uint32_t label_index;
116
117
  /* Flags. */
118
  uint32_t flags;
119
1.55k
#define FEC_FLAG_CONFIGURED       (1 << 0)
120
121
  /* Clients interested in this FEC. */
122
  struct list *client_list;
123
};
124
125
/* Declare typesafe list apis/macros */
126
0
DECLARE_DLIST(nhlfe_list, struct zebra_nhlfe, list);
Unexecuted instantiation: zebra_dplane.c:nhlfe_list_next_safe
Unexecuted instantiation: zebra_dplane.c:nhlfe_list_del
Unexecuted instantiation: zebra_mpls.c:nhlfe_list_del
Unexecuted instantiation: zebra_mpls.c:nhlfe_list_next_safe
Unexecuted instantiation: zebra_nhg.c:nhlfe_list_next_safe
Unexecuted instantiation: zebra_srte.c:nhlfe_list_next_safe
127
128
/* Function declarations. */
129
130
/*
131
 * Add/update global label block.
132
 */
133
int zebra_mpls_label_block_add(struct zebra_vrf *zvrf, uint32_t start_label,
134
             uint32_t end_label);
135
136
/*
137
 * Delete global label block.
138
 */
139
int zebra_mpls_label_block_del(struct zebra_vrf *vrf);
140
141
/*
142
 * Display MPLS global label block configuration (VTY command handler).
143
 */
144
int zebra_mpls_write_label_block_config(struct vty *vty, struct zebra_vrf *vrf);
145
146
/*
147
 * Install dynamic LSP entry.
148
 */
149
int zebra_mpls_lsp_install(struct zebra_vrf *zvrf, struct route_node *rn,
150
         struct route_entry *re);
151
152
/*
153
 * Uninstall dynamic LSP entry, if any.
154
 */
155
int zebra_mpls_lsp_uninstall(struct zebra_vrf *zvrf, struct route_node *rn,
156
           struct route_entry *re);
157
158
/* Add an NHLFE to an LSP, return the newly-added object */
159
struct zebra_nhlfe *
160
zebra_mpls_lsp_add_nhlfe(struct zebra_lsp *lsp, enum lsp_types_t lsp_type,
161
       enum nexthop_types_t gtype, const union g_addr *gate,
162
       ifindex_t ifindex, uint8_t num_labels,
163
       const mpls_label_t *out_labels);
164
165
/* Add or update a backup NHLFE for an LSP; return the object */
166
struct zebra_nhlfe *zebra_mpls_lsp_add_backup_nhlfe(
167
  struct zebra_lsp *lsp, enum lsp_types_t lsp_type,
168
  enum nexthop_types_t gtype, const union g_addr *gate, ifindex_t ifindex,
169
  uint8_t num_labels, const mpls_label_t *out_labels);
170
171
/*
172
 * Add NHLFE or backup NHLFE to an LSP based on a nexthop. These just maintain
173
 * the LSP and NHLFE objects; nothing is scheduled for processing.
174
 * Return: the newly-added object
175
 */
176
struct zebra_nhlfe *zebra_mpls_lsp_add_nh(struct zebra_lsp *lsp,
177
            enum lsp_types_t lsp_type,
178
            const struct nexthop *nh);
179
struct zebra_nhlfe *zebra_mpls_lsp_add_backup_nh(struct zebra_lsp *lsp,
180
             enum lsp_types_t lsp_type,
181
             const struct nexthop *nh);
182
183
/* Free an allocated NHLFE */
184
void zebra_mpls_nhlfe_free(struct zebra_nhlfe *nhlfe);
185
186
int zebra_mpls_fec_register(struct zebra_vrf *zvrf, struct prefix *p,
187
          uint32_t label, uint32_t label_index,
188
          struct zserv *client);
189
190
/*
191
 * Deregistration from a client for the label binding for a FEC. The FEC
192
 * itself is deleted if no other registered clients exist and there is no
193
 * label bound to the FEC.
194
 */
195
int zebra_mpls_fec_unregister(struct zebra_vrf *zvrf, struct prefix *p,
196
            struct zserv *client);
197
198
/*
199
 * Return FEC (if any) to which this label is bound.
200
 * Note: Only works for per-prefix binding and when the label is not
201
 * implicit-null.
202
 * TODO: Currently walks entire table, can optimize later with another
203
 * hash..
204
 */
205
struct zebra_fec *zebra_mpls_fec_for_label(struct zebra_vrf *zvrf,
206
             mpls_label_t label);
207
208
/*
209
 * Inform if specified label is currently bound to a FEC or not.
210
 */
211
int zebra_mpls_label_already_bound(struct zebra_vrf *zvrf, mpls_label_t label);
212
213
/*
214
 * Add static FEC to label binding. If there are clients registered for this
215
 * FEC, notify them. If there are labeled routes for this FEC, install the
216
 * label forwarding entry.
217
 */
218
int zebra_mpls_static_fec_add(struct zebra_vrf *zvrf, struct prefix *p,
219
            mpls_label_t in_label);
220
221
/*
222
 * Remove static FEC to label binding. If there are no clients registered
223
 * for this FEC, delete the FEC; else notify clients.
224
 * Note: Upon delete of static binding, if label index exists for this FEC,
225
 * client may need to be updated with derived label.
226
 */
227
int zebra_mpls_static_fec_del(struct zebra_vrf *zvrf, struct prefix *p);
228
229
/*
230
 * Display MPLS FEC to label binding configuration (VTY command handler).
231
 */
232
int zebra_mpls_write_fec_config(struct vty *vty, struct zebra_vrf *zvrf);
233
234
/*
235
 * Display MPLS FEC to label binding (VTY command handler).
236
 */
237
void zebra_mpls_print_fec_table(struct vty *vty, struct zebra_vrf *zvrf);
238
239
/*
240
 * Display MPLS FEC to label binding for a specific FEC (VTY command handler).
241
 */
242
void zebra_mpls_print_fec(struct vty *vty, struct zebra_vrf *zvrf,
243
        struct prefix *p);
244
245
/*
246
 * Handle zapi request to install/uninstall LSP and
247
 * (optionally) FEC-To-NHLFE (FTN) bindings.
248
 *
249
 * mpls_zapi_labels_process -> Installs for future processing
250
 *                             in the meta-q
251
 * zebra_mpls_labels_process -> called by the meta-q
252
 */
253
void mpls_zapi_labels_process(bool add_p, struct zebra_vrf *zvrf,
254
            const struct zapi_labels *zl);
255
void zebra_mpls_zapi_labels_process(bool add_p, struct zebra_vrf *zvrf,
256
            const struct zapi_labels *zl);
257
258
/*
259
 * Uninstall all NHLFEs bound to a single FEC.
260
 *
261
 * mpls_ftn_uninstall -> Called to enqueue into early label processing
262
 *                       via the metaq
263
 * zebra_mpls_ftn_uninstall -> Called when we process the meta q
264
 *                             for this item
265
 */
266
void mpls_ftn_uninstall(struct zebra_vrf *zvrf, enum lsp_types_t type,
267
      struct prefix *prefix, uint8_t route_type,
268
      uint8_t route_instance);
269
void zebra_mpls_ftn_uninstall(struct zebra_vrf *zvrf, enum lsp_types_t type,
270
            struct prefix *prefix, uint8_t route_type,
271
            uint8_t route_instance);
272
/*
273
 * Install/update a NHLFE for an LSP in the forwarding table. This may be
274
 * a new LSP entry or a new NHLFE for an existing in-label or an update of
275
 * the out-label(s) for an existing NHLFE (update case).
276
 */
277
int mpls_lsp_install(struct zebra_vrf *zvrf, enum lsp_types_t type,
278
         mpls_label_t in_label, uint8_t num_out_labels,
279
         const mpls_label_t *out_labels, enum nexthop_types_t gtype,
280
         const union g_addr *gate, ifindex_t ifindex);
281
282
/*
283
 * Lookup LSP by its input label.
284
 */
285
struct zebra_lsp *mpls_lsp_find(struct zebra_vrf *zvrf, mpls_label_t in_label);
286
287
/*
288
 * Uninstall a particular NHLFE in the forwarding table. If this is
289
 * the only NHLFE, the entire LSP forwarding entry has to be deleted.
290
 */
291
int mpls_lsp_uninstall(struct zebra_vrf *zvrf, enum lsp_types_t type,
292
           mpls_label_t in_label, enum nexthop_types_t gtype,
293
           const union g_addr *gate, ifindex_t ifindex,
294
           bool backup_p);
295
296
/*
297
 * Uninstall all NHLFEs for a particular LSP forwarding entry.
298
 */
299
int mpls_lsp_uninstall_all_vrf(struct zebra_vrf *zvrf, enum lsp_types_t type,
300
             mpls_label_t in_label);
301
302
#if defined(HAVE_CUMULUS)
303
/*
304
 * Check that the label values used in LSP creation are consistent. The
305
 * main criteria is that if there is ECMP, the label operation must still
306
 * be consistent - i.e., all paths either do a swap or do PHP. This is due
307
 * to current HW restrictions.
308
 */
309
int zebra_mpls_lsp_label_consistent(struct zebra_vrf *zvrf,
310
            mpls_label_t in_label,
311
            mpls_label_t out_label,
312
            enum nexthop_types_t gtype,
313
            union g_addr *gate, ifindex_t ifindex);
314
#endif /* HAVE_CUMULUS */
315
316
/*
317
 * Add static LSP entry. This may be the first entry for this incoming label
318
 * or an additional nexthop; an existing entry may also have outgoing label
319
 * changed.
320
 * Note: The label operation (swap or PHP) is common for the LSP entry (all
321
 * NHLFEs).
322
 */
323
int zebra_mpls_static_lsp_add(struct zebra_vrf *zvrf, mpls_label_t in_label,
324
            mpls_label_t out_label,
325
            enum nexthop_types_t gtype, union g_addr *gate,
326
            ifindex_t ifindex);
327
328
/*
329
 * Delete static LSP entry. This may be the delete of one particular
330
 * NHLFE for this incoming label or the delete of the entire entry (i.e.,
331
 * all NHLFEs).
332
 * NOTE: Delete of the only NHLFE will also end up deleting the entire
333
 * LSP configuration.
334
 */
335
int zebra_mpls_static_lsp_del(struct zebra_vrf *zvrf, mpls_label_t in_label,
336
            enum nexthop_types_t gtype, union g_addr *gate,
337
            ifindex_t ifindex);
338
339
/*
340
 * Process LSP update results from zebra dataplane.
341
 */
342
/* Forward ref of dplane update context type */
343
struct zebra_dplane_ctx;
344
345
void zebra_mpls_lsp_dplane_result(struct zebra_dplane_ctx *ctx);
346
347
/* Process async dplane notifications. */
348
void zebra_mpls_process_dplane_notify(struct zebra_dplane_ctx *ctx);
349
350
/*
351
 * Schedule all MPLS label forwarding entries for processing.
352
 * Called upon changes that may affect one or more of them such as
353
 * interface or nexthop state changes.
354
 */
355
void zebra_mpls_lsp_schedule(struct zebra_vrf *zvrf);
356
357
/*
358
 * Display MPLS label forwarding table for a specific LSP
359
 * (VTY command handler).
360
 */
361
void zebra_mpls_print_lsp(struct vty *vty, struct zebra_vrf *zvrf,
362
        mpls_label_t label, bool use_json);
363
364
/*
365
 * Display MPLS label forwarding table (VTY command handler).
366
 */
367
void zebra_mpls_print_lsp_table(struct vty *vty, struct zebra_vrf *zvrf,
368
        bool use_json);
369
370
/*
371
 * Display MPLS LSP configuration of all static LSPs (VTY command handler).
372
 */
373
int zebra_mpls_write_lsp_config(struct vty *vty, struct zebra_vrf *zvrf);
374
375
/*
376
 * Called when VRF becomes inactive, cleans up information but keeps
377
 * the table itself.
378
 * NOTE: Currently supported only for default VRF.
379
 */
380
void zebra_mpls_cleanup_tables(struct zebra_vrf *zvrf);
381
382
/*
383
 * Called upon process exiting, need to delete LSP forwarding
384
 * entries from the kernel.
385
 * NOTE: Currently supported only for default VRF.
386
 */
387
void zebra_mpls_close_tables(struct zebra_vrf *zvrf);
388
389
/*
390
 * Allocate MPLS tables for this VRF.
391
 * NOTE: Currently supported only for default VRF.
392
 */
393
void zebra_mpls_init_tables(struct zebra_vrf *zvrf);
394
395
/*
396
 * If mpls is turned on *after* FRR is brought
397
 * up let's actually notice this and turn on
398
 * the relevant bits to make it work.
399
 */
400
void zebra_mpls_turned_on(void);
401
402
/*
403
 * Global MPLS initialization.
404
 */
405
void zebra_mpls_init(void);
406
407
/*
408
 * MPLS VTY.
409
 */
410
void zebra_mpls_vty_init(void);
411
412
/*
413
 * When cleaning up a client connection ensure that there are no
414
 * vrf labels that need cleaning up too
415
 */
416
void zebra_mpls_client_cleanup_vrf_label(uint8_t proto);
417
418
/* Inline functions. */
419
420
/*
421
 * Distance (priority) definition for LSP NHLFE.
422
 */
423
static inline uint8_t lsp_distance(enum lsp_types_t type)
424
0
{
425
0
  switch (type) {
426
0
  case ZEBRA_LSP_STATIC:
427
0
    return (route_distance(ZEBRA_ROUTE_STATIC));
428
0
  case ZEBRA_LSP_LDP:
429
0
    return (route_distance(ZEBRA_ROUTE_LDP));
430
0
  case ZEBRA_LSP_BGP:
431
0
    return (route_distance(ZEBRA_ROUTE_BGP));
432
0
  case ZEBRA_LSP_NONE:
433
0
  case ZEBRA_LSP_SHARP:
434
0
  case ZEBRA_LSP_EVPN:
435
0
  case ZEBRA_LSP_OSPF_SR:
436
0
  case ZEBRA_LSP_ISIS_SR:
437
0
  case ZEBRA_LSP_SRTE:
438
0
    return 150;
439
0
  }
440
441
  /*
442
   * For some reason certain compilers do not believe
443
   * that all the cases have been handled.  And
444
   * WTF does this work differently than when I removed
445
   * the default case????
446
   */
447
0
  return 150;
448
0
}
Unexecuted instantiation: connected.c:lsp_distance
Unexecuted instantiation: if_netlink.c:lsp_distance
Unexecuted instantiation: interface.c:lsp_distance
Unexecuted instantiation: ioctl.c:lsp_distance
Unexecuted instantiation: kernel_netlink.c:lsp_distance
Unexecuted instantiation: label_manager.c:lsp_distance
Unexecuted instantiation: main.c:lsp_distance
Unexecuted instantiation: netconf_netlink.c:lsp_distance
Unexecuted instantiation: redistribute.c:lsp_distance
Unexecuted instantiation: router-id.c:lsp_distance
Unexecuted instantiation: rt_netlink.c:lsp_distance
Unexecuted instantiation: rtadv.c:lsp_distance
Unexecuted instantiation: rtread_netlink.c:lsp_distance
Unexecuted instantiation: rule_netlink.c:lsp_distance
Unexecuted instantiation: tc_netlink.c:lsp_distance
Unexecuted instantiation: zapi_msg.c:lsp_distance
Unexecuted instantiation: zebra_dplane.c:lsp_distance
Unexecuted instantiation: zebra_gr.c:lsp_distance
Unexecuted instantiation: zebra_l2.c:lsp_distance
Unexecuted instantiation: zebra_l2_bridge_if.c:lsp_distance
Unexecuted instantiation: zebra_evpn.c:lsp_distance
Unexecuted instantiation: zebra_evpn_mac.c:lsp_distance
Unexecuted instantiation: zebra_evpn_neigh.c:lsp_distance
Unexecuted instantiation: zebra_mlag.c:lsp_distance
Unexecuted instantiation: zebra_mlag_vty.c:lsp_distance
Unexecuted instantiation: zebra_mpls.c:lsp_distance
Unexecuted instantiation: zebra_mpls_netlink.c:lsp_distance
Unexecuted instantiation: zebra_mpls_null.c:lsp_distance
Unexecuted instantiation: zebra_mpls_vty.c:lsp_distance
Unexecuted instantiation: zebra_srv6.c:lsp_distance
Unexecuted instantiation: zebra_srv6_vty.c:lsp_distance
Unexecuted instantiation: zebra_mroute.c:lsp_distance
Unexecuted instantiation: zebra_nb.c:lsp_distance
Unexecuted instantiation: zebra_nb_config.c:lsp_distance
Unexecuted instantiation: zebra_nb_rpcs.c:lsp_distance
Unexecuted instantiation: zebra_nb_state.c:lsp_distance
Unexecuted instantiation: zebra_netns_id.c:lsp_distance
Unexecuted instantiation: zebra_netns_notify.c:lsp_distance
Unexecuted instantiation: zebra_nhg.c:lsp_distance
Unexecuted instantiation: zebra_ns.c:lsp_distance
Unexecuted instantiation: zebra_pbr.c:lsp_distance
Unexecuted instantiation: zebra_ptm.c:lsp_distance
Unexecuted instantiation: zebra_ptm_redistribute.c:lsp_distance
Unexecuted instantiation: zebra_pw.c:lsp_distance
Unexecuted instantiation: zebra_rib.c:lsp_distance
Unexecuted instantiation: zebra_router.c:lsp_distance
Unexecuted instantiation: zebra_rnh.c:lsp_distance
Unexecuted instantiation: zebra_script.c:lsp_distance
Unexecuted instantiation: zebra_srte.c:lsp_distance
Unexecuted instantiation: zebra_tc.c:lsp_distance
Unexecuted instantiation: zebra_vrf.c:lsp_distance
Unexecuted instantiation: zebra_vty.c:lsp_distance
Unexecuted instantiation: zebra_vxlan.c:lsp_distance
Unexecuted instantiation: zebra_vxlan_if.c:lsp_distance
Unexecuted instantiation: zebra_evpn_mh.c:lsp_distance
Unexecuted instantiation: zebra_neigh.c:lsp_distance
Unexecuted instantiation: zserv.c:lsp_distance
Unexecuted instantiation: debug_nl.c:lsp_distance
449
450
/*
451
 * Map RIB type to LSP type. Used when labeled-routes from BGP
452
 * are converted into LSPs.
453
 */
454
static inline enum lsp_types_t lsp_type_from_re_type(int re_type)
455
0
{
456
0
  switch (re_type) {
457
0
  case ZEBRA_ROUTE_STATIC:
458
0
    return ZEBRA_LSP_STATIC;
459
0
  case ZEBRA_ROUTE_LDP:
460
0
    return ZEBRA_LSP_LDP;
461
0
  case ZEBRA_ROUTE_BGP:
462
0
    return ZEBRA_LSP_BGP;
463
0
  case ZEBRA_ROUTE_OSPF:
464
0
    return ZEBRA_LSP_OSPF_SR;
465
0
  case ZEBRA_ROUTE_ISIS:
466
0
    return ZEBRA_LSP_ISIS_SR;
467
0
  case ZEBRA_ROUTE_SHARP:
468
0
    return ZEBRA_LSP_SHARP;
469
0
  case ZEBRA_ROUTE_SRTE:
470
0
    return ZEBRA_LSP_SRTE;
471
0
  default:
472
0
    return ZEBRA_LSP_NONE;
473
0
  }
474
0
}
Unexecuted instantiation: connected.c:lsp_type_from_re_type
Unexecuted instantiation: if_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: interface.c:lsp_type_from_re_type
Unexecuted instantiation: ioctl.c:lsp_type_from_re_type
Unexecuted instantiation: kernel_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: label_manager.c:lsp_type_from_re_type
Unexecuted instantiation: main.c:lsp_type_from_re_type
Unexecuted instantiation: netconf_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: redistribute.c:lsp_type_from_re_type
Unexecuted instantiation: router-id.c:lsp_type_from_re_type
Unexecuted instantiation: rt_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: rtadv.c:lsp_type_from_re_type
Unexecuted instantiation: rtread_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: rule_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: tc_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: zapi_msg.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_dplane.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_gr.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_l2.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_l2_bridge_if.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_evpn.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_evpn_mac.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_evpn_neigh.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mlag.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mlag_vty.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mpls.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mpls_netlink.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mpls_null.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mpls_vty.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_srv6.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_srv6_vty.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_mroute.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_nb.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_nb_config.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_nb_rpcs.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_nb_state.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_netns_id.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_netns_notify.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_nhg.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_ns.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_pbr.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_ptm.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_ptm_redistribute.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_pw.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_rib.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_router.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_rnh.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_script.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_srte.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_tc.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_vrf.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_vty.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_vxlan.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_vxlan_if.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_evpn_mh.c:lsp_type_from_re_type
Unexecuted instantiation: zebra_neigh.c:lsp_type_from_re_type
Unexecuted instantiation: zserv.c:lsp_type_from_re_type
Unexecuted instantiation: debug_nl.c:lsp_type_from_re_type
475
476
/*
477
 * Map LSP type to RIB type.
478
 */
479
static inline int re_type_from_lsp_type(enum lsp_types_t lsp_type)
480
0
{
481
0
  switch (lsp_type) {
482
0
  case ZEBRA_LSP_STATIC:
483
0
    return ZEBRA_ROUTE_STATIC;
484
0
  case ZEBRA_LSP_LDP:
485
0
    return ZEBRA_ROUTE_LDP;
486
0
  case ZEBRA_LSP_BGP:
487
0
  case ZEBRA_LSP_EVPN:
488
0
    return ZEBRA_ROUTE_BGP;
489
0
  case ZEBRA_LSP_OSPF_SR:
490
0
    return ZEBRA_ROUTE_OSPF;
491
0
  case ZEBRA_LSP_ISIS_SR:
492
0
    return ZEBRA_ROUTE_ISIS;
493
0
  case ZEBRA_LSP_NONE:
494
0
    return ZEBRA_ROUTE_KERNEL;
495
0
  case ZEBRA_LSP_SHARP:
496
0
    return ZEBRA_ROUTE_SHARP;
497
0
  case ZEBRA_LSP_SRTE:
498
0
    return ZEBRA_ROUTE_SRTE;
499
0
  }
500
501
  /*
502
   * For some reason certain compilers do not believe
503
   * that all the cases have been handled.  And
504
   * WTF does this work differently than when I removed
505
   * the default case????
506
   */
507
0
  return ZEBRA_ROUTE_KERNEL;
508
0
}
Unexecuted instantiation: connected.c:re_type_from_lsp_type
Unexecuted instantiation: if_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: interface.c:re_type_from_lsp_type
Unexecuted instantiation: ioctl.c:re_type_from_lsp_type
Unexecuted instantiation: kernel_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: label_manager.c:re_type_from_lsp_type
Unexecuted instantiation: main.c:re_type_from_lsp_type
Unexecuted instantiation: netconf_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: redistribute.c:re_type_from_lsp_type
Unexecuted instantiation: router-id.c:re_type_from_lsp_type
Unexecuted instantiation: rt_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: rtadv.c:re_type_from_lsp_type
Unexecuted instantiation: rtread_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: rule_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: tc_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: zapi_msg.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_dplane.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_gr.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_l2.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_l2_bridge_if.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_evpn.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_evpn_mac.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_evpn_neigh.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mlag.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mlag_vty.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mpls.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mpls_netlink.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mpls_null.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mpls_vty.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_srv6.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_srv6_vty.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_mroute.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_nb.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_nb_config.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_nb_rpcs.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_nb_state.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_netns_id.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_netns_notify.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_nhg.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_ns.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_pbr.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_ptm.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_ptm_redistribute.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_pw.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_rib.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_router.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_rnh.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_script.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_srte.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_tc.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_vrf.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_vty.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_vxlan.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_vxlan_if.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_evpn_mh.c:re_type_from_lsp_type
Unexecuted instantiation: zebra_neigh.c:re_type_from_lsp_type
Unexecuted instantiation: zserv.c:re_type_from_lsp_type
Unexecuted instantiation: debug_nl.c:re_type_from_lsp_type
509
510
/* NHLFE type as printable string. */
511
static inline const char *nhlfe_type2str(enum lsp_types_t lsp_type)
512
0
{
513
0
  switch (lsp_type) {
514
0
  case ZEBRA_LSP_STATIC:
515
0
    return "Static";
516
0
  case ZEBRA_LSP_LDP:
517
0
    return "LDP";
518
0
  case ZEBRA_LSP_BGP:
519
0
    return "BGP";
520
0
  case ZEBRA_LSP_OSPF_SR:
521
0
    return "SR (OSPF)";
522
0
  case ZEBRA_LSP_ISIS_SR:
523
0
    return "SR (IS-IS)";
524
0
  case ZEBRA_LSP_SHARP:
525
0
    return "SHARP";
526
0
  case ZEBRA_LSP_SRTE:
527
0
    return "SR-TE";
528
0
  case ZEBRA_LSP_EVPN:
529
0
    return "EVPN";
530
0
  case ZEBRA_LSP_NONE:
531
0
    return "Unknown";
532
0
  }
533
534
  /*
535
   * For some reason certain compilers do not believe
536
   * that all the cases have been handled.  And
537
   * WTF does this work differently than when I removed
538
   * the default case????
539
   */
540
0
  return "Unknown";
541
0
}
Unexecuted instantiation: connected.c:nhlfe_type2str
Unexecuted instantiation: if_netlink.c:nhlfe_type2str
Unexecuted instantiation: interface.c:nhlfe_type2str
Unexecuted instantiation: ioctl.c:nhlfe_type2str
Unexecuted instantiation: kernel_netlink.c:nhlfe_type2str
Unexecuted instantiation: label_manager.c:nhlfe_type2str
Unexecuted instantiation: main.c:nhlfe_type2str
Unexecuted instantiation: netconf_netlink.c:nhlfe_type2str
Unexecuted instantiation: redistribute.c:nhlfe_type2str
Unexecuted instantiation: router-id.c:nhlfe_type2str
Unexecuted instantiation: rt_netlink.c:nhlfe_type2str
Unexecuted instantiation: rtadv.c:nhlfe_type2str
Unexecuted instantiation: rtread_netlink.c:nhlfe_type2str
Unexecuted instantiation: rule_netlink.c:nhlfe_type2str
Unexecuted instantiation: tc_netlink.c:nhlfe_type2str
Unexecuted instantiation: zapi_msg.c:nhlfe_type2str
Unexecuted instantiation: zebra_dplane.c:nhlfe_type2str
Unexecuted instantiation: zebra_gr.c:nhlfe_type2str
Unexecuted instantiation: zebra_l2.c:nhlfe_type2str
Unexecuted instantiation: zebra_l2_bridge_if.c:nhlfe_type2str
Unexecuted instantiation: zebra_evpn.c:nhlfe_type2str
Unexecuted instantiation: zebra_evpn_mac.c:nhlfe_type2str
Unexecuted instantiation: zebra_evpn_neigh.c:nhlfe_type2str
Unexecuted instantiation: zebra_mlag.c:nhlfe_type2str
Unexecuted instantiation: zebra_mlag_vty.c:nhlfe_type2str
Unexecuted instantiation: zebra_mpls.c:nhlfe_type2str
Unexecuted instantiation: zebra_mpls_netlink.c:nhlfe_type2str
Unexecuted instantiation: zebra_mpls_null.c:nhlfe_type2str
Unexecuted instantiation: zebra_mpls_vty.c:nhlfe_type2str
Unexecuted instantiation: zebra_srv6.c:nhlfe_type2str
Unexecuted instantiation: zebra_srv6_vty.c:nhlfe_type2str
Unexecuted instantiation: zebra_mroute.c:nhlfe_type2str
Unexecuted instantiation: zebra_nb.c:nhlfe_type2str
Unexecuted instantiation: zebra_nb_config.c:nhlfe_type2str
Unexecuted instantiation: zebra_nb_rpcs.c:nhlfe_type2str
Unexecuted instantiation: zebra_nb_state.c:nhlfe_type2str
Unexecuted instantiation: zebra_netns_id.c:nhlfe_type2str
Unexecuted instantiation: zebra_netns_notify.c:nhlfe_type2str
Unexecuted instantiation: zebra_nhg.c:nhlfe_type2str
Unexecuted instantiation: zebra_ns.c:nhlfe_type2str
Unexecuted instantiation: zebra_pbr.c:nhlfe_type2str
Unexecuted instantiation: zebra_ptm.c:nhlfe_type2str
Unexecuted instantiation: zebra_ptm_redistribute.c:nhlfe_type2str
Unexecuted instantiation: zebra_pw.c:nhlfe_type2str
Unexecuted instantiation: zebra_rib.c:nhlfe_type2str
Unexecuted instantiation: zebra_router.c:nhlfe_type2str
Unexecuted instantiation: zebra_rnh.c:nhlfe_type2str
Unexecuted instantiation: zebra_script.c:nhlfe_type2str
Unexecuted instantiation: zebra_srte.c:nhlfe_type2str
Unexecuted instantiation: zebra_tc.c:nhlfe_type2str
Unexecuted instantiation: zebra_vrf.c:nhlfe_type2str
Unexecuted instantiation: zebra_vty.c:nhlfe_type2str
Unexecuted instantiation: zebra_vxlan.c:nhlfe_type2str
Unexecuted instantiation: zebra_vxlan_if.c:nhlfe_type2str
Unexecuted instantiation: zebra_evpn_mh.c:nhlfe_type2str
Unexecuted instantiation: zebra_neigh.c:nhlfe_type2str
Unexecuted instantiation: zserv.c:nhlfe_type2str
Unexecuted instantiation: debug_nl.c:nhlfe_type2str
542
543
static inline void mpls_mark_lsps_for_processing(struct zebra_vrf *zvrf,
544
             struct prefix *p)
545
0
{
546
0
  struct route_table *table;
547
0
  struct route_node *rn;
548
0
  rib_dest_t *dest;
549
550
0
  if (!zvrf)
551
0
    return;
552
553
0
  table = zvrf->table[family2afi(p->family)][SAFI_UNICAST];
554
0
  if (!table)
555
0
    return;
556
557
0
  rn = route_node_match(table, p);
558
0
  if (!rn)
559
0
    return;
560
561
562
0
  dest = rib_dest_from_rnode(rn);
563
0
  SET_FLAG(dest->flags, RIB_DEST_UPDATE_LSPS);
564
0
}
Unexecuted instantiation: connected.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: if_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: interface.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: ioctl.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: kernel_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: label_manager.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: main.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: netconf_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: redistribute.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: router-id.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: rt_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: rtadv.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: rtread_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: rule_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: tc_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zapi_msg.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_dplane.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_gr.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_l2.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_l2_bridge_if.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_evpn.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_evpn_mac.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_evpn_neigh.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mlag.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mlag_vty.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mpls.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mpls_netlink.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mpls_null.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mpls_vty.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_srv6.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_srv6_vty.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_mroute.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_nb.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_nb_config.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_nb_rpcs.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_nb_state.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_netns_id.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_netns_notify.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_nhg.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_ns.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_pbr.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_ptm.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_ptm_redistribute.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_pw.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_rib.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_router.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_rnh.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_script.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_srte.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_tc.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_vrf.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_vty.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_vxlan.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_vxlan_if.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_evpn_mh.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zebra_neigh.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: zserv.c:mpls_mark_lsps_for_processing
Unexecuted instantiation: debug_nl.c:mpls_mark_lsps_for_processing
565
566
static inline void mpls_unmark_lsps_for_processing(struct route_node *rn)
567
0
{
568
0
  rib_dest_t *dest = rib_dest_from_rnode(rn);
569
0
570
0
  UNSET_FLAG(dest->flags, RIB_DEST_UPDATE_LSPS);
571
0
}
Unexecuted instantiation: connected.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: if_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: interface.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: ioctl.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: kernel_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: label_manager.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: main.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: netconf_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: redistribute.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: router-id.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: rt_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: rtadv.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: rtread_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: rule_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: tc_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zapi_msg.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_dplane.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_gr.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_l2.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_l2_bridge_if.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_evpn.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_evpn_mac.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_evpn_neigh.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mlag.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mlag_vty.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mpls.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mpls_netlink.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mpls_null.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mpls_vty.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_srv6.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_srv6_vty.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_mroute.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_nb.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_nb_config.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_nb_rpcs.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_nb_state.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_netns_id.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_netns_notify.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_nhg.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_ns.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_pbr.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_ptm.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_ptm_redistribute.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_pw.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_rib.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_router.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_rnh.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_script.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_srte.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_tc.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_vrf.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_vty.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_vxlan.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_vxlan_if.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_evpn_mh.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zebra_neigh.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: zserv.c:mpls_unmark_lsps_for_processing
Unexecuted instantiation: debug_nl.c:mpls_unmark_lsps_for_processing
572
573
static inline int mpls_should_lsps_be_processed(struct route_node *rn)
574
0
{
575
0
  rib_dest_t *dest = rib_dest_from_rnode(rn);
576
0
577
0
  return !!CHECK_FLAG(dest->flags, RIB_DEST_UPDATE_LSPS);
578
0
}
Unexecuted instantiation: connected.c:mpls_should_lsps_be_processed
Unexecuted instantiation: if_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: interface.c:mpls_should_lsps_be_processed
Unexecuted instantiation: ioctl.c:mpls_should_lsps_be_processed
Unexecuted instantiation: kernel_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: label_manager.c:mpls_should_lsps_be_processed
Unexecuted instantiation: main.c:mpls_should_lsps_be_processed
Unexecuted instantiation: netconf_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: redistribute.c:mpls_should_lsps_be_processed
Unexecuted instantiation: router-id.c:mpls_should_lsps_be_processed
Unexecuted instantiation: rt_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: rtadv.c:mpls_should_lsps_be_processed
Unexecuted instantiation: rtread_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: rule_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: tc_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zapi_msg.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_dplane.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_gr.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_l2.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_l2_bridge_if.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_evpn.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_evpn_mac.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_evpn_neigh.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mlag.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mlag_vty.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mpls.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mpls_netlink.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mpls_null.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mpls_vty.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_srv6.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_srv6_vty.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_mroute.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_nb.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_nb_config.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_nb_rpcs.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_nb_state.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_netns_id.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_netns_notify.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_nhg.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_ns.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_pbr.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_ptm.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_ptm_redistribute.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_pw.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_rib.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_router.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_rnh.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_script.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_srte.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_tc.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_vrf.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_vty.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_vxlan.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_vxlan_if.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_evpn_mh.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zebra_neigh.c:mpls_should_lsps_be_processed
Unexecuted instantiation: zserv.c:mpls_should_lsps_be_processed
Unexecuted instantiation: debug_nl.c:mpls_should_lsps_be_processed
579
580
/* Global variables. */
581
extern bool mpls_enabled;
582
extern bool mpls_pw_reach_strict; /* Strict pseudowire reachability checking */
583
584
#ifdef __cplusplus
585
}
586
#endif
587
588
#endif /*_ZEBRA_MPLS_H */