[PATCH v2 1/1] dts: add send_packets to test suites and rework packet addressing

Juraj Linkeš juraj.linkes at pantheon.tech
Thu Sep 26 09:52:08 CEST 2024


>>> +            if num_ip_layers > 0:
>>> +                ip_src_is_unset = "src" not in l3_to_use.fields
>>> +                ip_dst_is_unset = "dst" not in l3_to_use.fields
>>> +            else:
>>> +                ip_src_is_unset = None
>>> +                ip_dst_is_unset = None
>>>
>>> -            # The packet is routed from TG egress to TG ingress
>>> -            # update l3 addresses
>>> -            packet.payload.src = self._tg_ip_address_egress.ip.exploded
>>> -            packet.payload.dst = self._tg_ip_address_ingress.ip.exploded
>>> -        else:
>>> -            # The packet leaves TG towards SUT
>>>                # update l2 addresses
>>> -            packet.src = self._tg_port_egress.mac_address
>>> -            packet.dst = self._sut_port_ingress.mac_address
>>> +            # If `expected` is :data:`True`, the packet enters the TG from SUT, otherwise the
>>> +            # packet leaves the TG towards the SUT
>>> +            if pkt_src_is_unset:
>>> +                packet.src = (
>>> +                    self._sut_port_egress.mac_address
>>> +                    if expected
>>> +                    else self._tg_port_egress.mac_address
>>> +                )
>>> +            if pkt_dst_is_unset:
>>> +                packet.dst = (
>>> +                    self._tg_port_ingress.mac_address
>>> +                    if expected
>>> +                    else self._sut_port_ingress.mac_address
>>> +                )
>>>
>>> -            # The packet is routed from TG egress to TG ingress
>>>                # update l3 addresses
>>> -            packet.payload.src = self._tg_ip_address_egress.ip.exploded
>>> -            packet.payload.dst = self._tg_ip_address_ingress.ip.exploded
>>> +            # The packet is routed from TG egress to TG ingress regardless of whether it is
>>> +            # expected or not.
>>
>> Is this true? This might've been an error in the original
>> implementation. If it's expected (that is, the returning packet), it
>> should be routed from TG ingress to TG egress, no?
> 
> I guess I'm not completely sure. It would make sense that the L3
> addresses should be switched as well based on either expected or not,
> but currently it isn't modified, and os_udp still works which makes me
> think the addresses aren't switched by the kernel interfaces, which I
> believe is the only time these addresses are actually used (since we
> use sendp in scapy).
> 

Right, I went too deep in my thinking and confused myself :-). The path 
of the packet is:
TG egress -> SUT ingress -> SUT egress -> TG ingress

That is just one way path and I mixed the other direction into my 
thinking as well. With just one path, the MAC addresses are going to 
change, but not IP addresses.


More information about the dev mailing list