1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
|
/* Hey Emacs use -*- mode: C -*- */
/*
* Copyright (c) 2015 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/** \file
This file defines vpe control-plane API messages which are generally
called through a shared memory interface.
*/
/** \brief Register for interface events
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param enable_disable - 1 => register for events, 0 => cancel registration
@param pid - sender's pid
*/
define want_interface_events
{
u32 client_index;
u32 context;
u32 enable_disable;
u32 pid;
};
/** \brief Reply for interface events registration
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define want_interface_events_reply
{
u32 context;
i32 retval;
};
/** \brief Interface details structure (fix this)
@param sw_if_index - index of the interface
@param sup_sw_if_index - index of parent interface if any, else same as sw_if_index
@param l2_address_length - length of the interface's l2 address
@param pid - the interface's l2 address
@param interface_name - name of the interface
@param link_duplex - 1 if half duplex, 2 if full duplex
@param link_speed - 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G
@param link_MTU - max. transmittion unit
@param sub_if_id - A number 0-N to uniquely identify this subif on super if
@param sub_dot1ad - 0 = dot1q, 1=dot1ad
@param sub_number_of_tags - Number of tags (0 - 2)
@param sub_outer_vlan_id
@param sub_inner_vlan_id
@param sub_exact_match
@param sub_default
@param sub_outer_vlan_id_any
@param sub_inner_vlan_id_any
@param vtr_op - vlan tag rewrite operation
@param vtr_push_dot1q
@param vtr_tag1
@param vtr_tag2
*/
define sw_interface_details
{
u32 context;
u32 sw_if_index;
/* index of sup interface (e.g. hw interface).
equal to sw_if_index for super hw interface. */
u32 sup_sw_if_index;
/* Layer 2 address, if applicable */
u32 l2_address_length;
u8 l2_address[8];
/* Interface name */
u8 interface_name[64];
/* 1 = up, 0 = down */
u8 admin_up_down;
u8 link_up_down;
/* 1 = half duplex, 2 = full duplex */
u8 link_duplex;
/* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */
u8 link_speed;
/* MTU */
u16 link_mtu;
/* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */
u32 sub_id;
/* 0 = dot1q, 1=dot1ad */
u8 sub_dot1ad;
/* Number of tags 0-2 */
u8 sub_number_of_tags;
u16 sub_outer_vlan_id;
u16 sub_inner_vlan_id;
u8 sub_exact_match;
u8 sub_default;
u8 sub_outer_vlan_id_any;
u8 sub_inner_vlan_id_any;
/* vlan tag rewrite state */
u32 vtr_op;
u32 vtr_push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
u32 vtr_tag1; // first pushed tag
u32 vtr_tag2; // second pushed tag
};
/** \brief Set flags on the interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface to set flags on
@param admin_up_down - set the admin state, 1 = up, 0 = down
@param link_up_down - Oper state sent on change event, not used in config.
@param deleted - interface was deleted
*/
define sw_interface_set_flags
{
u32 client_index;
u32 context;
u32 sw_if_index;
/* 1 = up, 0 = down */
u8 admin_up_down;
u8 link_up_down;
u8 deleted;
};
/** \brief Reply to sw_interface_set_flags
@param context - sender context which was passed in the request
@param retval - return code of the set flags request
*/
define sw_interface_set_flags_reply
{
u32 context;
i32 retval;
};
/* works */
define sw_interface_dump
{
u32 client_index;
u32 context;
u8 name_filter_valid;
u8 name_filter[49];
};
/** \brief Set or delete one or all ip addresses on a specified interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface to add/del addresses
@param is_add - add address if non-zero, else delete
@param is_ipv6 - if non-zero the address is ipv6, else ipv4
@param del_all - if non-zero delete all addresses on the interface
@param address_length - address length in bytes, 4 for ip4, 16 for ip6
@param address - array of address bytes
*/
define sw_interface_add_del_address
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 is_add;
u8 is_ipv6;
u8 del_all;
u8 address_length;
u8 address[16];
};
/** \brief Reply for interface events registration
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define sw_interface_add_del_address_reply
{
u32 context;
i32 retval;
};
/** \brief Associate the specified interface with a fib table
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface
@param is_ipv6 - if non-zero ipv6, else ipv4
@param vrf_id - fib table/vrd id to associate the interface with
*/
define sw_interface_set_table
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 is_ipv6;
u32 vrf_id;
};
/** \brief Reply for interface events registration
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define sw_interface_set_table_reply
{
u32 context;
i32 retval;
};
/** \brief Enable or Disable MPLS on and interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface
@param enable - if non-zero enable, else disable
*/
define sw_interface_set_mpls_enable
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 enable;
};
/** \brief Reply for MPLS state on an interface
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define sw_interface_set_mpls_enable_reply
{
u32 context;
i32 retval;
};
/** \brief Initialize a new tap interface with the given paramters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param use_random_mac - let the system generate a unique mac address
@param tap_name - name to associate with the new interface
@param mac_address - mac addr to assign to the interface if use_radom not set
*/
define tap_connect
{
u32 client_index;
u32 context;
u8 use_random_mac;
u8 tap_name[64];
u8 mac_address[6];
u8 renumber;
u32 custom_dev_instance;
};
/** \brief Reply for tap connect request
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index allocated for the new tap interface
*/
define tap_connect_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief Modify a tap interface with the given paramters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface index of existing tap interface
@param use_random_mac - let the system generate a unique mac address
@param tap_name - name to associate with the new interface
@param mac_address - mac addr to assign to the interface if use_radom not set
*/
define tap_modify
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 use_random_mac;
u8 tap_name[64];
u8 mac_address[6];
u8 renumber;
u32 custom_dev_instance;
};
/** \brief Reply for tap modify request
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index if the modified tap interface
*/
define tap_modify_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief Delete tap interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface index of existing tap interface
*/
define tap_delete
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief Reply for tap delete request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define tap_delete_reply
{
u32 context;
i32 retval;
};
/** \brief Dump tap interfaces request */
define sw_interface_tap_dump
{
u32 client_index;
u32 context;
};
/** \brief Reply for tap dump request
@param sw_if_index - software index of tap interface
@param dev_name - Linux tap device name
*/
define sw_interface_tap_details
{
u32 context;
u32 sw_if_index;
u8 dev_name[64];
};
/** \brief Create a new subinterface with the given vlan id
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the new vlan's parent interface
@param vlan_id - vlan tag of the new interface
*/
define create_vlan_subif
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 vlan_id;
};
/** \brief Reply for the vlan subinterface create request
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index allocated for the new subinterface
*/
define create_vlan_subif_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief Add / del route request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the new vlan's parent interface
@param vrf_id - fib table /vrf associated with the route
@param lookup_in_vrf -
@param resolve_attempts -
@param classify_table_index -
@param create_vrf_if_needed -
@param resolve_if_needed -
@param is_add - 1 if adding the route, 0 if deleting
@param is_drop -
@param is_ipv6 - 0 if an ip4 route, else ip6
@param is_local -
@param is_classify -
@param is_multipath - Set to 1 if this is a multipath route, else 0
@param not_last - Is last or not last msg in group of multiple add/del msgs
@param next_hop_weight -
@param dst_address_length -
@param dst_address[16] -
@param next_hop_address[16] -
*/
define ip_add_del_route
{
u32 client_index;
u32 context;
u32 next_hop_sw_if_index;
u32 vrf_id;
u32 lookup_in_vrf;
u32 resolve_attempts;
u32 classify_table_index;
u8 create_vrf_if_needed;
u8 resolve_if_needed;
u8 is_add;
u8 is_drop;
u8 is_ipv6;
u8 is_local;
u8 is_classify;
u8 is_multipath;
u8 is_resolve_host;
u8 is_resolve_attached;
/* Is last/not-last message in group of multiple add/del messages. */
u8 not_last;
u8 next_hop_weight;
u8 dst_address_length;
u8 dst_address[16];
u8 next_hop_address[16];
};
/** \brief Reply for add / del route request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ip_add_del_route_reply
{
u32 context;
i32 retval;
};
/* works */
/** \brief Add / del gre tunnel request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the new vlan's parent interface
@param inner_vrf_id -
@param outer_vrf_id -
@param is_add - 1 if adding the tunnel, 0 if deleting
@param src_address[4] - tunnel source address
@param dst_address[4] - tunnel destination address
@param intf_address -
@param intf_address_length -
*/
define mpls_gre_add_del_tunnel
{
u32 client_index;
u32 context;
u32 inner_vrf_id;
u32 outer_vrf_id;
u8 is_add;
u8 l2_only;
u8 src_address[4];
u8 dst_address[4];
u8 intfc_address[4];
u8 intfc_address_length;
};
/** \brief Reply for add / del tunnel request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define mpls_gre_add_del_tunnel_reply
{
u32 context;
i32 retval;
u32 tunnel_sw_if_index;
};
/** \brief Add / del MPLS encapsulation request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf id
@param dst_address[4] -
@param is_add - 1 if adding the encap, 0 if deleting
@param nlabels - number of labels
@param labels - array of labels
*/
define mpls_add_del_encap
{
u32 client_index;
u32 context;
u32 vrf_id;
u8 dst_address[4];
/* 1 = add, 0 = delete */
u8 is_add;
u8 nlabels;
u32 labels[0];
};
/** \brief Reply for add / del encapsulation request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define mpls_add_del_encap_reply
{
u32 context;
i32 retval;
};
/** \brief Add / del MPLS decapsulation request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param rx_vrf_id - receive vrf
@param tx_vrf_id - transmit vrf
@param label -
@param next_index -
@param s_bit -
@param is_add - 1 if adding the encap, 0 if deleting
*/
define mpls_add_del_decap
{
u32 client_index;
u32 context;
u32 rx_vrf_id;
u32 tx_vrf_id;
u32 label;
u32 next_index;
u8 s_bit;
u8 is_add;
};
/** \brief Reply for MPLS decap add / del request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define mpls_add_del_decap_reply
{
u32 context;
i32 retval;
};
/** \brief Proxy ARP add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - VRF / Fib table ID
@param is_add - 1 if adding the Proxy ARP range, 0 if deleting
@param low_address[4] - Low address of the Proxy ARP range
@param hi_address[4] - High address of the Proxy ARP range
*/
define proxy_arp_add_del
{
u32 client_index;
u32 context;
u32 vrf_id;
u8 is_add;
u8 low_address[4];
u8 hi_address[4];
};
/** \brief Reply for proxy arp add / del request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define proxy_arp_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Proxy ARP add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - Which interface to enable / disable Proxy Arp on
@param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
*/
define proxy_arp_intfc_enable_disable
{
u32 client_index;
u32 context;
u32 sw_if_index;
/* 1 = on, 0 = off */
u8 enable_disable;
};
/** \brief Reply for Proxy ARP interface enable / disable request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define proxy_arp_intfc_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief IP neighbor add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf_id, only for IP4
@param sw_if_index - interface used to reach neighbor
@param is_add - 1 to add neighbor, 0 to delete
@param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
@param is_static -
@param mac_address - l2 address of the neighbor
@param dst_address - ip4 or ip6 address of the neighbor
*/
define ip_neighbor_add_del
{
u32 client_index;
u32 context;
u32 vrf_id; /* only makes sense for ip4 */
u32 sw_if_index;
/* 1 = add, 0 = delete */
u8 is_add;
u8 is_ipv6;
u8 is_static;
u8 mac_address[6];
u8 dst_address[16];
};
/** \brief Reply for IP Neighbor add / delete request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ip_neighbor_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Reset VRF (remove all routes etc) request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
@param vrf_id - ID of th FIB table / VRF to reset
*/
define reset_vrf
{
u32 client_index;
u32 context;
u8 is_ipv6;
u32 vrf_id;
};
/** \brief Reply for Reset VRF request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define reset_vrf_reply
{
u32 context;
i32 retval;
};
/** \brief Is Address Reachable request - DISABLED
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param next_hop_sw_if_index - index of interface used to get to next hop
@param is_ipv6 - 1 for IPv6, 0 for IPv4
@param is_error - address not found or does not match intf
@param address[] - Address in question
*/
define is_address_reachable
{
u32 client_index; /* (api_main_t *) am->my_client_index */
u32 context;
u32 next_hop_sw_if_index;
u8 is_known; /* on reply, this is the answer */
u8 is_ipv6;
u8 is_error; /* address not found or does not match intf */
u8 address[16];
};
/** \brief Want Stats, register for stats updates
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param enable_disable - 1 = enable stats, 0 = disable
@param pid - pid of process requesting stats updates
*/
define want_stats
{
u32 client_index;
u32 context;
u32 enable_disable;
u32 pid;
};
/** \brief Reply for Want Stats request
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define want_stats_reply
{
u32 context;
i32 retval;
};
/** \brief Want stats counters structure
@param vnet_counter_type- such as ip4, ip6, punts, etc
@param is_combined - rx & tx total (all types) counts
@param first_sw_if_index - first sw index in block of index, counts
@param count - number of interfaces this stats block includes counters for
@param data - contiguous block of vlib_counter_t structures
*/
define vnet_interface_counters
{
/* enums - plural - in vnet/interface.h */
u8 vnet_counter_type;
u8 is_combined;
u32 first_sw_if_index;
u32 count;
u8 data[count];
};
typeonly manual_print manual_endian define ip4_fib_counter
{
u32 address;
u8 address_length;
u64 packets;
u64 bytes;
};
manual_print manual_endian define vnet_ip4_fib_counters
{
u32 vrf_id;
u32 count;
vl_api_ip4_fib_counter_t c[count];
};
typeonly manual_print manual_endian define ip6_fib_counter
{
u64 address[2];
u8 address_length;
u64 packets;
u64 bytes;
};
manual_print manual_endian define vnet_ip6_fib_counters
{
u32 vrf_id;
u32 count;
vl_api_ip6_fib_counter_t c[count];
};
/** \brief Request for a single block of summary stats
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define vnet_get_summary_stats
{
u32 client_index;
u32 context;
};
/** \brief Reply for vnet_get_summary_stats request
@param context - sender context, to match reply w/ request
@param retval - return code for request
@param total_pkts -
@param total_bytes -
@param vector_rate -
*/
define vnet_summary_stats_reply
{
u32 context;
i32 retval;
u64 total_pkts[2];
u64 total_bytes[2];
f64 vector_rate;
};
/** \brief OAM event structure
@param dst_address[] -
@param state
*/
define oam_event
{
u8 dst_address[4];
u8 state;
};
/** \brief Want OAM events request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param enable_disable- enable if non-zero, else disable
@param pid - pid of the requesting process
*/
define want_oam_events
{
u32 client_index;
u32 context;
u32 enable_disable;
u32 pid;
};
/** \brief Want OAM events response
@param context - sender context, to match reply w/ request
@param retval - return code for the want oam stats request
*/
define want_oam_events_reply
{
u32 context;
i32 retval;
};
/** \brief OAM add / del target request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf_id of the target
@param src_address[] - source address to use for the updates
@param dst_address[] - destination address of the target
@param is_add - add target if non-zero, else delete
*/
define oam_add_del
{
u32 client_index;
u32 context;
u32 vrf_id;
u8 src_address[4];
u8 dst_address[4];
u8 is_add;
};
/** \brief OAM add / del target response
@param context - sender context, to match reply w/ request
@param retval - return code of the request
*/
define oam_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Reset fib table request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf/table id of the fib table to reset
@param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
*/
define reset_fib
{
u32 client_index;
u32 context;
u32 vrf_id;
u8 is_ipv6;
};
/** \brief Reset fib response
@param context - sender context, to match reply w/ request
@param retval - return code for the reset bfib request
*/
define reset_fib_reply
{
u32 context;
i32 retval;
};
/** \brief DHCP Proxy config add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf id
@param if_ipv6 - ipv6 if non-zero, else ipv4
@param is_add - add the config if non-zero, else delete
@param insert_circuit_id - option82 suboption 1 fib number
@param dhcp_server[] - server address
@param dhcp_src_address[] - <fix this, need details>
*/
define dhcp_proxy_config
{
u32 client_index;
u32 context;
u32 vrf_id;
u8 is_ipv6;
u8 is_add;
u8 insert_circuit_id;
u8 dhcp_server[16];
u8 dhcp_src_address[16];
};
/** \brief DHCP Proxy config response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define dhcp_proxy_config_reply
{
u32 context;
i32 retval;
};
/** \brief DHCP Proxy set / unset vss request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param tbl_id - table id
@param oui - first part of vpn id
@param fib_id - second part of vpn id
@param is_ipv6 - ip6 if non-zero, else ip4
@param is_add - set vss if non-zero, else delete
*/
define dhcp_proxy_set_vss
{
u32 client_index;
u32 context;
u32 tbl_id;
u32 oui;
u32 fib_id;
u8 is_ipv6;
u8 is_add;
};
/** \brief DHCP proxy set / unset vss response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define dhcp_proxy_set_vss_reply
{
u32 context;
i32 retval;
};
/** \brief Set the ip flow hash config for a fib request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf/fib id
@param is_ipv6 - if non-zero the fib is ip6, else ip4
@param src - if non-zero include src in flow hash
@param dst - if non-zero include dst in flow hash
@param sport - if non-zero include sport in flow hash
@param dport - if non-zero include dport in flow hash
@param proto -if non-zero include proto in flow hash
@param reverse - if non-zero include reverse in flow hash
*/
define set_ip_flow_hash
{
u32 client_index;
u32 context;
u32 vrf_id;
u8 is_ipv6;
u8 src;
u8 dst;
u8 sport;
u8 dport;
u8 proto;
u8 reverse;
};
/** \brief Set the ip flow hash config for a fib response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define set_ip_flow_hash_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 router advertisement config request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param suppress -
@param managed -
@param other -
@param ll_option -
@param send_unicast -
@param cease -
@param is_no -
@param default_router -
@param max_interval -
@param min_interval -
@param lifetime -
@param initial_count -
@param initial_interval -
*/
define sw_interface_ip6nd_ra_config
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 suppress;
u8 managed;
u8 other;
u8 ll_option;
u8 send_unicast;
u8 cease;
u8 is_no;
u8 default_router;
u32 max_interval;
u32 min_interval;
u32 lifetime;
u32 initial_count;
u32 initial_interval;
};
/** \brief IPv6 router advertisement config response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define sw_interface_ip6nd_ra_config_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 router advertisement prefix config request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index -
@param address[] -
@param address_length -
@param use_default -
@param no_advertise -
@param off_link -
@param no_autoconfig -
@param no_onlink -
@param is_no -
@param val_lifetime -
@param pref_lifetime -
*/
define sw_interface_ip6nd_ra_prefix
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 address[16];
u8 address_length;
u8 use_default;
u8 no_advertise;
u8 off_link;
u8 no_autoconfig;
u8 no_onlink;
u8 is_no;
u32 val_lifetime;
u32 pref_lifetime;
};
/** \brief IPv6 router advertisement prefix config response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define sw_interface_ip6nd_ra_prefix_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 interface enable / disable request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface used to reach neighbor
@param enable - if non-zero enable ip6 on interface, else disable
*/
define sw_interface_ip6_enable_disable
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 enable; /* set to true if enable */
};
/** \brief IPv6 interface enable / disable response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define sw_interface_ip6_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 set link local address on interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface to set link local on
@param address[] - the new link local address
@param address_length - link local address length
*/
define sw_interface_ip6_set_link_local_address
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 address[16];
u8 address_length;
};
/** \brief IPv6 set link local address on interface response
@param context - sender context, to match reply w/ request
@param retval - error code for the request
*/
define sw_interface_ip6_set_link_local_address_reply
{
u32 context;
i32 retval;
};
/** \brief Set unnumbered interface add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface with an IP address
@param unnumbered_sw_if_index - interface which will use the address
@param is_add - if non-zero set the association, else unset it
*/
define sw_interface_set_unnumbered
{
u32 client_index;
u32 context;
u32 sw_if_index; /* use this intfc address */
u32 unnumbered_sw_if_index; /* on this interface */
u8 is_add;
};
/** \brief Set unnumbered interface add / del response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define sw_interface_set_unnumbered_reply
{
u32 context;
i32 retval;
};
/** \brief Create loopback interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param mac_address - mac addr to assign to the interface if none-zero
*/
define create_loopback
{
u32 client_index;
u32 context;
u8 mac_address[6];
};
/** \brief Create loopback interface response
@param context - sender context, to match reply w/ request
@param sw_if_index - sw index of the interface that was created
@param retval - return code for the request
*/
define create_loopback_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief Delete loopback interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - sw index of the interface that was created
*/
define delete_loopback
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief Delete loopback interface response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define delete_loopback_reply
{
u32 context;
i32 retval;
};
/** \brief Control ping from client to api server request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define control_ping
{
u32 client_index;
u32 context;
};
/** \brief Control ping from the client to the server response
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param retval - return code for the request
@param vpe_pid - the pid of the vpe, returned by the server
*/
define control_ping_reply
{
u32 context;
i32 retval;
u32 client_index;
u32 vpe_pid;
};
/** \brief Process a vpe parser cli string request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param cmd_in_shmem - pointer to cli command string
*/
define cli_request
{
u32 client_index;
u32 context;
u64 cmd_in_shmem;
};
define cli_inband
{
u32 client_index;
u32 context;
u32 length;
u8 cmd[length];
};
/** \brief vpe parser cli string response
@param context - sender context, to match reply w/ request
@param retval - return code for request
@param reply_in_shmem - Reply string from cli processing if any
*/
define cli_reply
{
u32 context;
i32 retval;
u64 reply_in_shmem;
};
define cli_inband_reply
{
u32 context;
i32 retval;
u32 length;
u8 reply[length];
};
/** \brief Set max allowed ARP or ip6 neighbor entries request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_ipv6 - neighbor limit if non-zero, else ARP limit
@param arp_neighbor_limit - the new limit, defaults are ~ 50k
*/
define set_arp_neighbor_limit
{
u32 client_index;
u32 context;
u8 is_ipv6;
u32 arp_neighbor_limit;
};
/** \brief Set max allowed ARP or ip6 neighbor entries response
@param context - sender context, to match reply w/ request
@param retval - return code for request
*/
define set_arp_neighbor_limit_reply
{
u32 context;
i32 retval;
};
/** \brief L2 interface patch add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param rx_sw_if_index - receive side interface
@param tx_sw_if_index - transmit side interface
@param is_add - if non-zero set up the interface patch, else remove it
*/
define l2_patch_add_del
{
u32 client_index;
u32 context;
u32 rx_sw_if_index;
u32 tx_sw_if_index;
u8 is_add;
};
/** \brief L2 interface patch add / del response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define l2_patch_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 segment routing tunnel add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add the tunnel if non-zero, else delete it
@param name[] - tunnel name (len. 64)
@param src_address[] -
@param dst_address[] -
@param dst_mask_width -
@param inner_vrf_id -
@param outer_vrf_id -
@param flags_net_byte_order -
@param n_segments -
@param n_tags -
@param segs_and_tags[] -
@param policy_name[] - name of policy to associate this tunnel to (len. 64)
*/
define sr_tunnel_add_del
{
u32 client_index;
u32 context;
u8 is_add;
u8 name[64];
u8 src_address[16];
u8 dst_address[16];
u8 dst_mask_width;
u32 inner_vrf_id;
u32 outer_vrf_id;
u16 flags_net_byte_order;
u8 n_segments;
u8 n_tags;
u8 segs_and_tags[0];
u8 policy_name[64];
};
/** \brief IPv6 segment routing tunnel add / del response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define sr_tunnel_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 segment routing policy add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add the tunnel if non-zero, else delete it
@param name[] - policy name (len. 64)
@param tunnel_names[] -
*/
define sr_policy_add_del
{
u32 client_index;
u32 context;
u8 is_add;
u8 name[64];
u8 tunnel_names[0];
};
/** \brief IPv6 segment routing policy add / del response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define sr_policy_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief IPv6 segment routing multicast map to policy add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add the tunnel if non-zero, else delete it
@param multicast_address[] - IP6 multicast address
@param policy_name[] = policy name (len.64)
*/
define sr_multicast_map_add_del
{
u32 client_index;
u32 context;
u8 is_add;
u8 multicast_address[16];
u8 policy_name[64];
};
/** \brief IPv6 segment routing multicast map to policy add / del response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define sr_multicast_map_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Interface set vpath request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface used to reach neighbor
@param enable - if non-zero enable, else disable
*/
define sw_interface_set_vpath
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 enable;
};
/** \brief Interface set vpath response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define sw_interface_set_vpath_reply
{
u32 context;
i32 retval;
};
/** \brief MPLS Ethernet add / del tunnel request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vrf_id - vrf_id, only for IP4
@param sw_if_index - interface used to reach neighbor
@param is_add - add if set, tunnel delete if 0
@param dst_mac_address -
@param adj_address -
@param adj_address_length -
*/
define mpls_ethernet_add_del_tunnel
{
u32 client_index;
u32 context;
u32 vrf_id;
u32 tx_sw_if_index;
u8 is_add;
u8 l2_only;
u8 dst_mac_address[6];
u8 adj_address[4];
u8 adj_address_length;
};
/** \brief Reply for MPLS Ethernet add / delete tunnel request
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define mpls_ethernet_add_del_tunnel_reply
{
u32 context;
i32 retval;
u32 tunnel_sw_if_index;
};
/** \brief MPLS Ethernet add/ del tunnel 2
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param inner_vrf_id -
@param outer_vrf_id -
@param resolve_attempts -
@param resolve_opaque -
@param resolve_if_needed -
@param is_add -
@param adj_address -
@param adj_address_length -
@param next_hop_ip4_address_in_outer_vrf -
*/
define mpls_ethernet_add_del_tunnel_2
{
u32 client_index;
u32 context;
u32 inner_vrf_id;
u32 outer_vrf_id;
u32 resolve_attempts;
u32 resolve_opaque; /* no need to set this */
u8 resolve_if_needed;
u8 is_add;
u8 l2_only;
u8 adj_address[4];
u8 adj_address_length;
u8 next_hop_ip4_address_in_outer_vrf[4];
};
/** \brief MPLS Ethernet add/ del tunnel 2
@param context - sender context, to match reply w/ request
@param retval - return code for add /del request
*/
define mpls_ethernet_add_del_tunnel_2_reply
{
u32 context;
i32 retval;
};
/** \brief Set L2 XConnect between two interfaces request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param rx_sw_if_index - Receive interface index
@param tx_sw_if_index - Transmit interface index
@param enable - enable xconnect if not 0, else set to L3 mode
*/
define sw_interface_set_l2_xconnect
{
u32 client_index;
u32 context;
u32 rx_sw_if_index;
u32 tx_sw_if_index;
u8 enable;
};
/** \brief Set L2 XConnect response
@param context - sender context, to match reply w/ request
@param retval - L2 XConnect request return code
*/
define sw_interface_set_l2_xconnect_reply
{
u32 context;
i32 retval;
};
/** \brief Interface bridge mode request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param rx_sw_if_index - the interface
@param bd_id - bridge domain id
@param bvi - Setup interface as a bvi, bridge mode only
@param shg - Shared horizon group, for bridge mode only
@param enable - Enable beige mode if not 0, else set to L3 mode
*/
define sw_interface_set_l2_bridge
{
u32 client_index;
u32 context;
u32 rx_sw_if_index;
u32 bd_id;
u8 shg;
u8 bvi;
u8 enable;
};
/** \brief Interface bridge mode response
@param context - sender context, to match reply w/ request
@param retval - Bridge mode request return code
*/
define sw_interface_set_l2_bridge_reply
{
u32 context;
i32 retval;
};
/** \brief L2 FIB add entry request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param mac - the entry's mac address
@param bd_id - the entry's bridge domain id
@param sw_if_index - the interface
@param is_add - If non zero add the entry, else delete it
@param static_mac -
@param filter_mac -
*/
define l2fib_add_del
{
u32 client_index;
u32 context;
u64 mac;
u32 bd_id;
u32 sw_if_index;
u8 is_add;
u8 static_mac;
u8 filter_mac;
u8 bvi_mac;
};
/** \brief L2 FIB add entry response
@param context - sender context, to match reply w/ request
@param retval - return code for the add l2fib entry request
*/
define l2fib_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface
@param is_set - if non-zero, set the bits, else clear them
@param feature_bitmap - non-zero bits to set or clear
*/
define l2_flags
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 is_set;
u32 feature_bitmap;
};
/** \brief Set L2 bits response
@param context - sender context, to match reply w/ request
@param retval - return code for the set l2 bits request
*/
define l2_flags_reply
{
u32 context;
i32 retval;
u32 resulting_feature_bitmap;
};
/** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
L2_UU_FLOOD, or L2_ARP_TERM) request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param bd_id - the bridge domain to set the flags for
@param is_set - if non-zero, set the flags, else clear them
@param feature_bitmap - bits that are non-zero to set or clear
*/
define bridge_flags
{
u32 client_index;
u32 context;
u32 bd_id;
u8 is_set;
u32 feature_bitmap;
};
/** \brief Set bridge flags response
@param context - sender context, to match reply w/ request
@param retval - return code for the set bridge flags request
@param resulting_feature_bitmap - the feature bitmap value after the request is implemented
*/
define bridge_flags_reply
{
u32 context;
i32 retval;
u32 resulting_feature_bitmap;
};
/** \brief Set bridge domain ip to mac entry request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param bd_id - the bridge domain to set the flags for
@param is_add - if non-zero, add the entry, else clear it
@param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
@param mac_address - MAC address
@param
*/
define bd_ip_mac_add_del
{
u32 client_index;
u32 context;
u32 bd_id;
u8 is_add;
u8 is_ipv6;
u8 ip_address[16];
u8 mac_address[6];
};
/** \brief Set bridge domain ip to mac entry response
@param context - sender context, to match reply w/ request
@param retval - return code for the set bridge flags request
*/
define bd_ip_mac_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Add/Delete classification table request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add- if non-zero add the table, else delete it
@param table_index - if add, reuturns index of the created table, else specifies the table to delete
@param nbuckets - number of buckets when adding a table
@param memory_size - memory size when adding a table
@param match_n_vectors - number of match vectors
@param next_table_index - index of next table
@param miss_next_index - index of miss table
@param mask[] - match mask
*/
define classify_add_del_table
{
u32 client_index;
u32 context;
u8 is_add;
u32 table_index;
u32 nbuckets;
u32 memory_size;
u32 skip_n_vectors;
u32 match_n_vectors;
u32 next_table_index;
u32 miss_next_index;
u8 mask[0];
};
/** \brief Add/Delete classification table response
@param context - sender context, to match reply w/ request
@param retval - return code for the table add/del requst
@param new_table_index - for add, returned index of the new table
@param skip_n_vectors - for add, returned value of skip_n_vectors in table
@param match_n_vectors -for add, returned value of match_n_vectors in table
*/
define classify_add_del_table_reply
{
u32 context;
i32 retval;
u32 new_table_index;
u32 skip_n_vectors;
u32 match_n_vectors;
};
/** \brief Classify add / del session request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add session if non-zero, else delete
@param table_index - index of the table to add/del the session, required
@param hit_next_index - for add, hit_next_index of new session, required
@param opaque_index - for add, opaque_index of new session
@param advance -for add, advance value for session
@param match[] - for add, match value for session, required
*/
define classify_add_del_session
{
u32 client_index;
u32 context;
u8 is_add;
u32 table_index;
u32 hit_next_index;
u32 opaque_index;
i32 advance;
u8 match[0];
};
/** \brief Classify add / del session response
@param context - sender context, to match reply w/ request
@param retval - return code for the add/del session request
*/
define classify_add_del_session_reply
{
u32 context;
i32 retval;
};
/** \brief Set/unset the classification table for an interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_ipv6 - ipv6 if non-zero, else ipv4
@param sw_if_index - interface to associate with the table
@param table_index - index of the table, if ~0 unset the table
*/
define classify_set_interface_ip_table
{
u32 client_index;
u32 context;
u8 is_ipv6;
u32 sw_if_index;
u32 table_index; /* ~0 => off */
};
/** \brief Set/unset interface classification table response
@param context - sender context, to match reply w/ request
@param retval - return code
*/
define classify_set_interface_ip_table_reply
{
u32 context;
i32 retval;
};
/** \brief Set/unset l2 classification tables for an interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface to set/unset tables for
@param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
@param ip6_table_index - ip6 index
@param other_table_index - other index
*/
define classify_set_interface_l2_tables
{
u32 client_index;
u32 context;
u32 sw_if_index;
/* 3 x ~0 => off */
u32 ip4_table_index;
u32 ip6_table_index;
u32 other_table_index;
u8 is_input;
};
/** \brief Set/unset l2 classification tables for an interface response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define classify_set_interface_l2_tables_reply
{
u32 context;
i32 retval;
};
/** \brief Get node index using name request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param node_name[] - name of the node
*/
define get_node_index
{
u32 client_index;
u32 context;
u8 node_name[64];
};
/** \brief Get node index using name request
@param context - sender context, to match reply w/ request
@param retval - return code for the request
@param node_index - index of the desired node if found, else ~0
*/
define get_node_index_reply
{
u32 context;
i32 retval;
u32 node_index;
};
/** \brief Set the next node for a given node request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param node_name[] - node to add the next node to
@param next_name[] - node to add as the next node
*/
define add_node_next
{
u32 client_index;
u32 context;
u8 node_name[64];
u8 next_name[64];
};
/** \brief IP Set the next node for a given node response
@param context - sender context, to match reply w/ request
@param retval - return code for the add next node request
@param next_index - the index of the next node if success, else ~0
*/
define add_node_next_reply
{
u32 context;
i32 retval;
u32 next_index;
};
/** \brief DHCP Proxy config 2 add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param rx_vrf_id - receive vrf id
@param server_vrf_id - server vrf id
@param if_ipv6 - ipv6 if non-zero, else ipv4
@param is_add - add the config if non-zero, else delete
@param insert_circuit_id - option82 suboption 1 fib number
@param dhcp_server[] - server address
@param dhcp_src_address[] - <fix this, need details>
*/
define dhcp_proxy_config_2
{
u32 client_index;
u32 context;
u32 rx_vrf_id;
u32 server_vrf_id;
u8 is_ipv6;
u8 is_add;
u8 insert_circuit_id;
u8 dhcp_server[16];
u8 dhcp_src_address[16];
};
/** \brief DHCP Proxy config 2 add / del response
@param context - sender context, to match reply w/ request
@param retval - return code for request
*/
define dhcp_proxy_config_2_reply
{
u32 context;
i32 retval;
};
/** \brief l2tpv3 tunnel interface create request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param client_address - remote client tunnel ip address
@param client_address - local tunnel ip address
@param is_ipv6 - ipv6 if non-zero, else ipv4
@param local_session_id - local tunnel session id
@param remote_session_id - remote tunnel session id
@param local_cookie - local tunnel cookie
@param l2_sublayer_present - l2 sublayer is present in packets if non-zero
@param encap_vrf_id - fib identifier used for outgoing encapsulated packets
*/
define l2tpv3_create_tunnel
{
u32 client_index;
u32 context;
u8 client_address[16];
u8 our_address[16];
u8 is_ipv6;
u32 local_session_id;
u32 remote_session_id;
u64 local_cookie;
u64 remote_cookie;
u8 l2_sublayer_present;
u32 encap_vrf_id;
};
/** \brief l2tpv3 tunnel interface create response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
@param sw_if_index - index of the new tunnel interface
*/
define l2tpv3_create_tunnel_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
define l2tpv3_set_tunnel_cookies
{
u32 client_index;
u32 context;
u32 sw_if_index;
u64 new_local_cookie;
u64 new_remote_cookie;
};
/** \brief L2TP tunnel set cookies response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define l2tpv3_set_tunnel_cookies_reply
{
u32 context;
i32 retval;
};
define sw_if_l2tpv3_tunnel_details
{
u32 context;
u32 sw_if_index;
u8 interface_name[64];
u8 client_address[16];
u8 our_address[16];
u32 local_session_id;
u32 remote_session_id;
u64 local_cookie[2];
u64 remote_cookie;
u8 l2_sublayer_present;
};
define sw_if_l2tpv3_tunnel_dump
{
u32 client_index;
u32 context;
};
/** \brief L2 fib clear table request, clear all mac entries in the l2 fib
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define l2_fib_clear_table
{
u32 client_index;
u32 context;
};
/** \brief L2 fib clear table response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define l2_fib_clear_table_reply
{
u32 context;
i32 retval;
};
/** \brief L2 interface ethernet flow point filtering enable/disable request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface to enable/disable filtering on
@param enable_disable - if non-zero enable filtering, else disable
*/
define l2_interface_efp_filter
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 enable_disable;
};
/** \brief L2 interface ethernet flow point filtering response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define l2_interface_efp_filter_reply
{
u32 context;
i32 retval;
};
define l2tpv3_interface_enable_disable
{
u32 client_index;
u32 context;
u8 enable_disable;
u32 sw_if_index;
};
define l2tpv3_interface_enable_disable_reply
{
u32 context;
i32 retval;
};
define l2tpv3_set_lookup_key
{
u32 client_index;
u32 context;
/* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
u8 key;
};
define l2tpv3_set_lookup_key_reply
{
u32 context;
i32 retval;
};
define vxlan_add_del_tunnel
{
u32 client_index;
u32 context;
u8 is_add;
u8 is_ipv6;
u8 src_address[16];
u8 dst_address[16];
u32 encap_vrf_id;
u32 decap_next_index;
u32 vni;
};
define vxlan_add_del_tunnel_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
define vxlan_tunnel_dump
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
define vxlan_tunnel_details
{
u32 context;
u32 sw_if_index;
u8 src_address[16];
u8 dst_address[16];
u32 encap_vrf_id;
u32 decap_next_index;
u32 vni;
u8 is_ipv6;
};
define gre_add_del_tunnel
{
u32 client_index;
u32 context;
u8 is_add;
u8 is_ipv6;
u8 teb;
u8 src_address[16];
u8 dst_address[16];
u32 outer_fib_id;
};
define gre_add_del_tunnel_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
define gre_tunnel_dump
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
define gre_tunnel_details
{
u32 context;
u32 sw_if_index;
u8 is_ipv6;
u8 teb;
u8 src_address[16];
u8 dst_address[16];
u32 outer_fib_id;
};
/** \brief L2 interface vlan tag rewrite configure request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface the operation is applied to
@param vtr_op - Choose from l2_vtr_op_t enum values
@param push_dot1q - first pushed flag dot1q id set, else dot1ad
@param tag1 - Needed for any push or translate vtr op
@param tag2 - Needed for any push 2 or translate x-2 vtr ops
*/
define l2_interface_vlan_tag_rewrite
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 vtr_op;
u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
u32 tag1; // first pushed tag
u32 tag2; // second pushed tag
};
/** \brief L2 interface vlan tag rewrite response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define l2_interface_vlan_tag_rewrite_reply
{
u32 context;
i32 retval;
};
/** \brief vhost-user interface create request
@param client_index - opaque cookie to identify the sender
@param is_server - our side is socket server
@param sock_filename - unix socket filename, used to speak with frontend
@param use_custom_mac - enable or disable the use of the provided hardware address
@param mac_address - hardware address to use if 'use_custom_mac' is set
*/
define create_vhost_user_if
{
u32 client_index;
u32 context;
u8 is_server;
u8 sock_filename[256];
u8 renumber;
u32 custom_dev_instance;
u8 use_custom_mac;
u8 mac_address[6];
};
/** \brief vhost-user interface create response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
@param sw_if_index - interface the operation is applied to
*/
define create_vhost_user_if_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief vhost-user interface modify request
@param client_index - opaque cookie to identify the sender
@param is_server - our side is socket server
@param sock_filename - unix socket filename, used to speak with frontend
*/
define modify_vhost_user_if
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 is_server;
u8 sock_filename[256];
u8 renumber;
u32 custom_dev_instance;
};
/** \brief vhost-user interface modify response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define modify_vhost_user_if_reply
{
u32 context;
i32 retval;
};
/** \brief vhost-user interface delete request
@param client_index - opaque cookie to identify the sender
*/
define delete_vhost_user_if
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief vhost-user interface delete response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define delete_vhost_user_if_reply
{
u32 context;
i32 retval;
};
define create_subif
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 sub_id;
/* These fields map directly onto the subif template */
u8 no_tags;
u8 one_tag;
u8 two_tags;
u8 dot1ad; // 0 = dot1q, 1=dot1ad
u8 exact_match;
u8 default_sub;
u8 outer_vlan_id_any;
u8 inner_vlan_id_any;
u16 outer_vlan_id;
u16 inner_vlan_id;
};
define create_subif_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief show version
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define show_version
{
u32 client_index;
u32 context;
};
/** \brief show version response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
@param program - name of the program (vpe)
@param version - version of the program
@param build_directory - root of the workspace where the program was built
*/
define show_version_reply
{
u32 context;
i32 retval;
u8 program[32];
u8 version[32];
u8 build_date[32];
u8 build_directory[256];
};
/** \brief Vhost-user interface details structure (fix this)
@param sw_if_index - index of the interface
@param interface_name - name of interface
@param virtio_net_hdr_sz - net header size
@param features - interface features
@param is_server - vhost-user server socket
@param sock_filename - socket filename
@param num_regions - number of used memory regions
*/
define sw_interface_vhost_user_details
{
u32 context;
u32 sw_if_index;
u8 interface_name[64];
u32 virtio_net_hdr_sz;
u64 features;
u8 is_server;
u8 sock_filename[256];
u32 num_regions;
i32 sock_errno;
};
/* works */
define sw_interface_vhost_user_dump
{
u32 client_index;
u32 context;
};
define ip_address_details
{
u32 client_index;
u32 context;
u8 ip[16];
u8 prefix_length;
};
define ip_address_dump
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 is_ipv6;
};
define ip_details
{
u32 sw_if_index;
u32 context;
};
define ip_dump
{
u32 client_index;
u32 context;
u8 is_ipv6;
};
/** \brief l2 fib table entry structure
@param bd_id - the l2 fib / bridge domain table id
@param mac - the entry's mac address
@param sw_if_index - index of the interface
@param static_mac - the entry is statically configured.
@param filter_mac - the entry is a mac filter entry.
@param bvi_mac - the mac address is a bridge virtual interface
*/
define l2_fib_table_entry
{
u32 context;
u32 bd_id;
u64 mac;
u32 sw_if_index;
u8 static_mac;
u8 filter_mac;
u8 bvi_mac;
};
/** \brief Dump l2 fib (aka bridge domain) table
@param client_index - opaque cookie to identify the sender
@param bd_id - the l2 fib / bridge domain table identifier
*/
define l2_fib_table_dump
{
u32 client_index;
u32 context;
u32 bd_id;
};
define vxlan_gpe_add_del_tunnel
{
u32 client_index;
u32 context;
u8 is_ipv6;
u8 local[16];
u8 remote[16];
u32 encap_vrf_id;
u32 decap_vrf_id;
u8 protocol;
u32 vni;
u8 is_add;
};
define vxlan_gpe_add_del_tunnel_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
define vxlan_gpe_tunnel_dump
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
define vxlan_gpe_tunnel_details
{
u32 context;
u32 sw_if_index;
u8 local[16];
u8 remote[16];
u32 vni;
u8 protocol;
u32 encap_vrf_id;
u32 decap_vrf_id;
u8 is_ipv6;
};
/** \brief add or delete locator_set
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param locator_set_name - locator name
@param locator_num - number of locators
@param locators - LISP locator records
Structure of one locator record is as follows:
define locator_t {
u32 sw_if_index;
u8 priority;
u8 weight;
}
*/
define lisp_add_del_locator_set
{
u32 client_index;
u32 context;
u8 is_add;
u8 locator_set_name[64];
u32 locator_num;
u8 locators[0];
};
/** \brief Reply for locator_set add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param ls_index - locator set index
*/
define lisp_add_del_locator_set_reply
{
u32 context;
i32 retval;
u32 ls_index;
};
/** \brief add or delete locator for locator_set
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param locator_set_name - name of locator_set to add/del locator
@param sw_if_index - index of the interface
@param priority - priority of the lisp locator
@param weight - weight of the lisp locator
*/
define lisp_add_del_locator
{
u32 client_index;
u32 context;
u8 is_add;
u8 locator_set_name[64];
u32 sw_if_index;
u8 priority;
u8 weight;
};
/** \brief Reply for locator add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_add_del_locator_reply
{
u32 context;
i32 retval;
};
/** \brief add or delete lisp eid-table
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param eid_type:
0 : ipv4
1 : ipv6
2 : mac
@param eid - EID can be ip4, ip6 or mac
@param prefix_len - prefix len
@param locator_set_name - name of locator_set to add/del eid-table
@param vni - virtual network instance
*/
define lisp_add_del_local_eid
{
u32 client_index;
u32 context;
u8 is_add;
u8 eid_type;
u8 eid[16];
u8 prefix_len;
u8 locator_set_name[64];
u32 vni;
};
/** \brief Reply for local_eid add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_add_del_local_eid_reply
{
u32 context;
i32 retval;
};
/** \brief add or delete lisp gpe tunnel
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param eid_type -
0 : ipv4
1 : ipv6
2 : mac
@param rmt_eid - remote eid
@param lcl_eid - local eid
@param rmt_len - remote prefix len
@param lcl_len - local prefix len
@param vni - virtual network identifier
@param dp_table - vrf/bridge domain id
@param loc_num - number of locators
@param lcl_locs - array of local locators
@param rmt_locs - array of remote locators
@param action - negative action when 0 locators configured
*/
define lisp_gpe_add_del_fwd_entry
{
u32 client_index;
u32 context;
u8 is_add;
u8 eid_type;
u8 rmt_eid[16];
u8 lcl_eid[16];
u8 rmt_len;
u8 lcl_len;
u32 vni;
u32 dp_table;
u32 loc_num;
u8 lcl_locs[loc_num];
u8 rmt_locs[loc_num];
u8 action;
};
/** \brief Reply for gpe_fwd_entry add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_gpe_add_del_fwd_entry_reply
{
u32 context;
i32 retval;
};
/** \brief add or delete map-resolver
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param is_ipv6 - if non-zero the address is ipv6, else ipv4
@param ip_address - array of address bytes
*/
define lisp_add_del_map_resolver
{
u32 client_index;
u32 context;
u8 is_add;
u8 is_ipv6;
u8 ip_address[16];
};
/** \brief Reply for map_resolver add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_add_del_map_resolver_reply
{
u32 context;
i32 retval;
};
/** \brief enable or disable lisp-gpe protocol
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_en - enable protocol if non-zero, else disable
*/
define lisp_gpe_enable_disable
{
u32 client_index;
u32 context;
u8 is_en;
};
/** \brief Reply for gpe enable/disable
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_gpe_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief enable or disable LISP feature
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_en - enable protocol if non-zero, else disable
*/
define lisp_enable_disable
{
u32 client_index;
u32 context;
u8 is_en;
};
/** \brief Reply for gpe enable/disable
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief add or delete gpe_iface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
*/
define lisp_gpe_add_del_iface
{
u32 client_index;
u32 context;
u8 is_add;
u8 is_l2;
u32 dp_table;
u32 vni;
};
/** \brief Reply for gpe_iface add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_gpe_add_del_iface_reply
{
u32 context;
i32 retval;
};
/** \brief configure or disable LISP PITR node
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param ls_name - locator set name
@param is_add - add locator set if non-zero, else disable pitr
*/
define lisp_pitr_set_locator_set
{
u32 client_index;
u32 context;
u8 is_add;
u8 ls_name[64];
};
/** \brief Reply for lisp_pitr_set_locator_set
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_pitr_set_locator_set_reply
{
u32 context;
i32 retval;
};
/** \brief set LISP map-request mode. Based on configuration VPP will send
src/dest or just normal destination map requests.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param mode - new map-request mode. Supported values are:
0 - destination only
1 - source/destaination
*/
define lisp_map_request_mode
{
u32 client_index;
u32 context;
u8 mode;
};
/** \brief Reply for lisp_map_request_mode
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_map_request_mode_reply
{
u32 context;
i32 retval;
};
/** \brief Request for LISP map-request mode
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define show_lisp_map_request_mode
{
u32 client_index;
u32 context;
};
/** \brief Reply for show_lisp_map_request_mode
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param mode - map-request mode
*/
define show_lisp_map_request_mode_reply
{
u32 context;
i32 retval;
u8 mode;
};
/** \brief add or delete remote static mapping
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param is_src_dst - flag indicating src/dst based routing policy
@param del_all - if set, delete all remote mappings
@param vni - virtual network instance
@param action - negative map-reply action
@param eid_type -
0 : ipv4
1 : ipv6
2 : mac
@param deid - dst EID
@param seid - src EID, valid only if is_src_dst is enabled
@param rloc_num - number of remote locators
@param rlocs - remote locator records
Structure of remote locator:
define rloc_t {
u8 is_ip4;
u8 priority;
u8 weight;
u8 addr[16];
}
*/
define lisp_add_del_remote_mapping
{
u32 client_index;
u32 context;
u8 is_add;
u8 is_src_dst;
u8 del_all;
u32 vni;
u8 action;
u8 eid_type;
u8 eid[16];
u8 eid_len;
u8 seid[16];
u8 seid_len;
u32 rloc_num;
u8 rlocs[0];
};
/** \brief Reply for lisp_add_del_remote_mapping
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_add_del_remote_mapping_reply
{
u32 context;
i32 retval;
};
/** \brief add or delete LISP adjacency adjacency
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param vni - virtual network instance
@param eid_type -
0 : ipv4
1 : ipv6
2 : mac
@param deid - destination EID
@param seid - source EID
*/
define lisp_add_del_adjacency
{
u32 client_index;
u32 context;
u8 is_add;
u32 vni;
u8 eid_type;
u8 deid[16];
u8 seid[16];
u8 deid_len;
u8 seid_len;
};
/** \brief Reply for lisp_add_del_adjacency
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_add_del_adjacency_reply
{
u32 context;
i32 retval;
};
/** \brief add or delete map request itr rlocs
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param locator_set_name - locator set name
*/
define lisp_add_del_map_request_itr_rlocs
{
u32 client_index;
u32 context;
u8 is_add;
u8 locator_set_name[64];
};
/** \brief Reply for lisp_add_del_map_request_itr_rlocs
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_add_del_map_request_itr_rlocs_reply
{
u32 context;
i32 retval;
};
/** \brief map/unmap vni/bd_index to vrf
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add or delete mapping
@param dp_table - virtual network id/bridge domain index
@param vrf - vrf
*/
define lisp_eid_table_add_del_map
{
u32 client_index;
u32 context;
u8 is_add;
u32 vni;
u32 dp_table;
u8 is_l2;
};
/** \brief Reply for lisp_eid_table_add_del_map
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define lisp_eid_table_add_del_map_reply
{
u32 context;
i32 retval;
};
/** \brief Request for map lisp locator status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param locator_set_index - index of locator_set
@param ls_name - locator set name
@param is_index_set - flag indicating whether ls_name or ls_index is set
*/
define lisp_locator_dump
{
u32 client_index;
u32 context;
u32 ls_index;
u8 ls_name[64];
u8 is_index_set;
};
/** \brief LISP locator_set status
@param local - if is set, then locator is local
@param locator_set_name - name of the locator_set
@param sw_if_index - sw_if_index of the locator
@param priority - locator priority
@param weight - locator weight
*/
define lisp_locator_details
{
u32 context;
u8 local;
u32 sw_if_index;
u8 is_ipv6;
u8 ip_address[16];
u8 priority;
u8 weight;
};
/** \brief LISP locator_set status
@param context - sender context, to match reply w/ request
@param ls_index - locator set index
@param ls_name - name of the locator set
*/
define lisp_locator_set_details
{
u32 context;
u32 ls_index;
u8 ls_name[64];
};
/** \brief Request for locator_set summary status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param filter - filter type
Supported values:
0: all locator sets
1: local locator sets
2: remote locator sets
*/
define lisp_locator_set_dump
{
u32 client_index;
u32 context;
u8 filter;
};
/** \brief Dump lisp eid-table
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param locator_set_index - index of locator_set, if ~0 then the mapping
is negative
@param action - negative map request action
@param is_local - local if non-zero, else remote
@param eid_type:
0 : ipv4
1 : ipv6
2 : mac
@param is_src_dst - EID is type of source/destination
@param eid - EID can be ip4, ip6 or mac
@param eid_prefix_len - prefix length
@param seid - source EID can be ip4, ip6 or mac
@param seid_prefix_len - source prefix length
@param vni - virtual network instance
@param ttl - time to live
@param authoritative - authoritative
*/
define lisp_eid_table_details
{
u32 context;
u32 locator_set_index;
u8 action;
u8 is_local;
u8 eid_type;
u8 is_src_dst;
u32 vni;
u8 eid[16];
u8 eid_prefix_len;
u8 seid[16];
u8 seid_prefix_len;
u32 ttl;
u8 authoritative;
};
/** \brief Request for eid table summary status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param eid_set - if non-zero request info about specific mapping
@param vni - virtual network instance; valid only if eid_set != 0
@param prefix_length - prefix length if EID is IP address;
valid only if eid_set != 0
@param eid_type - EID type; valid only if eid_set != 0
Supported values:
0: EID is IPv4
1: EID is IPv6
2: EID is ethernet address
@param eid - endpoint identifier
@param filter - filter type;
Support values:
0: all eid
1: local eid
2: remote eid
*/
define lisp_eid_table_dump
{
u32 client_index;
u32 context;
u8 eid_set;
u8 prefix_length;
u32 vni;
u8 eid_type;
u8 eid[16];
u8 filter;
};
/** \brief Shows relationship between vni and vrf/bd
@param dp_table - VRF index or bridge domain index
@param vni - vitual network instance
*/
define lisp_eid_table_map_details
{
u32 context;
u32 vni;
u32 dp_table;
};
/** \brief Request for lisp_eid_table_map_details
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_l2 - if set dump vni/bd mappings else vni/vrf
*/
define lisp_eid_table_map_dump
{
u32 client_index;
u32 context;
u8 is_l2;
};
/** \brief Dumps all VNIs used in mappings
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define lisp_eid_table_vni_dump
{
u32 client_index;
u32 context;
};
/** \brief reply to lisp_eid_table_vni_dump
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param vni - virtual network instance
*/
define lisp_eid_table_vni_details
{
u32 client_index;
u32 context;
u32 vni;
};
define lisp_gpe_tunnel_details
{
u32 context;
u32 tunnels;
u8 is_ipv6;
u8 source_ip[16];
u8 destination_ip[16];
u32 encap_fib_id;
u32 decap_fib_id;
u32 dcap_next;
u8 lisp_ver;
u8 next_protocol;
u8 flags;
u8 ver_res;
u8 res;
u32 iid;
};
/** \brief Request for gpe tunnel summary status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define lisp_gpe_tunnel_dump
{
u32 client_index;
u32 context;
};
/** \brief LISP map resolver status
@param locator_set_name - name of the locator_set
@param is_ipv6 - if non-zero the address is ipv6, else ipv4
@param ip_address - array of address bytes
*/
define lisp_map_resolver_details
{
u32 context;
u8 is_ipv6;
u8 ip_address[16];
};
/** \brief Request for map resolver summary status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define lisp_map_resolver_dump
{
u32 client_index;
u32 context;
};
/** \brief Request for lisp-gpe protocol status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define show_lisp_status
{
u32 client_index;
u32 context;
};
/** \brief Status of lisp, enable or disable
@param context - sender context, to match reply w/ request
@param feature_status - lisp enable if non-zero, else disable
@param gpe_status - lisp enable if non-zero, else disable
*/
define show_lisp_status_reply
{
u32 context;
i32 retval;
u8 feature_status;
u8 gpe_status;
};
/** \brief Get LISP map request itr rlocs status
@param context - sender context, to match reply w/ request
@param locator_set_name - name of the locator_set
*/
define lisp_get_map_request_itr_rlocs
{
u32 client_index;
u32 context;
};
/** \brief Request for map request itr rlocs summary status
*/
define lisp_get_map_request_itr_rlocs_reply
{
u32 context;
i32 retval;
u8 locator_set_name[64];
};
/** \brief Request for lisp pitr status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define show_lisp_pitr
{
u32 client_index;
u32 context;
};
/** \brief Status of lisp pitr, enable or disable
@param context - sender context, to match reply w/ request
@param status - lisp pitr enable if non-zero, else disable
@param locator_set_name - name of the locator_set
*/
define show_lisp_pitr_reply
{
u32 context;
i32 retval;
u8 status;
u8 locator_set_name[64];
};
/* Gross kludge, DGMS */
define interface_name_renumber
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 new_show_dev_instance;
};
define interface_name_renumber_reply
{
u32 context;
i32 retval;
};
/** \brief Register for ip4 arp resolution events
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param enable_disable - 1 => register for events, 0 => cancel registration
@param pid - sender's pid
@param address - the exact ip4 address of interest
*/
define want_ip4_arp_events
{
u32 client_index;
u32 context;
u8 enable_disable;
u32 pid;
u32 address;
};
/** \brief Reply for interface events registration
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define want_ip4_arp_events_reply
{
u32 context;
i32 retval;
};
/** \brief Tell client about an ip4 arp resolution event
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param address - the exact ip4 address of interest
@param pid - client pid registered to receive notification
@param sw_if_index - interface which received ARP packet
@param new_mac - the new mac address
@param mac_ip - 0: resolution event, 1: mac/ip binding in bd
*/
define ip4_arp_event
{
u32 client_index;
u32 context;
u32 address;
u32 pid;
u32 sw_if_index;
u8 new_mac[6];
u8 mac_ip;
};
/** \brief Register for ip6 nd resolution events
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param enable_disable - 1 => register for events, 0 => cancel registration
@param pid - sender's pid
@param address - the exact ip6 address of interest
*/
define want_ip6_nd_events
{
u32 client_index;
u32 context;
u8 enable_disable;
u32 pid;
u8 address[16];
};
/** \brief Reply for ip6 nd resolution events registration
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define want_ip6_nd_events_reply
{
u32 context;
i32 retval;
};
/** \brief Tell client about an ip6 nd resolution or mac/ip event
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param pid - client pid registered to receive notification
@param sw_if_index - interface which received ARP packet
@param address - the exact ip6 address of interest
@param new_mac - the new mac address
@param mac_ip - 0: resolution event, 1: mac/ip binding in bd
*/
define ip6_nd_event
{
u32 client_index;
u32 context;
u32 pid;
u32 sw_if_index;
u8 address[16];
u8 new_mac[6];
u8 mac_ip;
};
/** \brief L2 bridge domain add or delete request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param bd_id - the bridge domain to create
@param flood - enable/disable bcast/mcast flooding in the bd
@param uu_flood - enable/disable uknown unicast flood in the bd
@param forward - enable/disable forwarding on all interfaces in the bd
@param learn - enable/disable learning on all interfaces in the bd
@param arp_term - enable/disable arp termination in the bd
@param is_add - add or delete flag
*/
define bridge_domain_add_del
{
u32 client_index;
u32 context;
u32 bd_id;
u8 flood;
u8 uu_flood;
u8 forward;
u8 learn;
u8 arp_term;
u8 is_add;
};
/** \brief L2 bridge domain add or delete response
@param context - sender context, to match reply w/ request
@param retval - return code for the set bridge flags request
*/
define bridge_domain_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief L2 bridge domain request operational state details
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param bd_id - the bridge domain id desired or ~0 to request all bds
*/
define bridge_domain_dump
{
u32 client_index;
u32 context;
u32 bd_id;
};
/** \brief L2 bridge domain operational state response
@param bd_id - the bridge domain id
@param flood - bcast/mcast flooding state on all interfaces in the bd
@param uu_flood - uknown unicast flooding state on all interfaces in the bd
@param forward - forwarding state on all interfaces in the bd
@param learn - learning state on all interfaces in the bd
@param arp_term - arp termination state on all interfaces in the bd
@param n_sw_ifs - number of sw_if_index's in the domain
*/
define bridge_domain_details
{
u32 context;
u32 bd_id;
u8 flood;
u8 uu_flood;
u8 forward;
u8 learn;
u8 arp_term;
u32 bvi_sw_if_index;
u32 n_sw_ifs;
};
/** \brief L2 bridge domain sw interface operational state response
@param bd_id - the bridge domain id
@param sw_if_index - sw_if_index in the domain
@param shg - split horizon group for the interface
*/
define bridge_domain_sw_if_details
{
u32 context;
u32 bd_id;
u32 sw_if_index;
u8 shg;
};
/** \brief DHCP Client config add / del request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface for DHCP client
@param hostname - hostname
@param is_add - add the config if non-zero, else delete
@param want_dhcp_event - DHCP event sent to the sender
via dhcp_compl_event API message if non-zero
@param pid - sender's pid
*/
define dhcp_client_config
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 hostname[64];
u8 is_add;
u8 want_dhcp_event;
u32 pid;
};
/** \brief DHCP Client config response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define dhcp_client_config_reply
{
u32 context;
i32 retval;
};
/** \brief Set/unset input ACL interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface to set/unset input ACL
@param ip4_table_index - ip4 classify table index (~0 for skip)
@param ip6_table_index - ip6 classify table index (~0 for skip)
@param l2_table_index - l2 classify table index (~0 for skip)
@param is_add - Set input ACL if non-zero, else unset
Note: User is recommeneded to use just one valid table_index per call.
(ip4_table_index, ip6_table_index, or l2_table_index)
*/
define input_acl_set_interface
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 ip4_table_index;
u32 ip6_table_index;
u32 l2_table_index;
u8 is_add;
};
/** \brief Set/unset input ACL interface response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define input_acl_set_interface_reply
{
u32 context;
i32 retval;
};
/** \brief IPsec: Add/delete Security Policy Database
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add SPD if non-zero, else delete
@param spd_id - SPD instance id (control plane allocated)
*/
define ipsec_spd_add_del
{
u32 client_index;
u32 context;
u8 is_add;
u32 spd_id;
};
/** \brief Reply for IPsec: Add/delete Security Policy Database entry
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ipsec_spd_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief IPsec: Add/delete SPD from interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add security mode if non-zero, else delete
@param sw_if_index - index of the interface
@param spd_id - SPD instance id to use for lookups
*/
define ipsec_interface_add_del_spd
{
u32 client_index;
u32 context;
u8 is_add;
u32 sw_if_index;
u32 spd_id;
};
/** \brief Reply for IPsec: Add/delete SPD from interface
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ipsec_interface_add_del_spd_reply
{
u32 context;
i32 retval;
};
/** \brief IPsec: Add/delete Security Policy Database entry
See RFC 4301, 4.4.1.1 on how to match packet to selectors
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add SPD if non-zero, else delete
@param spd_id - SPD instance id (control plane allocated)
@param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
@param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
@param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
@param remote_address_start - start of remote address range to match
@param remote_address_stop - end of remote address range to match
@param local_address_start - start of local address range to match
@param local_address_stop - end of local address range to match
@param protocol - protocol type to match [0 means any]
@param remote_port_start - start of remote port range to match ...
@param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
@param local_port_start - start of local port range to match ...
@param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
@param policy - 0 = bypass (no IPsec processing), 1 = discard (discard packet with ICMP processing), 2 = resolve (send request to control plane for SA resolving, and discard without ICMP processing), 3 = protect (apply IPsec policy using following parameters)
@param sa_id - SAD instance id (control plane allocated)
*/
define ipsec_spd_add_del_entry
{
u32 client_index;
u32 context;
u8 is_add;
u32 spd_id;
i32 priority;
u8 is_outbound;
// Selector
u8 is_ipv6;
u8 is_ip_any;
u8 remote_address_start[16];
u8 remote_address_stop[16];
u8 local_address_start[16];
u8 local_address_stop[16];
u8 protocol;
u16 remote_port_start;
u16 remote_port_stop;
u16 local_port_start;
u16 local_port_stop;
// Policy
u8 policy;
u32 sa_id;
};
/** \brief Reply for IPsec: Add/delete Security Policy Database entry
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ipsec_spd_add_del_entry_reply
{
u32 context;
i32 retval;
};
/** \brief IPsec: Add/delete Security Association Database entry
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add SAD entry if non-zero, else delete
@param sad_id - sad id
@param spi - security parameter index
@param protocol - 0 = AH, 1 = ESP
@param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
@param crypto_key_length - length of crypto_key in bytes
@param crypto_key - crypto keying material
@param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
@param integrity_key_length - length of integrity_key in bytes
@param integrity_key - integrity keying material
@param use_extended_sequence_number - use ESN when non-zero
@param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
@param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
@param tunnel_src_address - IPsec tunnel source address IPv6 if is_tunnel_ipv6 is non-zero, else IPv4. Only valid if is_tunnel is non-zero
@param tunnel_dst_address - IPsec tunnel destination address IPv6 if is_tunnel_ipv6 is non-zero, else IPv4. Only valid if is_tunnel is non-zero
To be added:
Anti-replay
IPsec tunnel address copy mode (to support GDOI)
*/
define ipsec_sad_add_del_entry
{
u32 client_index;
u32 context;
u8 is_add;
u32 sad_id;
u32 spi;
u8 protocol;
u8 crypto_algorithm;
u8 crypto_key_length;
u8 crypto_key[128];
u8 integrity_algorithm;
u8 integrity_key_length;
u8 integrity_key[128];
u8 use_extended_sequence_number;
u8 is_tunnel;
u8 is_tunnel_ipv6;
u8 tunnel_src_address[16];
u8 tunnel_dst_address[16];
};
/** \brief Reply for IPsec: Add/delete Security Association Database entry
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ipsec_sad_add_del_entry_reply
{
u32 context;
i32 retval;
};
/** \brief IPsec: Update Security Association keys
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sa_id - sa id
@param crypto_key_length - length of crypto_key in bytes
@param crypto_key - crypto keying material
@param integrity_key_length - length of integrity_key in bytes
@param integrity_key - integrity keying material
*/
define ipsec_sa_set_key
{
u32 client_index;
u32 context;
u32 sa_id;
u8 crypto_key_length;
u8 crypto_key[128];
u8 integrity_key_length;
u8 integrity_key[128];
};
/** \brief Reply for IPsec: Update Security Association keys
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ipsec_sa_set_key_reply
{
u32 context;
i32 retval;
};
/** \brief IKEv2: Add/delete profile
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param name - IKEv2 profile name
@param is_add - Add IKEv2 profile if non-zero, else delete
*/
define ikev2_profile_add_del
{
u32 client_index;
u32 context;
u8 name[64];
u8 is_add;
};
/** \brief Reply for IKEv2: Add/delete profile
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ikev2_profile_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief IKEv2: Set IKEv2 profile authentication method
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param name - IKEv2 profile name
@param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
@param is_hex - Authentication data in hex format if non-zero, else string
@param data_len - Authentication data length
@param data - Authentication data (for rsa-sig cert file path)
*/
define ikev2_profile_set_auth
{
u32 client_index;
u32 context;
u8 name[64];
u8 auth_method;
u8 is_hex;
u32 data_len;
u8 data[0];
};
/** \brief Reply for IKEv2: Set IKEv2 profile authentication method
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ikev2_profile_set_auth_reply
{
u32 context;
i32 retval;
};
/** \brief IKEv2: Set IKEv2 profile local/remote identification
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param name - IKEv2 profile name
@param is_local - Identification is local if non-zero, else remote
@param id_type - Identification type
@param data_len - Identification data length
@param data - Identification data
*/
define ikev2_profile_set_id
{
u32 client_index;
u32 context;
u8 name[64];
u8 is_local;
u8 id_type;
u32 data_len;
u8 data[0];
};
/** \brief Reply for IKEv2:
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ikev2_profile_set_id_reply
{
u32 context;
i32 retval;
};
/** \brief IKEv2: Set IKEv2 profile traffic selector parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param name - IKEv2 profile name
@param is_local - Traffic selector is local if non-zero, else remote
@param proto - Traffic selector IP protocol (if zero not relevant)
@param start_port - The smallest port number allowed by traffic selector
@param end_port - The largest port number allowed by traffic selector
@param start_addr - The smallest address included in traffic selector
@param end_addr - The largest address included in traffic selector
*/
define ikev2_profile_set_ts
{
u32 client_index;
u32 context;
u8 name[64];
u8 is_local;
u8 proto;
u16 start_port;
u16 end_port;
u32 start_addr;
u32 end_addr;
};
/** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ikev2_profile_set_ts_reply
{
u32 context;
i32 retval;
};
/** \brief IKEv2: Set IKEv2 local RSA private key
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param key_file - Key file absolute path
*/
define ikev2_set_local_key
{
u32 client_index;
u32 context;
u8 key_file[256];
};
/** \brief Reply for IKEv2: Set IKEv2 local key
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ikev2_set_local_key_reply
{
u32 context;
i32 retval;
};
/** \brief Tell client about a DHCP completion event
@param client_index - opaque cookie to identify the sender
@param pid - client pid registered to receive notification
@param is_ipv6 - if non-zero the address is ipv6, else ipv4
@param host_address - Host IP address
@param router_address - Router IP address
@param host_mac - Host MAC address
*/
define dhcp_compl_event
{
u32 client_index;
u32 pid;
u8 hostname[64];
u8 is_ipv6;
u8 host_address[16];
u8 router_address[16];
u8 host_mac[6];
};
/** \brief Add MAP domains
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param ip6_prefix - Rule IPv6 prefix
@param ip4_prefix - Rule IPv4 prefix
@param ip6_src - MAP domain IPv6 BR address / Tunnel source
@param ip6_prefix_len - Rule IPv6 prefix length
@param ip4_prefix_len - Rule IPv4 prefix length
@param ea_bits_len - Embedded Address bits length
@param psid_offset - Port Set Identifider (PSID) offset
@param psid_length - PSID length
@param is_translation - MAP-E / MAP-T
@param mtu - MTU
*/
define map_add_domain
{
u32 client_index;
u32 context;
u8 ip6_prefix[16];
u8 ip4_prefix[4];
u8 ip6_src[16];
u8 ip6_prefix_len;
u8 ip4_prefix_len;
u8 ip6_src_prefix_len;
u8 ea_bits_len;
u8 psid_offset;
u8 psid_length;
u8 is_translation;
u16 mtu;
};
/** \brief Reply for MAP domain add
@param context - returned sender context, to match reply w/ request
@param index - MAP domain index
@param retval - return code
*/
define map_add_domain_reply
{
u32 context;
u32 index;
i32 retval;
};
/** \brief Delete MAP domain
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param index - MAP Domain index
*/
define map_del_domain
{
u32 client_index;
u32 context;
u32 index;
};
/** \brief Reply for MAP domain del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define map_del_domain_reply
{
u32 context;
i32 retval;
};
/** \brief Add or Delete MAP rule from a domain (Only used for shared IPv4 per subscriber)
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param index - MAP Domain index
@param is_add - If 1 add rule, if 0 delete rule
@param ip6_dst - MAP CE IPv6 address
@param psid - Rule PSID
*/
define map_add_del_rule
{
u32 client_index;
u32 context;
u32 index;
u32 is_add;
u8 ip6_dst[16];
u16 psid;
};
/** \brief Reply for MAP rule add/del
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define map_add_del_rule_reply
{
u32 context;
i32 retval;
};
/** \brief Get list of map domains
@param client_index - opaque cookie to identify the sender
*/
define map_domain_dump
{
u32 client_index;
u32 context;
};
define map_domain_details
{
u32 context;
u32 domain_index;
u8 ip6_prefix[16];
u8 ip4_prefix[4];
u8 ip6_src[16];
u8 ip6_prefix_len;
u8 ip4_prefix_len;
u8 ip6_src_len;
u8 ea_bits_len;
u8 psid_offset;
u8 psid_length;
u8 flags;
u16 mtu;
u8 is_translation;
};
define map_rule_dump
{
u32 client_index;
u32 context;
u32 domain_index;
};
define map_rule_details
{
u32 context;
u8 ip6_dst[16];
u16 psid;
};
/** \brief Request for a single block of summary stats
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define map_summary_stats
{
u32 client_index;
u32 context;
};
/** \brief Reply for map_summary_stats request
@param context - sender context, to match reply w/ request
@param retval - return code for request
@param total_bindings -
@param total_pkts -
@param total_ip4_fragments -
@param total_security_check -
*/
define map_summary_stats_reply
{
u32 context;
i32 retval;
u64 total_bindings;
u64 total_pkts[2];
u64 total_bytes[2];
u64 total_ip4_fragments;
u64 total_security_check[2];
};
/** \brief cop: enable/disable junk filtration features on an interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_inded - desired interface
@param enable_disable - 1 => enable, 0 => disable
*/
define cop_interface_enable_disable
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 enable_disable;
};
/** \brief cop: interface enable/disable junk filtration reply
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define cop_interface_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief cop: enable/disable whitelist filtration features on an interface
Note: the supplied fib_id must match in order to remove the feature!
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface handle, physical interfaces only
@param fib_id - fib identifier for the whitelist / blacklist fib
@param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
@param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
@param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
*/
define cop_whitelist_enable_disable
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 fib_id;
u8 ip4;
u8 ip6;
u8 default_cop;
};
/** \brief cop: interface enable/disable junk filtration reply
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define cop_whitelist_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief get_node_graph - get a copy of the vpp node graph
including the current set of graph arcs.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define get_node_graph
{
u32 client_index;
u32 context;
};
/** \brief get_node_graph_reply
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param reply_in_shmem - result from vlib_node_serialize, in shared
memory. Process with vlib_node_unserialize, remember to switch
heaps and free the result.
*/
define get_node_graph_reply
{
u32 context;
i32 retval;
u64 reply_in_shmem;
};
/** \brief Clear interface statistics
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface to clear statistics
*/
define sw_interface_clear_stats
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief Reply to sw_interface_clear_stats
@param context - sender context which was passed in the request
@param retval - return code of the set flags request
*/
define sw_interface_clear_stats_reply
{
u32 context;
i32 retval;
};
/** \brief IOAM enable : Enable in-band OAM
@param id - profile id
@param trace_ppc - Trace PPC (none/encap/decap)
@param pow_enable - Proof of Work enabled or not flag
@param trace_enable - iOAM Trace enabled or not flag
*/
define ioam_enable
{
u32 client_index;
u32 context;
u16 id;
u8 trace_ppc;
u8 pow_enable;
u8 trace_enable;
u32 node_id;
};
/** \brief iOAM Trace profile add / del response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define ioam_enable_reply
{
u32 context;
i32 retval;
};
/** \brief iOAM disable
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param index - MAP Domain index
*/
define ioam_disable
{
u32 client_index;
u32 context;
u16 id;
};
/** \brief iOAM disable response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define ioam_disable_reply
{
u32 context;
i32 retval;
};
/** \brief Create host-interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param host_if_name - interface name
@param hw_addr - interface MAC
@param use_random_hw_addr - use random generated MAC
*/
define af_packet_create
{
u32 client_index;
u32 context;
u8 host_if_name[64];
u8 hw_addr[6];
u8 use_random_hw_addr;
};
/** \brief Create host-interface response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define af_packet_create_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief Delete host-interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param host_if_name - interface name
*/
define af_packet_delete
{
u32 client_index;
u32 context;
u8 host_if_name[64];
};
/** \brief Delete host-interface response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define af_packet_delete_reply
{
u32 context;
i32 retval;
};
/** \brief Add/del policer
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add policer if non-zero, else delete
@param name - policer name
@param cir - CIR
@param eir - EIR
@param cb - Committed Burst
@param eb - Excess or Peak Burst
@param rate_type - rate type
@param round_type - rounding type
@param type - policer algorithm
@param color_aware - 0=color-blind, 1=color-aware
@param conform_action_type - conform action type
@param conform_dscp - DSCP for conform mar-and-transmit action
@param exceed_action_type - exceed action type
@param exceed_dscp - DSCP for exceed mar-and-transmit action
@param violate_action_type - violate action type
@param violate_dscp - DSCP for violate mar-and-transmit action
*/
define policer_add_del
{
u32 client_index;
u32 context;
u8 is_add;
u8 name[64];
u32 cir;
u32 eir;
u64 cb;
u64 eb;
u8 rate_type;
u8 round_type;
u8 type;
u8 color_aware;
u8 conform_action_type;
u8 conform_dscp;
u8 exceed_action_type;
u8 exceed_dscp;
u8 violate_action_type;
u8 violate_dscp;
};
/** \brief Add/del policer response
@param context - sender context, to match reply w/ request
@param retval - return value for request
@param policer_index - for add, returned index of the new policer
*/
define policer_add_del_reply
{
u32 context;
i32 retval;
u32 policer_index;
};
/** \brief Get list of policers
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param match_name_valid - if 0 request all policers otherwise use match_name
@param match_name - policer name
*/
define policer_dump
{
u32 client_index;
u32 context;
u8 match_name_valid;
u8 match_name[64];
};
/** \brief Policer operational state response.
@param context - sender context, to match reply w/ request
@param name - policer name
@param cir - CIR
@param eir - EIR
@param cb - Committed Burst
@param eb - Excess or Peak Burst
@param rate_type - rate type
@param round_type - rounding type
@param type - policer algorithm
@param conform_action_type - conform action type
@param conform_dscp - DSCP for conform mar-and-transmit action
@param exceed_action_type - exceed action type
@param exceed_dscp - DSCP for exceed mar-and-transmit action
@param violate_action_type - violate action type
@param violate_dscp - DSCP for violate mar-and-transmit action
@param single_rate - 1 = single rate policer, 0 = two rate policer
@param color_aware - for hierarchical policing
@param scale - power-of-2 shift amount for lower rates
@param cir_tokens_per_period - number of tokens for each period
@param pir_tokens_per_period - number of tokens for each period for 2-rate policer
@param current_limit - current limit
@param current_bucket - current bucket
@param extended_limit - extended limit
@param extended_bucket - extended bucket
@param last_update_time - last update time
*/
define policer_details
{
u32 context;
u8 name[64];
u32 cir;
u32 eir;
u64 cb;
u64 eb;
u8 rate_type;
u8 round_type;
u8 type;
u8 conform_action_type;
u8 conform_dscp;
u8 exceed_action_type;
u8 exceed_dscp;
u8 violate_action_type;
u8 violate_dscp;
u8 single_rate;
u8 color_aware;
u32 scale;
u32 cir_tokens_per_period;
u32 pir_tokens_per_period;
u32 current_limit;
u32 current_bucket;
u32 extended_limit;
u32 extended_bucket;
u64 last_update_time;
};
/** \brief Set/unset policer classify interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface to set/unset policer classify
@param ip4_table_index - ip4 classify table index (~0 for skip)
@param ip6_table_index - ip6 classify table index (~0 for skip)
@param l2_table_index - l2 classify table index (~0 for skip)
@param is_add - Set if non-zero, else unset
Note: User is recommeneded to use just one valid table_index per call.
(ip4_table_index, ip6_table_index, or l2_table_index)
*/
define policer_classify_set_interface
{
u32 client_index;
u32 context;
u32 sw_if_index;
u32 ip4_table_index;
u32 ip6_table_index;
u32 l2_table_index;
u8 is_add;
};
/** \brief Set/unset policer classify interface response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define policer_classify_set_interface_reply
{
u32 context;
i32 retval;
};
/** \brief Get list of policer classify interfaces and tables
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param type - classify table type
*/
define policer_classify_dump
{
u32 client_index;
u32 context;
u8 type;
};
/** \brief Policer iclassify operational state response.
@param context - sender context, to match reply w/ request
@param sw_if_index - software interface index
@param table_index - classify table index
*/
define policer_classify_details
{
u32 context;
u32 sw_if_index;
u32 table_index;
};
/** \brief Create netmap
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param netmap_if_name - interface name
@param hw_addr - interface MAC
@param use_random_hw_addr - use random generated MAC
@param is_pipe - is pipe
@param is_master - 0=slave, 1=master
*/
define netmap_create
{
u32 client_index;
u32 context;
u8 netmap_if_name[64];
u8 hw_addr[6];
u8 use_random_hw_addr;
u8 is_pipe;
u8 is_master;
};
/** \brief Create netmap response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define netmap_create_reply
{
u32 context;
i32 retval;
};
/** \brief Delete netmap
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param netmap_if_name - interface name
*/
define netmap_delete
{
u32 client_index;
u32 context;
u8 netmap_if_name[64];
};
/** \brief Delete netmap response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define netmap_delete_reply
{
u32 context;
i32 retval;
};
/** \brief Dump mpls gre tunnel table
@param client_index - opaque cookie to identify the sender
@param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
*/
define mpls_gre_tunnel_dump
{
u32 client_index;
u32 context;
i32 tunnel_index;
};
/** \brief mpls gre tunnel operational state response
@param tunnel_index - gre tunnel identifier
@param intfc_address - interface ipv4 addr
@param mask_width - interface ipv4 addr mask
@param hw_if_index - interface id
@param l2_only -
@param tunnel_src - tunnel source ipv4 addr
@param tunnel_dst - tunnel destination ipv4 addr
@param outer_fib_index - gre tunnel identifier
@param encap_index - reference to mpls label table
@param nlabels - number of resolved labels
@param labels - resolved labels
*/
define mpls_gre_tunnel_details
{
u32 context;
u32 tunnel_index;
u32 intfc_address;
u32 inner_fib_index;
u32 mask_width;
u32 encap_index;
u32 hw_if_index;
u8 l2_only;
u32 tunnel_src;
u32 tunnel_dst;
u32 outer_fib_index;
u32 nlabels;
u32 labels[nlabels];
};
/** \brief Dump mpls eth tunnel table
@param client_index - opaque cookie to identify the sender
@param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
*/
define mpls_eth_tunnel_dump
{
u32 client_index;
u32 context;
i32 tunnel_index;
};
/** \brief mpls eth tunnel operational state response
@param tunnel_index - eth tunnel identifier
@param intfc_address - interface ipv4 addr
@param mask_width - interface ipv4 addr mask
@param hw_if_index - interface id
@param l2_only -
@param tunnel_dst_mac -
@param tx_sw_if_index -
@param encap_index - reference to mpls label table
@param nlabels - number of resolved labels
@param labels - resolved labels
*/
define mpls_eth_tunnel_details
{
u32 context;
u32 tunnel_index;
u32 intfc_address;
u32 inner_fib_index;
u32 mask_width;
u32 encap_index;
u32 hw_if_index;
u8 l2_only;
u8 tunnel_dst_mac[6];
u32 tx_sw_if_index;
u32 nlabels;
u32 labels[nlabels];
};
/** \brief Dump mpls fib table
@param client_index - opaque cookie to identify the sender
@param fib_index - mpls fib entry identifier or -1 in case of all entries
*/
define mpls_fib_encap_dump
{
u32 client_index;
u32 context;
};
/** \brief mpls fib encap table response
@param fib_index - fib table id
@param dest - destination ipv4 addr
@param s_bit -
@param entry_index - reference to mpls label table
@param nlabels - number of resolved labels
@param labels - resolved labels
*/
define mpls_fib_encap_details
{
u32 context;
u32 fib_index;
u32 entry_index;
u32 dest;
u32 s_bit;
u32 nlabels;
u32 labels[nlabels];
};
/** \brief Dump mpls fib decap table
@param client_index - opaque cookie to identify the sender
@param fib_index - mpls fib entry identifier or -1 in case of all entries
*/
define mpls_fib_decap_dump
{
u32 client_index;
u32 context;
};
/** \brief mpls fib decap table response
@param fib_index - fib table id
@param entry_index - reference to mpls label table
@param dest - destination ipv4 addr
@param s_bit -
@param label - mpls labels
@param rx_table_id - rx fib id
@param tx_table_id - tx fib id
@param swif_tag -
*/
define mpls_fib_decap_details
{
u32 context;
u32 fib_index;
u32 entry_index;
u32 dest;
u32 s_bit;
u32 label;
u32 rx_table_id;
u32 tx_table_id;
u8 swif_tag[8];
};
/** \brief Classify get table IDs request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define classify_table_ids
{
u32 client_index;
u32 context;
};
/** \brief Reply for classify get table IDs request
@param context - sender context which was passed in the request
@param count - number of ids returned in response
@param ids - array of classify table ids
*/
define classify_table_ids_reply
{
u32 context;
i32 retval;
u32 count;
u32 ids[count];
};
/** \brief Classify table ids by interface index request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - index of the interface
*/
define classify_table_by_interface
{
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief Reply for classify table id by interface index request
@param context - sender context which was passed in the request
@param count - number of ids returned in response
@param sw_if_index - index of the interface
@param l2_table_id - l2 classify table index
@param ip4_table_id - ip4 classify table index
@param ip6_table_id - ip6 classify table index
*/
define classify_table_by_interface_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
u32 l2_table_id;
u32 ip4_table_id;
u32 ip6_table_id;
};
/** \brief Classify table info
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param table_id - classify table index
*/
define classify_table_info
{
u32 client_index;
u32 context;
u32 table_id;
};
/** \brief Reply for classify table info request
@param context - sender context which was passed in the request
@param count - number of ids returned in response
@param table_id - classify table index
@param nbuckets - number of buckets when adding a table
@param match_n_vectors - number of match vectors
@param skip_n_vectors - number of skip_n_vectors
@param active_sessions - number of sessions (active entries)
@param next_table_index - index of next table
@param miss_next_index - index of miss table
@param mask[] - match mask
*/
define classify_table_info_reply
{
u32 context;
i32 retval;
u32 table_id;
u32 nbuckets;
u32 match_n_vectors;
u32 skip_n_vectors;
u32 active_sessions;
u32 next_table_index;
u32 miss_next_index;
u32 mask_length;
u8 mask[mask_length];
};
/** \brief Classify sessions dump request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param table_id - classify table index
*/
define classify_session_dump
{
u32 client_index;
u32 context;
u32 table_id;
};
/** \brief Reply for classify table session dump request
@param context - sender context which was passed in the request
@param count - number of ids returned in response
@param table_id - classify table index
@param hit_next_index - hit_next_index of session
@param opaque_index - for add, opaque_index of session
@param advance - advance value of session
@param match[] - match value for session
*/
define classify_session_details
{
u32 context;
i32 retval;
u32 table_id;
u32 hit_next_index;
i32 advance;
u32 opaque_index;
u32 match_length;
u8 match[match_length];
};
/** \brief Configure IPFIX exporter process request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param collector_address - address of IPFIX collector
@param collector_port - port of IPFIX collector
@param src_address - address of IPFIX exporter
@param vrf_id - VRF / fib table ID
@param path_mtu - Path MTU between exporter and collector
@param template_interval - number of seconds after which to resend template
@param udp_checksum - UDP checksum calculation enable flag
*/
define set_ipfix_exporter
{
u32 client_index;
u32 context;
u8 collector_address[16];
u16 collector_port;
u8 src_address[16];
u32 vrf_id;
u32 path_mtu;
u32 template_interval;
u8 udp_checksum;
};
/** \brief Reply to IPFIX exporter configure request
@param context - sender context which was passed in the request
*/
define set_ipfix_exporter_reply
{
u32 context;
i32 retval;
};
/** \brief IPFIX exporter dump request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define ipfix_exporter_dump
{
u32 client_index;
u32 context;
};
/** \brief Reply to IPFIX exporter dump request
@param context - sender context which was passed in the request
@param collector_address - address of IPFIX collector
@param collector_port - port of IPFIX collector
@param src_address - address of IPFIX exporter
@param fib_index - fib table index
@param path_mtu - Path MTU between exporter and collector
@param template_interval - number of seconds after which to resend template
@param udp_checksum - UDP checksum calculation enable flag
*/
define ipfix_exporter_details
{
u32 context;
u8 collector_address[16];
u16 collector_port;
u8 src_address[16];
u32 vrf_id;
u32 path_mtu;
u32 template_interval;
u8 udp_checksum;
};
/** \brief IPFIX classify stream configure request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param domain_id - domain ID reported in IPFIX messages for classify stream
@param src_port - source port of UDP session for classify stream
*/
define set_ipfix_classify_stream {
u32 client_index;
u32 context;
u32 domain_id;
u16 src_port;
};
/** \brief IPFIX classify stream configure response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define set_ipfix_classify_stream_reply {
u32 context;
i32 retval;
};
/** \brief IPFIX classify stream dump request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define ipfix_classify_stream_dump {
u32 client_index;
u32 context;
};
/** \brief Reply to IPFIX classify stream dump request
@param context - sender context, to match reply w/ request
@param domain_id - domain ID reported in IPFIX messages for classify stream
@param src_port - source port of UDP session for classify stream
*/
define ipfix_classify_stream_details {
u32 context;
u32 domain_id;
u16 src_port;
};
/** \brief IPFIX add or delete classifier table request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param table_id - classifier table ID
@param ip_version - version of IP used in the classifier table
@param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
*/
define ipfix_classify_table_add_del {
u32 client_index;
u32 context;
u32 table_id;
u8 ip_version;
u8 transport_protocol;
u8 is_add;
};
/** \brief IPFIX add classifier table response
@param context - sender context which was passed in the request
*/
define ipfix_classify_table_add_del_reply {
u32 context;
i32 retval;
};
/** \brief IPFIX classify tables dump request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define ipfix_classify_table_dump {
u32 client_index;
u32 context;
};
/** \brief Reply to IPFIX classify tables dump request
@param context - sender context, to match reply w/ request
@param table_id - classifier table ID
@param ip_version - version of IP used in the classifier table
@param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
*/
define ipfix_classify_table_details {
u32 context;
u32 table_id;
u8 ip_version;
u8 transport_protocol;
};
/** \brief Query relative index via node names
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param node_name - name of node to find relative index from
@param next_name - next node from node_name to find relative index of
*/
define get_next_index
{
u32 client_index;
u32 context;
u8 node_name[64];
u8 next_name[64];
};
/** \brief Reply for get next node index
@param context - sender context which was passed in the request
@param retval - return value
@param next_index - index of the next_node
*/
define get_next_index_reply
{
u32 context;
i32 retval;
u32 next_index;
};
/** \brief PacketGenerator create interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param interface_id - interface index
*/
define pg_create_interface
{
u32 client_index;
u32 context;
u32 interface_id;
};
/** \brief PacketGenerator create interface response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define pg_create_interface_reply
{
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief PacketGenerator capture packets on given interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param interface_id - pg interface index
@param is_enabled - 1 if enabling streams, 0 if disabling
@param count - number of packets to be captured
@param pcap_file - pacp file name to store captured packets
*/
define pg_capture
{
u32 client_index;
u32 context;
u32 interface_id;
u8 is_enabled;
u32 count;
u32 pcap_name_length;
u8 pcap_file_name[pcap_name_length];
};
/** \brief PacketGenerator capture packets response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define pg_capture_reply
{
u32 context;
i32 retval;
};
/** \brief Enable / disable packet generator request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_enabled - 1 if enabling streams, 0 if disabling
@param stream - stream name to be enable/disabled, if not specified handle all streams
*/
define pg_enable_disable
{
u32 client_index;
u32 context;
u8 is_enabled;
u32 stream_name_length;
u8 stream_name[stream_name_length];
};
/** \brief Reply for enable / disable packet generator
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define pg_enable_disable_reply
{
u32 context;
i32 retval;
};
/** \brief Configure IP source and L4 port-range check
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_ip6 - 1 if source address type is IPv6
@param is_add - 1 if add, 0 if delete
@param mask_length - mask length for address entry
@param address - array of address bytes
@param number_of_ranges - length of low_port and high_port arrays (must match)
@param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
@param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
@param vrf_id - fib table/vrf id to associate the source and port-range check with
@note To specify a single port set low_port and high_port entry the same
*/
define ip_source_and_port_range_check_add_del
{
u32 client_index;
u32 context;
u8 is_ipv6;
u8 is_add;
u8 mask_length;
u8 address[16];
u8 number_of_ranges;
u16 low_ports[32];
u16 high_ports[32];
u32 vrf_id;
};
/** \brief Configure IP source and L4 port-range check reply
@param context - returned sender context, to match reply w/ request
@param retval - return code
*/
define ip_source_and_port_range_check_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Set interface source and L4 port-range request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param interface_id - interface index
@param tcp_vrf_id - VRF associated with source and TCP port-range check
@param udp_vrf_id - VRF associated with source and TCP port-range check
*/
define ip_source_and_port_range_check_interface_add_del
{
u32 client_index;
u32 context;
u8 is_add;
u32 sw_if_index;
u32 tcp_in_vrf_id;
u32 tcp_out_vrf_id;
u32 udp_in_vrf_id;
u32 udp_out_vrf_id;
};
/** \brief Set interface source and L4 port-range response
@param context - sender context, to match reply w/ request
@param retval - return value for request
*/
define ip_source_and_port_range_check_interface_add_del_reply
{
u32 context;
i32 retval;
};
/** \brief Add / del ipsec gre tunnel request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param local_sa_id - local SA id
@param remote_sa_id - remote SA id
@param is_add - 1 if adding the tunnel, 0 if deleting
@param src_address - tunnel source address
@param dst_address - tunnel destination address
*/
define ipsec_gre_add_del_tunnel {
u32 client_index;
u32 context;
u32 local_sa_id;
u32 remote_sa_id;
u8 is_add;
u8 src_address[4];
u8 dst_address[4];
};
/** \brief Reply for add / del ipsec gre tunnel request
@param context - returned sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index of the new ipsec gre tunnel
*/
define ipsec_gre_add_del_tunnel_reply {
u32 context;
i32 retval;
u32 sw_if_index;
};
/** \brief Dump ipsec gre tunnel table
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
*/
define ipsec_gre_tunnel_dump {
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief mpls gre tunnel operational state response
@param context - returned sender context, to match reply w/ request
@param sw_if_index - software index of the ipsec gre tunnel
@param local_sa_id - local SA id
@param remote_sa_id - remote SA id
@param src_address - tunnel source address
@param dst_address - tunnel destination address
*/
define ipsec_gre_tunnel_details {
u32 context;
u32 sw_if_index;
u32 local_sa_id;
u32 remote_sa_id;
u8 src_address[4];
u8 dst_address[4];
};
/** \brief Delete sub interface request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - sw index of the interface that was created by create_subif
*/
define delete_subif {
u32 client_index;
u32 context;
u32 sw_if_index;
};
/** \brief Delete sub interface response
@param context - sender context, to match reply w/ request
@param retval - return code for the request
*/
define delete_subif_reply {
u32 context;
i32 retval;
};
|