blob: 916a03a8f5602dcfc96789798d27d2b112481b98 [file] [log] [blame]
% IS-IS Tests
* Tests for the IS-IS layer
+ Syntax check
= Import the isis layer
from scapy.contrib.isis import *
+ Basic Layer Tests
= Layer Binding
p = Dot3()/LLC()/ISIS_CommonHdr()/ISIS_P2P_Hello()
assert(p[LLC].dsap == 0xfe)
assert(p[LLC].ssap == 0xfe)
assert(p[LLC].ctrl == 0x03)
assert(p[ISIS_CommonHdr].nlpid == 0x83)
assert(p[ISIS_CommonHdr].pdutype == 17)
assert(p[ISIS_CommonHdr].hdrlen == 20)
+ Package Tests
= P2P Hello
p = Dot3(dst="09:00:2b:00:00:05",src="00:00:00:aa:00:8c")/LLC()/ISIS_CommonHdr()/ISIS_P2P_Hello(
holdingtime=40, sourceid="1720.1600.8016",
tlvs=[
ISIS_ProtocolsSupportedTlv(nlpids=["IPv4", "IPv6"])
])
p = p.__class__(raw(p))
assert(p[ISIS_P2P_Hello].pdulength == 24)
assert(network_layer_protocol_ids[p[ISIS_ProtocolsSupportedTlv].nlpids[1]] == "IPv6")
= LSP
p = Dot3(dst="09:00:2b:00:00:05",src="00:00:00:aa:00:8c")/LLC()/ISIS_CommonHdr()/ISIS_L2_LSP(
lifetime=863, lspid="1720.1600.8016.00-00", seqnum=0x1f0, typeblock="L1+L2",
tlvs=[
ISIS_AreaTlv(
areas=[ISIS_AreaEntry(areaid="49.1000")]
),
ISIS_ProtocolsSupportedTlv(
nlpids=["IPv4", "IPv6"]
),
ISIS_DynamicHostnameTlv(
hostname="BR-HH"
),
ISIS_IpInterfaceAddressTlv(
addresses=["172.16.8.16"]
),
ISIS_GenericTlv(
type=134,
val=b"\xac\x10\x08\x10"
),
ISIS_ExtendedIpReachabilityTlv(
pfxs=[
ISIS_ExtendedIpPrefix(metric=0, pfx="172.16.8.16/32"),
ISIS_ExtendedIpPrefix(metric=10, pfx="10.1.0.109/30"),
ISIS_ExtendedIpPrefix(metric=10, pfx="10.1.0.181/30")
]
),
ISIS_Ipv6ReachabilityTlv(
pfxs=[
ISIS_Ipv6Prefix(metric=0, pfx="fe10:1::10/128"),
ISIS_Ipv6Prefix(metric=10, pfx="fd1f:1::/64"),
ISIS_Ipv6Prefix(metric=10, pfx="fd1f:1:12::/64")
]
),
ISIS_ExtendedIsReachabilityTlv(
neighbours=[ISIS_ExtendedIsNeighbourEntry(neighbourid="1720.1600.8004.00", metric=10)]
)
])
p = p.__class__(raw(p))
assert(p[ISIS_L2_LSP].pdulength == 150)
assert(p[ISIS_L2_LSP].checksum == 0x8701)
= LSP with Sub-TLVs
p = Dot3(dst="09:00:2b:00:00:05",src="00:00:00:aa:00:8c")/LLC()/ISIS_CommonHdr()/ISIS_L2_LSP(
lifetime=863, lspid="1720.1600.8016.00-00", seqnum=0x1f0, typeblock="L1+L2",
tlvs=[
ISIS_AreaTlv(
areas=[ISIS_AreaEntry(areaid="49.1000")]
),
ISIS_ProtocolsSupportedTlv(
nlpids=["IPv4", "IPv6"]
),
ISIS_DynamicHostnameTlv(
hostname="BR-HH"
),
ISIS_IpInterfaceAddressTlv(
addresses=["172.16.8.16"]
),
ISIS_GenericTlv(
type=134,
val=b"\xac\x10\x08\x10"
),
ISIS_ExtendedIpReachabilityTlv(
pfxs=[
ISIS_ExtendedIpPrefix(metric=0, pfx="172.16.8.16/32"),
ISIS_ExtendedIpPrefix(metric=10, pfx="10.1.0.109/30", subtlvindicator=1,
subtlvs=[
ISIS_32bitAdministrativeTagSubTlv(tags=[321, 123]),
ISIS_64bitAdministrativeTagSubTlv(tags=[54321, 4294967311])
]),
ISIS_ExtendedIpPrefix(metric=10, pfx="10.1.0.181/30", subtlvindicator=1,
subtlvs=[
ISIS_GenericSubTlv(type=123, val=b"\x11\x1f\x01\x1c")
])
]
),
ISIS_Ipv6ReachabilityTlv(
pfxs=[
ISIS_Ipv6Prefix(metric=0, pfx="fe10:1::10/128"),
ISIS_Ipv6Prefix(metric=10, pfx="fd1f:1::/64", subtlvindicator=1,
subtlvs=[
ISIS_GenericSubTlv(type=99, val=b"\x1f\x01\x1f\x01\x11\x1f\x01\x1c")
]),
ISIS_Ipv6Prefix(metric=10, pfx="fd1f:1:12::/64")
]
),
ISIS_ExtendedIsReachabilityTlv(
neighbours=[
ISIS_ExtendedIsNeighbourEntry(neighbourid="1720.1600.8004.00", metric=10,
subtlvs=[
ISIS_IPv4InterfaceAddressSubTlv(address="172.16.8.4"),
ISIS_LinkLocalRemoteIdentifiersSubTlv(localid=418, remoteid=54321),
ISIS_IPv6NeighborAddressSubTlv(address="fe10:1::5")
])
]
)
])
p = p.__class__(raw(p))
assert(p[ISIS_L2_LSP].pdulength == 231)
assert(p[ISIS_L2_LSP].checksum == 0xf8df)
assert(p[ISIS_ExtendedIpReachabilityTlv].pfxs[1].subtlvs[1].tags[0]==54321)
assert(p[ISIS_Ipv6ReachabilityTlv].pfxs[1].subtlvs[0].len==8)
assert(p[ISIS_ExtendedIsReachabilityTlv].neighbours[0].subtlvs[0].address=='172.16.8.4')
assert(p[ISIS_ExtendedIsReachabilityTlv].neighbours[0].subtlvs[1].localid==418)