Я строю слой со 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? соответственно bar2? Лямбда-функция, которую я написал, мне кажется правильной, и согласно документации она используется таким образом, но она не работает. Ты хоть представляешь, как я могу это исправить? Идея состоит в том, что если bar1
и bar2
установлены, когда я создаю экземпляр класса Foo, он должен присутствовать в пакете, иначе нет. Я не хочу делать 2 пакета только для этого случая.