aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Vinciguerra <pvinci@vinciconsulting.com>2019-08-06 19:58:24 -0400
committerDave Wallace <dwallacelf@gmail.com>2019-08-19 14:38:12 +0000
commitff47fb64569ddbd65ef34c33e7cafc030c69a34e (patch)
tree5699f37e901ae2d32388509c8d291edc0e3748d2
parentc458f5c09a21cc905aa1b53eda30736e52426418 (diff)
vppapigen map: raise ValueError when fieldname is python keyword
When working on the lb api, one of the field names was chosen as 'as' (application server). Since 'as' is a python keyword, the field was renamed to _1 in vpp_papi. This changeset instead fails early with a descriptive message, hopefully saving others time troubleshooting the issue. ValueError: Fieldname 'as' is a python keyword and is not accessible via the python API. Type: feature Change-Id: Ib048d97de0e392645540092e356cf8989848c947 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
-rw-r--r--src/plugins/map/map.api10
-rw-r--r--src/plugins/map/map_api.c2
-rwxr-xr-xsrc/tools/vppapigen/vppapigen.py4
3 files changed, 10 insertions, 6 deletions
diff --git a/src/plugins/map/map.api b/src/plugins/map/map.api
index f751f5c9ef7..b15b38a3d19 100644
--- a/src/plugins/map/map.api
+++ b/src/plugins/map/map.api
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-option version = "3.1.0";
+option version = "4.0.0";
import "vnet/ip/ip_types.api";
@@ -281,19 +281,19 @@ autoreply define map_param_set_security_check
/** \brief Set MAP traffic class parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param copy - 1 = copy packet class/TOS field, 0 = use class instead
- @param class - class field value when copy == 0
+ @param copy - 1 = copy packet class/TOS field, 0 = use tc_class instead
+ @param tc_class - class field value when copy == 0
*/
autoreply define map_param_set_traffic_class
{
u32 client_index;
u32 context;
bool copy;
- u8 class;
+ u8 tc_class;
};
-/** \brief Set MAP TCP parammeters
+/** \brief Set MAP TCP parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@parma tcp_mss - TCP MSS clamping value
diff --git a/src/plugins/map/map_api.c b/src/plugins/map/map_api.c
index 4a0834d786b..1e50ba1b714 100644
--- a/src/plugins/map/map_api.c
+++ b/src/plugins/map/map_api.c
@@ -523,7 +523,7 @@ static void
vl_api_map_param_set_traffic_class_reply_t *rmp;
int rv;
- rv = map_param_set_traffic_class (mp->copy, mp->class);
+ rv = map_param_set_traffic_class (mp->copy, mp->tc_class);
REPLY_MACRO (VL_API_MAP_PARAM_SET_TRAFFIC_CLASS_REPLY);
}
diff --git a/src/tools/vppapigen/vppapigen.py b/src/tools/vppapigen/vppapigen.py
index 8ae991c9c95..52ffb6a18f1 100755
--- a/src/tools/vppapigen/vppapigen.py
+++ b/src/tools/vppapigen/vppapigen.py
@@ -5,6 +5,7 @@ import ply.lex as lex
import ply.yacc as yacc
import sys
import argparse
+import keyword
import logging
import binascii
import os
@@ -293,6 +294,9 @@ class Field():
def __init__(self, fieldtype, name, limit=None):
self.type = 'Field'
self.fieldtype = fieldtype
+ if name in keyword.kwlist:
+ raise ValueError("Fieldname {!r} is a python keyword and is not "
+ "accessible via the python API. ".format(name))
self.fieldname = name
self.limit = limit