BIER
- see draft-ietf-bier-mpls-encapsulation-10 - midpoint, head and tail functions - supported payload protocols; IPv4 and IPv6 only. Change-Id: I59d7363bb6fdfdce8e4016a68a9c8f5a5e5791cb Signed-off-by: Neale Ranns <nranns@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
a2ff7b8cfc
commit
d792d9c01e
@ -1,16 +1,35 @@
|
||||
diff --git a/scapy/contrib/mpls.py b/scapy/contrib/mpls.py
|
||||
index 640a0c5..6af1d4a 100644
|
||||
index 640a0c5..944723a 100644
|
||||
--- a/scapy/contrib/mpls.py
|
||||
+++ b/scapy/contrib/mpls.py
|
||||
@@ -18,6 +18,8 @@ class MPLS(Packet):
|
||||
@@ -6,6 +6,7 @@
|
||||
from scapy.packet import Packet, bind_layers, Padding
|
||||
from scapy.fields import BitField,ByteField
|
||||
from scapy.layers.inet import IP
|
||||
+from scapy.contrib.bier import BIER
|
||||
from scapy.layers.inet6 import IPv6
|
||||
from scapy.layers.l2 import Ether, GRE
|
||||
|
||||
@@ -17,9 +18,12 @@ class MPLS(Packet):
|
||||
|
||||
def guess_payload_class(self, payload):
|
||||
if len(payload) >= 1:
|
||||
+ if not self.s:
|
||||
+ return MPLS
|
||||
ip_version = (ord(payload[0]) >> 4) & 0xF
|
||||
if ip_version == 4:
|
||||
return IP
|
||||
- if len(payload) >= 1:
|
||||
- ip_version = (ord(payload[0]) >> 4) & 0xF
|
||||
- if ip_version == 4:
|
||||
- return IP
|
||||
- elif ip_version == 6:
|
||||
- return IPv6
|
||||
- return Padding
|
||||
+ if not self.s:
|
||||
+ return MPLS
|
||||
+ ip_version = (ord(payload[0]) >> 4) & 0xF
|
||||
+ if ip_version == 4:
|
||||
+ return IP
|
||||
+ elif ip_version == 5:
|
||||
+ return BIER
|
||||
+ elif ip_version == 6:
|
||||
+ return IPv6
|
||||
+ return Padding
|
||||
@@ -27,3 +29,4 @@ class MPLS(Packet):
|
||||
|
||||
bind_layers(Ether, MPLS, type=0x8847)
|
||||
|
Reference in New Issue
Block a user