From 0eb83f484cc74b7ab4e26f6811a3e98442a25e7d Mon Sep 17 00:00:00 2001 From: Klement Sekera Date: Thu, 2 Dec 2021 16:36:34 +0000 Subject: api: improve REPLY_MACRO safety Improve vppapigen to generate per-message #define indicating whether said message is dynamically sized (due to VLA or string) or not. Use these #defines in REPLY_MACROs to prevent improper usage. Fix existing improper REPLY_MACRO* usage. Type: improvement Change-Id: Ia77aaf9f6cf3ed68ea21075a4cc8deda78a68651 Signed-off-by: Klement Sekera --- src/tools/vppapigen/vppapigen_c.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/tools/vppapigen') diff --git a/src/tools/vppapigen/vppapigen_c.py b/src/tools/vppapigen/vppapigen_c.py index d0f63fbdb0c..1e18a83e65e 100644 --- a/src/tools/vppapigen/vppapigen_c.py +++ b/src/tools/vppapigen/vppapigen_c.py @@ -24,6 +24,7 @@ VAT2 tests. ''' import datetime +import itertools import os import time import sys @@ -1256,7 +1257,7 @@ def generate_include_types(s, module, stream): filename = i.filename.replace('plugins/', '') write('#include <{}_types.h>\n'.format(filename)) - for o in s['types'] + s['Define']: + for o in itertools.chain(s['types'], s['Define']): tname = o.__class__.__name__ if tname == 'Using': if 'length' in o.alias: @@ -1315,6 +1316,7 @@ def generate_include_types(s, module, stream): .format(b, o.name)) write('} vl_api_%s_t;\n' % o.name) + write(f'#define VL_API_{o.name.upper()}_IS_CONSTANT_SIZE ({0 if o.vla else 1})\n\n') for t in s['Define']: write('#define VL_API_{ID}_CRC "{n}_{crc:08x}"\n' -- cgit 1.2.3-korg