self.name = name
self.flags = flags
self.block = block
- self.crc = str(block).encode()
self.dont_trace = False
self.manual_print = False
self.manual_endian = False
self.autoreply = False
self.singular = False
+ self.options = {}
for f in flags:
if f == 'dont_trace':
self.dont_trace = True
if isinstance(b, Option):
if b[1] == 'singular' and b[2] == 'true':
self.singular = True
+ else:
+ self.options[b.option] = b.value
block.remove(b)
+
self.vla = vla_is_last_check(name, block)
+ self.crc = str(block).encode()
def __repr__(self):
return self.name + str(self.flags) + str(self.block)
for o in objs:
tname = o.__class__.__name__
try:
- crc = binascii.crc32(o.crc, crc)
+ crc = binascii.crc32(o.crc, crc) & 0xffffffff
except AttributeError:
pass
if isinstance(o, Define):
if o.autoreply:
s[tname].append(self.autoreply_block(o.name))
elif isinstance(o, Option):
- s[tname][o[1]] = o[2]
+ s[tname][o.option] = o.value
elif type(o) is list:
for o2 in o:
if isinstance(o2, Service):
def foldup_crcs(s):
for f in s:
f.crc = foldup_blocks(f.block,
- binascii.crc32(f.crc))
+ binascii.crc32(f.crc) & 0xffffffff)
#
cliparser = argparse.ArgumentParser(description='VPP API generator')
cliparser.add_argument('--pluginpath', default=""),
cliparser.add_argument('--includedir', action='append'),
+ cliparser.add_argument('--outputdir', action='store'),
cliparser.add_argument('--input',
type=argparse.FileType('r', encoding='UTF-8'),
default=sys.stdin)
.format(module_path, err))
return 1
- result = plugin.run(filename, s)
+ result = plugin.run(args, filename, s)
if result:
print(result, file=args.output)
else: