The constructor arguments are basically the same for all classes in the packet library.
raw is used if you are parsing a raw packet that's held in a bytes/str object. prev is mostly used internally to build chains of packet headers. That is, since most packet headers are preceded by other packet headers, a packet's .prev usually points to the preceding one. But most of the time you don't manually set it in the constructor; usually the right thing happens without you having to worry about it. If you're constructing a packet from scratch, you use keyword arguments. This isn't that useful for LLDP packets. It's more useful for things like TCP packets. It's more or less a shortcut so that you can do things like: mypacket = foo(bar = 42) Instead of: mypacket = foo() foo.bar = 42 LLDP packets don't really have many fields, though. They're basically just a list of TLVs. So the more common way to use it is just to create an empty LLDP header and append TLVs. discovery does this, for example: https://github.com/noxrepo/pox/blob/eel/pox/openflow/discovery.py#L189 -- Murphy On Sun, Jul 7, 2019 at 6:01 AM AASIF MNIT <aasifm...@gmail.com> wrote: > The following is code from lldp.py, I am unable to get use of parameters > used in methods, please help me. > > > def __init__ (self, raw=None, prev=None, **kw): > packet_base.__init__(self) > > self.prev = prev > > self.next = None > self.tlvs = [] > > if raw is not None: > self.parse(raw) > > self._init(kw) >