From cb081c793f8fbeb21c68c136967a561988d1b15f Mon Sep 17 00:00:00 2001 From: Pierre LALET <pierre.lalet@cea.fr> Date: Fri, 15 Jan 2016 09:41:55 +0100 Subject: [PATCH] Handle dynamic Packet().name --- scapy/base_classes.py | 2 ++ scapy/packet.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/scapy/base_classes.py b/scapy/base_classes.py index f805c18b..0648e9ce 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 e4ea22f5..25300749 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 = {} -- GitLab