Я создаю слой с помощью scapy. этот слой имеет ConditionalFields:
class Foo(Packet):
name = "Foo"
fields_desc = [
ConditionalField(BitField("bar1", None, 4),
lambda pkt: pkt.bar1 is not None),
ConditionalField(BitField("bar2", None, 4),
lambda pkt: pkt.bar2 is not None),
ByteField("bar3", 0x0),
ByteField("bar4", 0x0)
]
Теперь, как я могу проверить, установлен ли bar1? соотв. бар2? Написанная мной лямбда-функция кажется мне правильной, и согласно документации она используется именно так, но она не работает. У вас есть идеи, как я могу это исправить? Идея состоит в том, что если bar1
и bar2
установлены, когда я создаю экземпляр класса Foo, он должен присутствовать в пакете, иначе нет. Я не хочу делать 2 пакета только для этого случая.