86890704fd
todo: add documentation & wireshark dissector
48 lines
2.9 KiB
Text
Executable file
48 lines
2.9 KiB
Text
Executable file
% Regression tests for the ldp module
|
|
|
|
+ Basic LDP test
|
|
|
|
= Default build
|
|
|
|
load_contrib("ldp")
|
|
base = Ether()/IP()/UDP()/LDP()
|
|
pkt1 = base/LDPNotification()
|
|
pkt2 = base/LDPKeepAlive()
|
|
pkt3 = base/LDPLabelWM()
|
|
pkt4 = base/LDPHello()
|
|
pkt5 = base/LDPAddressWM()
|
|
pkt6 = base/LDPLabelMM()
|
|
|
|
# Build
|
|
pkt1 = Ether(raw(pkt1))
|
|
pkt2 = Ether(raw(pkt2))
|
|
pkt3 = Ether(raw(pkt3))
|
|
pkt4 = Ether(raw(pkt4))
|
|
pkt5 = Ether(raw(pkt5))
|
|
pkt6 = Ether(raw(pkt6))
|
|
|
|
assert LDPNotification in pkt1
|
|
assert LDPKeepAlive in pkt2
|
|
assert LDPLabelWM in pkt3
|
|
assert LDPHello in pkt4
|
|
assert LDPAddressWM in pkt5
|
|
assert LDPLabelMM in pkt6
|
|
|
|
= Basic dissection
|
|
pkt = Ether(b'AJH\x18\x07\xfa\xd0P\x99V\xdd\xf9\x08\x00E\x00\x006\x00\x01\x00\x00@\x11:\x96(\x9d\r\xd3\xc1\x1eq\x10\x02\x86\x02\x86\x00"5\xa1\x00\x01\x00\x16\x7f\x00\x00\x01\x00\x00\x01\x00\x00\x0c\x00\x00\x00\x00\x04\x00\x00\x04\x00\xb4\x00\x00')
|
|
assert LDPHello in pkt
|
|
assert pkt[LDP].id == "127.0.0.1"
|
|
assert pkt[LDPHello].params == [180, 0, 0]
|
|
|
|
= Build advanced LDPInit()
|
|
pkti = LDPInit(u=0, id=11, params=[180, 0, 0, 0, 0, '1.1.2.2', 0])/LDPKeepAlive()
|
|
assert raw(pkti) == b'\x02\x00\x00\x16\x00\x00\x00\x0b\x05\x00\x00\x0e\x00\x01\x00\xb4\x00\x00\x00\x00\x01\x01\x02\x02\x00\x00\x02\x01\x00\x04\x00\x00\x00\x00'
|
|
pkti = LDPInit(raw(pkti))
|
|
assert pkti.params == [180, 0, 0, 0, 0, '1.1.2.2', 0]
|
|
|
|
= Build advanced LDPAddress() with LDPLabelMM()
|
|
pkta = LDPAddress(address=['1.1.2.2', '172.16.2.1'])/LDPLabelMM(fec=[('172.16.2.0', 31)])/LDPLabelMM(fec=[('1.1.2.2', 32)])/LDPLabelMM(fec=[('1.1.2.1', 32)])
|
|
|
|
= Advanced dissection - complex LDP
|
|
pkt = Ether(b"\xcc\x04\x04\xdc\x00\x10\xcc\x03\x04\xdc\x00\x10\x88G\x00\x01-\xfeE\xc0\x014\xfe\x84\x00\x00\xff\x06\xb5z\x01\x01\x02\x02\x01\x01\x02\x01\xe4\xe4\x02\x86\xbf\xfb'\xe4\xb9\xb3\xe4GP\x10\x0e\xb6v\x9f\x00\x00\x00\x01\x01\x08\x01\x01\x02\x02\x00\x00\x03\x00\x00\x12\x00\x00\x00\x0e\x01\x01\x00\n\x00\x01\x01\x01\x02\x02\xac\x10\x02\x01\x04\x00\x00\x18\x00\x00\x00\x0f\x01\x00\x00\x08\x02\x00\x01\x1f\xac\x10\x02\x00\x02\x00\x00\x04\x00\x00\x00\x03\x04\x00\x00\x18\x00\x00\x00\x10\x01\x00\x00\x08\x02\x00\x01 \x01\x01\x02\x02\x02\x00\x00\x04\x00\x00\x00\x03\x04\x00\x00\x18\x00\x00\x00\x11\x01\x00\x00\x08\x02\x00\x01 \x01\x01\x02\x01\x02\x00\x00\x04\x00\x00\x00\x12\x04\x00\x00\x18\x00\x00\x00\x12\x01\x00\x00\x08\x02\x00\x01 \x01\x01\x01\x02\x02\x00\x00\x04\x00\x00\x00\x13\x04\x00\x00\x18\x00\x00\x00\x13\x01\x00\x00\x08\x02\x00\x01 \x01\x01\x01\x01\x02\x00\x00\x04\x00\x00\x00\x14\x04\x00\x00\x18\x00\x00\x00\x14\x01\x00\x00\x08\x02\x00\x01\x1f\xac\x10\x01\x00\x02\x00\x00\x04\x00\x00\x00\x15\x04\x00\x00\x18\x00\x00\x00\x15\x01\x00\x00\x08\x02\x00\x01\x1f\xac\x10\x00\x00\x02\x00\x00\x04\x00\x00\x00\x16\x04\x00\x00$\x00\x00\x00\x16\x01\x00\x00\x14\x80\x80\x05\x0c\x00\x00\x00\x00\x00\x00\x00\n\x01\x04\x05\xdc\x0c\x04\x03\x02\x02\x00\x00\x04\x00\x00\x00\x10")
|
|
assert pkt.getlayer(LDPLabelMM, 8).fec == [('0.0.0.0', 12), ('0.0.0.0', 0), ('5.0.0.0', 4), ('2.0.0.0', 3)]
|