diff --git a/scapy/contrib/mpls.py b/scapy/contrib/mpls.py
index 8041562a165517ef9d2bfa9a31b8872b8e7ed371..732cf2a11fba5d737612a75ff11d00942562ca66 100644
--- a/scapy/contrib/mpls.py
+++ b/scapy/contrib/mpls.py
@@ -41,3 +41,4 @@ class MPLS(Packet):
 
 bind_layers(Ether, MPLS, type=0x8847)
 bind_layers(GRE, MPLS, proto=0x8847)
+bind_layers(MPLS, MPLS, s=0)
diff --git a/test/regression.uts b/test/regression.uts
index bf50c24b0ca52238987a7817da0cc544ffcbad98..02e741310fdf48b8f92765cd0bc9ee7bdee101fe 100644
--- a/test/regression.uts
+++ b/test/regression.uts
@@ -8492,3 +8492,20 @@ class Test(Packet):
 pkt = Test(str(Test(Values=[0, 0, 0, 0, 1, 1, 1, 1])))
 assert(pkt.BitCount == 8)
 assert(pkt.ByteCount == 1)
+
+############
+############
++ MPLS tests
+
+= MPLS - build/dissection
+from scapy.contrib.mpls import MPLS
+p1 = MPLS()/IP()/UDP()
+assert(p1[MPLS].s == 1)
+p2 = MPLS()/MPLS()/IP()/UDP()
+assert(p2[MPLS].s == 0)
+
+p1[MPLS]
+p1[IP]
+p2[MPLS]
+p2[MPLS:1]
+p2[IP]