Я создаю слой с 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 пакета только на этот случай.