Example #1
0
    def write_handshake(self):
        self.tcp_handshake = True

        self.write_packets((
            self.client_ip_base / TCP(
                sport=self.client_port,
                dport=self.server_port,
                seq=self.client_seq-1,
                flags="S"
            ),
            self.server_ip_base / TCP(
                sport=self.server_port,
                dport=self.client_port,
                seq=self.server_seq-1,
                ack=self.client_seq,
                flags="SA"
            ),
            self.client_ip_base / TCP(
                sport=self.client_port,
                dport=self.server_port,
                seq=self.client_seq,
                ack=self.server_seq,
                flags="A"
            )
        ))
Example #2
0
    def test_iacl_proto_tcp_dport(self):
        """IP6 TCP destination port iACL test

        Test scenario for basic protocol ACL with TCP and dport
            - Create IPv6 stream for pg0 -> pg1 interface.
            - Create iACL with TCP IP protocol and defined dport.
            - Send and verify received packets on pg1 interface.
        """

        # Basic iACL testing with TCP and dport
        dport = 427
        pkts = self.create_stream(self.pg0, self.pg1, self.pg_if_packet_sizes,
                                  TCP(sport=1234, dport=dport))
        self.pg0.add_stream(pkts)

        key = "nh_tcp_dport"
        self.create_classify_table(
            key, self.build_ip6_mask(nh="ff", dst_port="ffff"))
        self.create_classify_session(
            self.acl_tbl_idx.get(key),
            self.build_ip6_match(nh=socket.IPPROTO_TCP, dst_port=dport),
        )
        self.input_acl_set_interface(self.pg0, self.acl_tbl_idx.get(key))
        self.acl_active_table = key

        self.pg_enable_capture(self.pg_interfaces)
        self.pg_start()

        pkts = self.pg1.get_capture(len(pkts))
        self.verify_capture(self.pg1, pkts, TCP)
        self.pg0.assert_nothing_captured(remark="packets forwarded")
        self.pg2.assert_nothing_captured(remark="packets forwarded")
Example #3
0
    def server(self, data: bytes):
        if not self.tcp_handshake:
            self.write_handshake()

        seq = self.server_seq
        self.server_seq = (seq + len(data)) & 0xff_ff_ff_ff

        self.write_packets((
            self.server_ip_base / TCP(
                 sport=self.server_port,
                 dport=self.client_port,
                 seq=seq,
                 ack=self.client_seq,
                 flags="A") / data,
            self.client_ip_base / TCP (
                sport=self.client_port,
                dport=self.server_port,
                seq=self.client_seq,
                ack=self.server_seq,
                flags="A"
            )
        ))