From d1c75063daf9466a7ef10beed9c9e58245d3380e Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 9 Nov 2022 17:45:19 +0000 Subject: vapi: write enumflag types to vapi headers Type: fix Fixes: a51f9b3747 Some IPsec message type definitions were not being written to ipsec.api.vapi.h. These include ipsec_sad_entry_add_del_v3 and ipsec_sad_entry_add. The cause appears to be that tunnel_flags, which is defined in tunnel_types.api is a special case of enum called an enumflag. These do not appear to have been handled in the code that generates the vapi header files. This patch adds processing of enumflag objects for vapi. Change-Id: Ie506c4fcb5a07fe97a330ba11c252d1df98adfd9 Signed-off-by: Matthew Smith --- src/vpp-api/vapi/fake.api.json | 2 ++ src/vpp-api/vapi/vapi_json_parser.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/vpp-api/vapi/fake.api.json b/src/vpp-api/vapi/fake.api.json index 24c9f4dbfa1..f7238c468fa 100644 --- a/src/vpp-api/vapi/fake.api.json +++ b/src/vpp-api/vapi/fake.api.json @@ -10,6 +10,8 @@ }, "enums" : [ ], + "enumflags" : [ + ], "unions" : [ ], "types" : [ diff --git a/src/vpp-api/vapi/vapi_json_parser.py b/src/vpp-api/vapi/vapi_json_parser.py index a323f15e7b6..4f29f95c6e9 100644 --- a/src/vpp-api/vapi/vapi_json_parser.py +++ b/src/vpp-api/vapi/vapi_json_parser.py @@ -324,6 +324,7 @@ class JsonParser(object): self.services = {} self.messages = {} self.enums = {} + self.enumflags = {} self.unions = {} self.aliases = {} self.types = { @@ -391,6 +392,14 @@ class JsonParser(object): self.enums[enum.name] = enum self.logger.debug("Parsed enum: %s" % enum) self.enums_by_json[path].append(enum) + for e in j["enumflags"]: + name = e[0] + value_pairs = e[1:-1] + enumtype = self.types[e[-1]["enumtype"]] + enum = self.enum_class(name, value_pairs, enumtype) + self.enums[enum.name] = enum + self.logger.debug("Parsed enumflag: %s" % enum) + self.enums_by_json[path].append(enum) exceptions = [] progress = 0 last_progress = 0 @@ -485,6 +494,8 @@ class JsonParser(object): return self.types[name] elif name in self.enums: return self.enums[name] + elif name in self.enumflags: + return self.enumflags[name] elif name in self.unions: return self.unions[name] elif name in self.aliases: @@ -493,6 +504,8 @@ class JsonParser(object): return self.types[mundane_name] elif mundane_name in self.enums: return self.enums[mundane_name] + elif mundane_name in self.enumflags: + return self.enumflags[mundane_name] elif mundane_name in self.unions: return self.unions[mundane_name] elif mundane_name in self.aliases: -- cgit 1.2.3-korg