def create_protos(): """Create a Protocol instance with some fields.""" dissector.Protocol.protocols = {} conf = Config('tester') conf.id = [25,] conf.description = 'This is a test' rules = [Trailer(conf, {'name': 'missing', 'member': 'missing', 'size': 0}), Trailer(conf, {'name': 'simple', 'count': 1, 'size': 4}), Trailer(conf, {'name': 'bur', 'count': 3, 'size': 8}), Trailer(conf, {'name': 'ber', 'member': 'count'})] proto, diss = dissector.Protocol.create_dissector('tester', None, conf) diss.add_field(Field('one', 'float', 4, 0, Platform.big)) diss.add_field(Field('range', 'float', 4, 0, Platform.big)) diss.children[-1].set_range_validation(0, 10) field = Field('array', 'float', 4, 0, Platform.big) diss.add_field(ArrayField.create([1, 2, 3], field)) field = Field('str', 'string', 30, 0, Platform.big) diss.add_field(ArrayField.create([2], field)) diss.add_field(Field('count', 'int32', 4, 0, Platform.big)) diss.push_modifiers() yield proto dissector.Protocol.protocols = {} del proto, diss
def create_array_field(): """Create a Protocol instance with some fields.""" proto, diss = dissector.Protocol.create_dissector('test') field = Field('arr', 'float', 4, 0, Platform.big) diss.add_field(ArrayField.create([2, 3], field)) field = Field('str', 'string', 30, 0, Platform.big) diss.add_field(ArrayField.create([2], field)) diss.push_modifiers() yield diss.children[0], diss.children[1] dissector.Protocol.protocols = {} del proto, diss
def handle_array(self, proto, depth, field, name=None): """Add an ArrayField to the protocol.""" if name is not None: field.name = name if depth: field = ArrayField.create(depth, field) return proto.add_field(field)
def create_protos(): """Create a Protocol instance with some fields.""" dissector.Protocol.protocols = {} conf = Config('tester') conf.id = [ 25, ] conf.description = 'This is a test' rules = [ Trailer(conf, { 'name': 'missing', 'member': 'missing', 'size': 0 }), Trailer(conf, { 'name': 'simple', 'count': 1, 'size': 4 }), Trailer(conf, { 'name': 'bur', 'count': 3, 'size': 8 }), Trailer(conf, { 'name': 'ber', 'member': 'count' }) ] proto, diss = dissector.Protocol.create_dissector('tester', None, conf) diss.add_field(Field('one', 'float', 4, 0, Platform.big)) diss.add_field(Field('range', 'float', 4, 0, Platform.big)) diss.children[-1].set_range_validation(0, 10) field = Field('array', 'float', 4, 0, Platform.big) diss.add_field(ArrayField.create([1, 2, 3], field)) field = Field('str', 'string', 30, 0, Platform.big) diss.add_field(ArrayField.create([2], field)) diss.add_field(Field('count', 'int32', 4, 0, Platform.big)) diss.push_modifiers() yield proto dissector.Protocol.protocols = {} del proto, diss