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