diff --git a/scapy/contrib/ospf.py b/scapy/contrib/ospf.py index 8b316ca55e96ed93a065c8c24a6cdf8a458f6c2e..fe79886253fd1602e340e4415b9a69915709bc96 100644 --- a/scapy/contrib/ospf.py +++ b/scapy/contrib/ospf.py @@ -260,7 +260,7 @@ class OSPF_Link(Packet): def _LSAGuessPayloadClass(p, **kargs): """ Guess the correct LSA class for a given payload """ # This is heavily based on scapy-cdp.py by Nicolas Bareil and Arnaud Ebalard - # XXX: This only works if all payload + cls = conf.raw_layer if len(p) >= 4: typ = struct.unpack("!B", p[3])[0] @@ -410,7 +410,7 @@ class OSPF_LSReq(Packet): class OSPF_LSUpd(Packet): name = "OSPF Link State Update" fields_desc = [FieldLenField("lsacount", None, fmt="!I", count_of="lsalist"), - PacketListField("lsalist", [], _LSAGuessPayloadClass, + PacketListField("lsalist", None, _LSAGuessPayloadClass, count_from = lambda pkt: pkt.lsacount, length_from = lambda pkt: pkt.underlayer.len - 24)] diff --git a/scapy/fields.py b/scapy/fields.py index 28ff64d9f51ba9a7ce0012f7829f0f2904b58898..7316105552113b16fbcbfdde2c58cc01c4f52e6d 100644 --- a/scapy/fields.py +++ b/scapy/fields.py @@ -439,7 +439,6 @@ class PacketListField(PacketField): self.count_from = count_from self.length_from = length_from - def any2i(self, pkt, x): if not isinstance(x, list): return [x]