blob: 8ac068350c4158126ae97ac51585bdc31a24dabb [file] [log] [blame]
Neale Ranns0f26c5a2017-03-01 15:12:11 -08001/*
2 * Copyright (c) 2016 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef __FIB_TEST_H__
17#define __FIB_TEST_H__
18
19#include <vnet/fib/fib_types.h>
Neale Rannsd792d9c2017-10-21 10:53:20 -070020#include <vnet/mpls/mpls_types.h>
21#include <vnet/fib/fib_types.h>
22#include <vnet/mpls/packet.h>
23#include <vnet/dpo/load_balance.h>
24#include <vnet/adj/adj_types.h>
25#include <vnet/dpo/replicate_dpo.h>
Neale Ranns0f26c5a2017-03-01 15:12:11 -080026
27typedef enum fib_test_lb_bucket_type_t_ {
28 FT_LB_LABEL_O_ADJ,
29 FT_LB_LABEL_STACK_O_ADJ,
30 FT_LB_LABEL_O_LB,
31 FT_LB_O_LB,
Neale Ranns31ed7442018-02-23 05:29:09 -080032 FT_LB_MPLS_DISP_PIPE_O_ADJ,
Neale Ranns0f26c5a2017-03-01 15:12:11 -080033 FT_LB_INTF,
Neale Ranns6f631152017-10-03 08:20:21 -070034 FT_LB_L2,
Neale Rannsd792d9c2017-10-21 10:53:20 -070035 FT_LB_BIER_TABLE,
36 FT_LB_BIER_FMASK,
37 FT_LB_DROP,
38 FT_LB_ADJ,
Neale Ranns0f26c5a2017-03-01 15:12:11 -080039} fib_test_lb_bucket_type_t;
40
41typedef struct fib_test_lb_bucket_t_ {
42 fib_test_lb_bucket_type_t type;
43
44 union
45 {
46 struct
47 {
48 mpls_eos_bit_t eos;
49 mpls_label_t label;
Neale Ranns31ed7442018-02-23 05:29:09 -080050 fib_mpls_lsp_mode_t mode;
Neale Ranns0f26c5a2017-03-01 15:12:11 -080051 u8 ttl;
52 adj_index_t adj;
53 } label_o_adj;
54 struct
55 {
56 mpls_eos_bit_t eos;
57 mpls_label_t label_stack[8];
Neale Ranns31ed7442018-02-23 05:29:09 -080058 fib_mpls_lsp_mode_t mode;
Neale Ranns0f26c5a2017-03-01 15:12:11 -080059 u8 label_stack_size;
60 u8 ttl;
61 adj_index_t adj;
62 } label_stack_o_adj;
63 struct
64 {
65 mpls_eos_bit_t eos;
66 mpls_label_t label;
Neale Ranns31ed7442018-02-23 05:29:09 -080067 fib_mpls_lsp_mode_t mode;
Neale Ranns0f26c5a2017-03-01 15:12:11 -080068 u8 ttl;
69 index_t lb;
70 } label_o_lb;
71 struct
72 {
73 index_t adj;
74 } adj;
75 struct
76 {
77 index_t lb;
78 } lb;
79 struct
80 {
81 index_t adj;
82 } special;
Neale Rannsd792d9c2017-10-21 10:53:20 -070083 struct
84 {
85 union {
86 index_t table;
87 index_t fmask;
88 };
89 } bier;
Neale Ranns0f26c5a2017-03-01 15:12:11 -080090 };
91} fib_test_lb_bucket_t;
92
93typedef enum fib_test_rep_bucket_type_t_ {
94 FT_REP_LABEL_O_ADJ,
Neale Ranns6f631152017-10-03 08:20:21 -070095 FT_REP_DISP_MFIB_LOOKUP,
Neale Ranns0f26c5a2017-03-01 15:12:11 -080096 FT_REP_INTF,
97} fib_test_rep_bucket_type_t;
98
99typedef struct fib_test_rep_bucket_t_ {
100 fib_test_rep_bucket_type_t type;
101
102 union
103 {
104 struct
105 {
106 mpls_eos_bit_t eos;
107 mpls_label_t label;
108 u8 ttl;
109 adj_index_t adj;
110 } label_o_adj;
111 struct
112 {
113 adj_index_t adj;
114 } adj;
115 };
116} fib_test_rep_bucket_t;
117
118
119extern int fib_test_validate_rep_v(const replicate_t *rep,
120 u16 n_buckets,
Christophe Fontained3c008d2017-10-02 18:10:54 +0200121 va_list *ap);
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800122
123extern int fib_test_validate_lb_v(const load_balance_t *lb,
Damjan Marionbb17f3c2018-02-06 19:29:35 +0100124 int n_buckets,
Christophe Fontained3c008d2017-10-02 18:10:54 +0200125 va_list *ap);
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800126
Neale Rannsd792d9c2017-10-21 10:53:20 -0700127extern int fib_test_validate_lb(const dpo_id_t *dpo,
Damjan Marionbb17f3c2018-02-06 19:29:35 +0100128 int n_buckets,
Neale Rannsd792d9c2017-10-21 10:53:20 -0700129 ...);
130
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800131extern int fib_test_validate_entry(fib_node_index_t fei,
132 fib_forward_chain_type_t fct,
Gabriel Ganned71e0fc2017-10-26 10:35:28 +0200133 int n_buckets,
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800134 ...);
135
Neale Rannsd792d9c2017-10-21 10:53:20 -0700136
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800137#endif