From 50209bda879b09915b3df75fd99ba27c77ae87d9 Mon Sep 17 00:00:00 2001
From: Phil <phil@secdev.org>
Date: Fri, 20 Jun 2008 19:22:38 +0200
Subject: [PATCH] Added layer registration to conf.layers

---
 scapy/config.py | 10 ++++++++++
 scapy/packet.py |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/scapy/config.py b/scapy/config.py
index c7c42501..b8191956 100644
--- a/scapy/config.py
+++ b/scapy/config.py
@@ -91,6 +91,15 @@ class Num2Layer:
         return "\n".join(y for x,y in lst)
             
 
+class LayersList(list):
+    def __repr__(self):
+        s=[]
+        for l in self:
+            s.append("%-20s: %s" % (l.__name__,l.name))
+        return "\n".join(s)
+    def register(self, layer):
+        self.append(layer)
+        
 
 
 class Conf(ConfClass):
@@ -124,6 +133,7 @@ extensions_paths: path or list of paths where extensions are to be looked for
     session = ""  
     stealth = "not implemented"
     iface = get_working_if()
+    layers = LayersList()
     checkIPID = 0
     checkIPsrc = 1
     checkIPaddr = 1
diff --git a/scapy/packet.py b/scapy/packet.py
index 0957fb72..de4407db 100644
--- a/scapy/packet.py
+++ b/scapy/packet.py
@@ -1,5 +1,6 @@
 import re,time,itertools,os,random,socket
 from fields import *
+from config import conf
 
 
 ################
@@ -118,6 +119,7 @@ class Packet_metaclass(type):
         newcls = super(Packet_metaclass, cls).__new__(cls, name, bases, dct)
         for f in newcls.fields_desc:
             f.register_owner(newcls)
+        conf.layers.register(newcls)
         return newcls
     def __getattr__(self, attr):
         for k in self.fields_desc:
-- 
GitLab