% 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)

