FD.io VPP  v21.06-1-gbb7418cf9
Vector Packet Processing
pnat.api
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 option version = "0.1.1";
17 
18 import "vnet/interface_types.api";
19 import "vnet/ip/ip_types.api";
20 
22 {
23  PNAT_SA = 0x1,
24  PNAT_DA = 0x2,
25  PNAT_SPORT = 0x4,
26  PNAT_DPORT = 0x8,
29 };
30 
32 {
36 };
37 
38 typedef pnat_match_tuple
39 {
40  vl_api_ip4_address_t src;
41  vl_api_ip4_address_t dst;
42  vl_api_ip_proto_t proto;
45  vl_api_pnat_mask_t mask;
46 };
47 
48 typedef pnat_rewrite_tuple
49 {
50  vl_api_ip4_address_t src;
51  vl_api_ip4_address_t dst;
52  u16 sport;
53  u16 dport;
54  vl_api_pnat_mask_t mask; // needed?
58 };
59 
60 autoendian define pnat_binding_add
61 {
64  vl_api_pnat_match_tuple_t match;
65  vl_api_pnat_rewrite_tuple_t rewrite;
66 };
67 
68 autoendian define pnat_binding_add_reply
69 {
73 };
74 
75 autoendian autoreply define pnat_binding_del
76 {
80 };
81 
82 autoendian autoreply define pnat_binding_attach
83 {
86  vl_api_interface_index_t sw_if_index;
87  vl_api_pnat_attachment_point_t attachment;
89 };
90 
91 autoendian autoreply define pnat_binding_detach
92 {
95  vl_api_interface_index_t sw_if_index;
96  vl_api_pnat_attachment_point_t attachment;
98 };
99 
101  rpc pnat_bindings_get returns pnat_bindings_get_reply
102  stream pnat_bindings_details;
103  rpc pnat_interfaces_get returns pnat_interfaces_get_reply
105 };
106 
107 define pnat_bindings_get
108 {
112 };
113 
114 define pnat_bindings_get_reply
115 {
119 };
120 
121 define pnat_bindings_details
122 {
124  vl_api_pnat_match_tuple_t match;
125  vl_api_pnat_rewrite_tuple_t rewrite;
126 };
127 
128 define pnat_interfaces_get
129 {
133 };
134 
135 define pnat_interfaces_get_reply
136 {
140 };
141 
143 {
145  vl_api_interface_index_t sw_if_index;
146  bool enabled[2]; /* PNAT_ATTACHMENT_POINT_MAX */
147  vl_api_pnat_mask_t lookup_mask[2]; /* PNAT_ATTACHMENT_POINT_MAX */
148 };
149 
150 counters pnat {
151  none {
152  severity info;
153  type counter64;
154  units "packets";
155  description "successfully rewritten";
156  };
157 
159  severity error;
161  units "packets";
162  description "rewrite failed";
163  };
165  severity info;
166  type counter64;
167  units "packets";
168  description "packet too short for rewrite";
169  };
170 };
171 
173  "/err/pnat-input" "pnat";
174  "/err/pnat-output" "pnat";
175 };
u8 from_offset
Definition: pnat.api:55
vl_api_pnat_attachment_point_t attachment
Definition: pnat.api:87
u8 clear_offset
Definition: pnat.api:57
pnat_mask
Definition: pnat.api:21
vl_api_pnat_match_tuple_t match
Definition: pnat.api:124
vl_api_address_t src
Definition: gre.api:54
paths
Definition: pnat.api:172
unsigned char u8
Definition: types.h:56
vl_api_ip_proto_t proto
Definition: pnat.api:42
unsigned int u32
Definition: types.h:88
int pnat_binding_detach(u32 sw_if_index, pnat_attachment_point_t attachment, u32 binding_index)
Definition: pnat.c:364
typedef pnat_rewrite_tuple
Definition: pnat.api:49
tooshort
Definition: pnat.api:164
vl_api_interface_index_t sw_if_index
Definition: pnat.api:145
Definition: pnat.api:23
vl_api_interface_index_t sw_if_index
Definition: pnat.api:95
vl_api_fib_path_type_t type
Definition: fib_types.api:123
Definition: cJSON.c:88
rpc pnat_interfaces_get returns pnat_interfaces_get_reply stream pnat_interfaces_details
Definition: pnat.api:104
unsigned short u16
Definition: types.h:57
vl_api_interface_index_t sw_if_index
Definition: pnat.api:86
pnat_attachment_point
Definition: pnat.api:31
u16 sport
Definition: pnat.api:43
vl_api_pnat_attachment_point_t attachment
Definition: pnat.api:96
typedef pnat_match_tuple
Definition: pnat.api:39
vl_api_pnat_mask_t mask
Definition: pnat.api:45
u16 dport
Definition: pnat.api:44
signed int i32
Definition: types.h:77
type counter64
Definition: pnat.api:160
counters pnat
Definition: pnat.api:150
int pnat_binding_del(u32 index)
Definition: pnat.c:392
int pnat_binding_add(pnat_match_tuple_t *match, pnat_rewrite_tuple_t *rewrite, u32 *index)
Definition: pnat.c:271
Definition: pnat.api:24
vl_api_pnat_rewrite_tuple_t rewrite
Definition: pnat.api:125
vl_api_ip4_address_t dst
Definition: pnat.api:41
option version
Definition: pnat.api:16
vl_api_pnat_rewrite_tuple_t rewrite
Definition: pnat.api:65
vl_api_pnat_match_tuple_t match
Definition: pnat.api:64
u8 to_offset
Definition: pnat.api:56
service
Definition: pnat.api:100
rewrite
Definition: pnat.api:158
int pnat_binding_attach(u32 sw_if_index, pnat_attachment_point_t attachment, u32 binding_index)
Definition: pnat.c:329