From 02f6a7ccb8f57e99d20e4132837a13ec7129c110 Mon Sep 17 00:00:00 2001 From: Olivier Gournet Date: Tue, 28 Jan 2025 13:43:56 +0100 Subject: [PATCH 1/2] ip6: fix bad check in ipv6 ping Calloc never fails, but here it would always fails. Fixes: 71a80f6 ("ip6: add ping and traceroute command") Signed-off-by: Olivier Gournet --- modules/ip6/datapath/icmp6_local_send.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ip6/datapath/icmp6_local_send.c b/modules/ip6/datapath/icmp6_local_send.c index af40d01a..df68a6fc 100644 --- a/modules/ip6/datapath/icmp6_local_send.c +++ b/modules/ip6/datapath/icmp6_local_send.c @@ -50,7 +50,7 @@ int icmp6_local_send( if ((local = ip6_addr_get_preferred(gw->iface_id, &gw->ipv6)) == NULL) return -errno; - if ((msg = calloc(1, sizeof(struct ctl_to_stack)))) + if ((msg = calloc(1, sizeof(struct ctl_to_stack))) == NULL) return errno_set(ENOMEM); msg->iface_id = gw->iface_id; msg->seq_num = seq_num; From dbf8b0e1797db71c8ccb0e18d467fc69d2a96ebf Mon Sep 17 00:00:00 2001 From: Olivier Gournet Date: Tue, 28 Jan 2025 13:47:25 +0100 Subject: [PATCH 2/2] smoke: add ipv6 ping tests Add some ipv6 pings issued from grcli. Signed-off-by: Olivier Gournet --- smoke/ip6_builtin_icmp_test.sh | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 smoke/ip6_builtin_icmp_test.sh diff --git a/smoke/ip6_builtin_icmp_test.sh b/smoke/ip6_builtin_icmp_test.sh new file mode 100755 index 00000000..ae1bbd19 --- /dev/null +++ b/smoke/ip6_builtin_icmp_test.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2025 Olivier Gournet + +. $(dirname $0)/_init.sh + +p0=${run_id}0 +p1=${run_id}1 + +grcli add interface port $p0 devargs net_tap0,iface=$p0 mac f0:0d:ac:dc:13:00 +grcli add interface port $p1 devargs net_tap1,iface=$p1 mac f0:0d:ac:dc:13:01 +grcli add ip6 address fd00:ba4:0::1/64 iface $p0 +grcli add ip6 address fd00:ba4:1::1/64 iface $p1 + +for n in 0 1; do + p=$run_id$n + ip netns add $p + echo ip netns del $p >> $tmp/cleanup + ip link set $p netns $p + ip -n $p link set $p address ba:d0:ca:cd:00:0$n + ip -n $p link set $p up + ip -n $p addr add fd00:ba4:$n::2/64 dev $p + ip -n $p route add fd00:ba4::/62 via fd00:ba4:$n::1 dev $p + ip -n $p addr show +done + +sleep 3 # wait for DAD + +grcli ping fd00:ba4:0::2 count 10 delay 100 +grcli ping fd00:ba4:1::2 count 3 delay 10 + +# Expect this test to fail +grcli ping fd00:baa::1 count 1 && fail "ping to unknown route succeeded" +grcli ping fd00:ba4:1::3 count 1 && fail "ping to non-existent host succeeded" + +grcli traceroute fd00:ba4:1::2