1 diff --git a/scapy/contrib/bier.py b/scapy/contrib/bier.py
5 +++ b/scapy/contrib/bier.py
7 +# http://trac.secdev.org/scapy/ticket/31
9 +# scapy.contrib.description = MPLS
10 +# scapy.contrib.status = loads
12 +from scapy.packet import *
13 +from scapy.fields import *
14 +from scapy.layers.inet import IP, UDP
15 +from scapy.layers.inet6 import IPv6
23 +BIERnhcls = { 1: "MPLS",
31 + fields_desc = [ BitField("bsl", 0, 4),
32 + BitField("sd", 0, 8),
33 + BitField("set", 0, 8),
34 + BitField("cos", 0, 3),
35 + BitField("s", 1, 1),
36 + ByteField("ttl", 0) ]
38 + def guess_payload_class(self, payload):
44 + fields_desc = [ BitField("id", 5, 4),
45 + BitField("version", 0, 4),
46 + BitField("length", 0, 4),
47 + BitField("entropy", 0, 20),
48 + BitField("OAM", 0, 2),
49 + BitField("RSV", 0, 2),
50 + BitField("DSCP", 0, 6),
51 + BitEnumField("Proto", 2, 6, BIERnhcls),
52 + ShortField("BFRID", 0),
53 + StrFixedLenField("BitString",
57 +bind_layers(BIER, IP, Proto=4)
58 +bind_layers(BIER, IPv6, Proto=5)
59 +bind_layers(UDP, BIFT, dport=8138)