Beispiel #1
0
    def test_consistency(self):
        conf.iface6 = "A-0"

        ip6 = IPv6(src=self.sfc[-1], dst=self.sfc[0])
        sr = IPv6ExtHdrSegmentRouting(addresses=self.sfc[::-1],
                                      nseg=len(self.sfc) - 1,
                                      fseg=len(self.sfc) - 1)
        hdr = (ip6 / sr)

        matching = lambda a, b: tt.Utils.inner_IPv6(a) == tt.Utils.inner_IPv6(b
                                                                              )

        def craft(hdr, fl):
            tt.Utils.set_fl(hdr, fl)
            pkt = hdr / IPv6() / ICMPv6EchoRequest()

            pkt = pkt.__class__(str(pkt))

            return ([pkt], {fl: [pkt]})

        sns = tt.Tester(
            tt.Test(ct.Crafter(hdr, craft), [sn.filter_ICMP, sn.filter_SEG],
                    mt.Matcher(matching)))

        self.assertTrue(sns.perform_test())
Beispiel #2
0
    def _generic_test_tcp_info(self, infos, craft, nflux=1):
        nfl = len(infos)
        nexp = sum([len(x[1]) for x in infos])

        sns = tt.Tester(
            tt.Test(ct.Crafter(self.hdr, craft, nfl, nexp, nflux),
                    [sn.filter_TCP, sn.filter_SEG], mt.Matcher()))
        self.assertTrue(sns.perform_test())
Beispiel #3
0
    def test_packet_pass(self):
        conf.iface6 = "A-0"

        ip6 = IPv6(src=self.sfc[-1], dst=self.sfc[0])
        sr = IPv6ExtHdrSegmentRouting(addresses=self.sfc[::-1])
        hdr = (ip6 / sr)

        def craft(hdr, fl):
            helpers.Utils.set_fl(hdr, fl)
            pkt = hdr / IPv6() / ICMPv6EchoRequest()

            pkt = pkt.__class__(str(pkt))

            return ([pkt], {fl: [pkt]})

        sns = tt.Tester(
            tt.Test(ct.Crafter(hdr, craft, 1, 1, 5),
                    [sn.filter_ICMP, sn.filter_SEG], mt.Matcher()))
        self.assertTrue(sns.perform_test())
Beispiel #4
0
    def test_disordered_refrag(self):
        nbrFlux = 4

        ip6 = IPv6(src=self.sfc[-1], dst=self.sfc[0])
        sr  = IPv6ExtHdrSegmentRouting(addresses=self.sfc[::-1],
                                nseg=len(self.sfc) - 1, fseg=len(self.sfc) - 1)
        hdr = (ip6/sr)

        def matching(a,b):
            return Utils.inner_IPv6(a) == Utils.inner_IPv6(b)

        def craft(hdr, fl):
            snd = []
            rcv = {}

            for fl in range(fl, fl+nbrFlux):
                Utils.set_fl(hdr, fl)

                sip = 'fc00:2:0:1::1' # Adresses don't rlly matter
                dip = 'fc00:2:0:2::1'

                packets_snd = fragment6(IPv6(src=sip, dst=dip) / IPv6ExtHdrFragment() / ICMPv6EchoRequest(data='A'*300), 100)
                packets_snd = [pkt.__class__(str(hdr/pkt)) for pkt in packets_snd]
                packet_excepted = pkt.__class__(str(hdr/IPv6(src=sip, dst=dip) / ICMPv6EchoRequest(data='A'*300)))

                snd.extend(packets_snd)
                random.shuffle(snd) # shuffle
                rcv[fl] = [packet_excepted]

            return (snd, rcv)

        sns = Tester(Test(
            ct.Crafter(hdr, craft, nbr_flux=nbrFlux,
                       nbr_expected=nbrFlux),
            [sn.filter_ICMP, sn.filter_SEG],
            Matcher(matching)
        ))
        self.assertTrue(sns.perform_test())