The ICMPv6 code was set to 1 which is wrong for the packet too big
which is wrong, the code should always remain 0. This resulted in
wrong csum being computed. Set the code to 0 explicitly.

Fixes: 4725ad125b42 ("controller: Avoid double controller action for ICMP 
errors.")
Reported-at: https://issues.redhat.com/browse/FDP-763
Acked-by: Dumitru Ceara <[email protected]>
Signed-off-by: Ales Musil <[email protected]>
---
v2: Add missing dot for the subject.
    Add missing fixes tag.
---
 controller/pinctrl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/controller/pinctrl.c b/controller/pinctrl.c
index 7cbb0cf81..c86b4f940 100644
--- a/controller/pinctrl.c
+++ b/controller/pinctrl.c
@@ -1756,6 +1756,7 @@ pinctrl_handle_icmp(struct rconn *swconn, const struct 
flow *ip_flow,
         if (mtu) {
             put_16aligned_be32(ih->icmp6_data.be32, *mtu);
             ih->icmp6_base.icmp6_type = ICMP6_PACKET_TOO_BIG;
+            ih->icmp6_base.icmp6_code = 0;
         }
 
         void *data = ih + 1;
-- 
2.46.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to