Simon Horman <ho...@ovn.org> writes:

> On Wed, Oct 02, 2024 at 06:01:41PM +0200, Paolo Valerio wrote:
>> As Long reported, kernels built without CONFIG_NETFILTER_CONNCOUNT
>> result in the unexpected failure of the following tests:
>> 
>> conntrack - multiple zones, local
>> conntrack - multi-stage pipeline, local
>> conntrack - can match and clear ct_state from outside OVS
>> 
>> this happens because the nf_conncount turns on connection tracking and
>> the above tests rely on this side effect. However, this behavior may
>> be corrected in the kernel, which could, in turn, cause the tests to
>> fail.
>> 
>> The patch removes the assumption by adding iptables rules to attach
>> an nf_conn template to the skb resulting tracked once hit the OvS
>> pipeline.
>> 
>> While at it, introduce $HAVE_IPTABLES and skip tests if iptables
>> binary is not present.
>> 
>> Reported-by: Xin Long <lucien....@gmail.com>
>> Reported-at: https://issues.redhat.com/browse/FDP-708
>> Signed-off-by: Paolo Valerio <pvale...@redhat.com>
>> ---
>> v3:
>> - generalized introducing CHECK_EXTERNAL_CT()/ADD_EXTERNAL_CT()
>>   to ease the transition toward a different front-end
>> 
>> v2:
>> - add $HAVE_IPTABLES
>> - reduced subject length (0-day Robot)
>
> ...
>
>> diff --git a/tests/atlocal.in b/tests/atlocal.in
>> index 8565a0bae..d6b87f8ec 100644
>> --- a/tests/atlocal.in
>> +++ b/tests/atlocal.in
>> @@ -185,6 +185,9 @@ find_command lftp
>>  # Set HAVE_ETHTOOL
>>  find_command ethtool
>>  
>> +# Set HAVE_IPTABLES
>> +find_command iptables
>> +
>>  CURL_OPT="-g -v --max-time 1 --retry 2 --retry-delay 1 --connect-timeout 1"
>>  
>>  # Determine whether "diff" supports "normal" diffs.  (busybox diff does 
>> not.)
>> diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at
>> index 06c978555..df2835747 100644
>> --- a/tests/ovs-macros.at
>> +++ b/tests/ovs-macros.at
>> @@ -366,3 +366,8 @@ dnl Add a rule to always accept the traffic.
>>  m4_define([IPTABLES_ACCEPT],
>>    [AT_CHECK([iptables -I INPUT 1 -i $1 -j ACCEPT])
>>     on_exit 'iptables -D INPUT 1 -i $1'])
>> +
>> +dnl Required to let conntrack start tracking the packets outside ovs
>> +m4_define([IPTABLES_CT],
>> +  [AT_CHECK([iptables -t raw -I OUTPUT 1 -o $1 -j CT])
>> +   on_exit 'iptables -t raw -D OUTPUT 1'])
>
> Hi Paolo,
>
> I don't think IPTABLES_CT is needed now that we have ADD_EXTERNAL_CT.
>

it's not, indeed. It's a leftover of the old revision.
I sent a new revision. Thanks.

> Otherwise this looks good to me.
>
>> diff --git a/tests/system-kmod-macros.at b/tests/system-kmod-macros.at
>> index 5203b1df8..135892e91 100644
>> --- a/tests/system-kmod-macros.at
>> +++ b/tests/system-kmod-macros.at
>> @@ -267,3 +267,24 @@ m4_define([OVS_CHECK_BAREUDP],
>>      AT_SKIP_IF([! ip link add dev ovs_bareudp0 type bareudp dstport 6635 
>> ethertype mpls_uc 2>&1 >/dev/null])
>>      AT_CHECK([ip link del dev ovs_bareudp0])
>>  ])
>> +
>> +# CHECK_EXTERNAL_CT()
>> +#
>> +# Checks if packets can be tracked outside OvS.
>> +m4_define([CHECK_EXTERNAL_CT],
>> +[
>> +    dnl Kernel config (CONFIG_NETFILTER_XT_TARGET_CT)
>> +    dnl and user space extensions need to be present.
>> +    AT_SKIP_IF([test $HAVE_IPTABLES = no])
>> +    AT_SKIP_IF([! iptables -t raw -I OUTPUT 1 -j CT])
>> +    AT_CHECK([iptables -t raw -D OUTPUT 1])
>> +])
>> +
>> +# ADD_EXTERNAL_CT()
>> +#
>> +# Let conntrack start tracking the packets outside OvS.
>> +m4_define([ADD_EXTERNAL_CT],
>> +[
>> +    AT_CHECK([iptables -t raw -I OUTPUT 1 -o $1 -j CT])
>> +    on_exit 'iptables -t raw -D OUTPUT 1'
>> +])
>
> ...

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to