Skip to content

Commit

Permalink
bragi: add Wireshark dissector generator
Browse files Browse the repository at this point in the history
  • Loading branch information
no92 committed Feb 21, 2025
1 parent dc5d934 commit 0af88d2
Show file tree
Hide file tree
Showing 3 changed files with 705 additions and 4 deletions.
18 changes: 14 additions & 4 deletions bin/bragi
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,23 @@ import argparse

from bragi.parser import CompilationUnit
from bragi.cpp_generator import CodeGenerator as CppCodeGenerator
from bragi.wireshark_generator import CodeGenerator as WiresharkCodeGenerator

parser = argparse.ArgumentParser(prog = 'bragi', description = 'Bragi IDL to C++ compiler')
parser.add_argument('input', nargs='+', help='input file', type=argparse.FileType('r'))
parser.add_argument('-o', '--output', help='output file', type=str)
parser.add_argument('-l', '--lib', nargs=1, help='C++ library to use', choices=['frigg', 'stdc++'], default='libc++')
parser.add_argument('--protobuf', help='Generate protobuf compatibilty methods (SerializeAsString/ParseFromArray)', action='store_true')
subparsers = parser.add_subparsers(required=True, dest='language')

cpp_parser = subparsers.add_parser('cpp')
cpp_parser.add_argument('-l', '--lib', nargs=1, help='C++ library to use', choices=['frigg', 'stdc++'], default='libc++')
cpp_parser.add_argument('--protobuf', help='Generate protobuf compatibilty methods (SerializeAsString/ParseFromArray)', action='store_true')

ws_parser = subparsers.add_parser('wireshark')

args = parser.parse_args()

inputs = []
output = args.output
lib = args.lib[0]

for source in args.input:
code = source.read()
Expand All @@ -23,7 +29,11 @@ for source in args.input:
unit.verify()
inputs.append(unit)

generator = CppCodeGenerator(inputs, lib, protobuf_compat = args.protobuf)
if(args.language == "cpp"):
lib = args.lib[0]
generator = CppCodeGenerator(inputs, lib, protobuf_compat = args.protobuf)
else:
generator = WiresharkCodeGenerator(inputs)

with open(output, "w") as o:
o.write(generator.generate())
Loading

0 comments on commit 0af88d2

Please sign in to comment.