scapy как проверить, установлено ли поле

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

5
задан Steve 12 July 2011 в 08:16
поделиться