diff --git a/scapy/base_classes.py b/scapy/base_classes.py index f805c18ba79ba30029cf5759d41ac9fe047a1dd7..0648e9cebad2eb28a6f06a1e95437d35d1cd21a0 100644 --- a/scapy/base_classes.py +++ b/scapy/base_classes.py @@ -178,6 +178,8 @@ class Packet_metaclass(type): if "__slots__" not in dct: dct["__slots__"] = [] + if "name" in dct: + dct["_name"] = dct.pop("name") newcls = super(Packet_metaclass, cls).__new__(cls, name, bases, dct) if hasattr(newcls, "aliastypes"): newcls.aliastypes = [newcls] + newcls.aliastypes diff --git a/scapy/packet.py b/scapy/packet.py index e4ea22f56327a23de0c5daa5ca02889061ea31e1..2530074952a9c2a321e6938a56cb9553ab208ed7 100644 --- a/scapy/packet.py +++ b/scapy/packet.py @@ -40,6 +40,7 @@ class Packet(BasePacket): "raw_packet_cache_fields", "_pkt", "post_transforms", # then payload and underlayer "payload", "underlayer", + "name", ] __metaclass__ = Packet_metaclass name = None @@ -65,6 +66,9 @@ class Packet(BasePacket): def __init__(self, _pkt="", post_transform=None, _internal=0, _underlayer=None, **fields): self.time = time.time() self.sent_time = None + self.name = (self.__class__.__name__ + if self._name is None else + self._name) self.default_fields = {} self.overloaded_fields = {} self.fields = {}