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/contrib/ospf.uts b/scapy/contrib/ospf.uts
new file mode 100644
index 0000000000000000000000000000000000000000..0dc1d6e1f731d7beec7cb23ce57a50cd08a8f66c
--- /dev/null
+++ b/scapy/contrib/ospf.uts
@@ -0,0 +1,28 @@
+# OSPF Related regression tests
+#
+# Type the following command to launch start the tests:
+# $ test/run_tests -P "load_contrib('ospf')" -t scapy/contrib/ospf.uts
+
++ OSPF
+
+= OSPF, basic instanciation
+
+data = '\x01\x00^\x00\x00\x05\x00\xe0\x18\xb1\x0c\xad\x08\x00E\xc0\x00T\x08\x19\x00\x00\x01Ye\xc2\xc0\xa8\xaa\x08\xe0\x00\x00\x05\x02\x04\x00@\xc0\xa8\xaa\x08\x00\x00\x00\x01\x96\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\xe2\x02\x01\xc0\xa8\xaa\x08\xc0\xa8\xaa\x08\x80\x00\r\xc3%\x06\x00$\x02\x00\x00\x01\xc0\xa8\xaa\x00\xff\xff\xff\x00\x03\x00\x00\n'
+
+p = Ether(data)
+
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].age == 994)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].type == 1)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].id == '192.168.170.8')
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].adrouter == '192.168.170.8')
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].seq == 0x80000dc3)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].chksum == 0x2506)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].len == 36)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].reserved == 0)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].linkcount == 1)
+
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].id == '192.168.170.0')
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].data == '255.255.255.0')
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].type == 3)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].toscount == 0)
+assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].metric == 10)