Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions modules/ip/cli/icmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ static int ctx_init(struct ec_node *root) {
CLI_CONTEXT(
root, CTX_ARG("ping", "Send IPv4 ICMP echo requests and wait for replies.")
),
"IP [vrf VRF] [count COUNT] [delay DELAY] [ident IDENT]",
"IP [(vrf VRF),(count COUNT),(delay DELAY),(ident IDENT)]",
ping,
"Send IPv4 ICMP echo requests and wait for replies.",
with_help("IPv4 destination address.", ec_node_re("IP", IPV4_RE)),
Expand All @@ -203,7 +203,7 @@ static int ctx_init(struct ec_node *root) {

ret = CLI_COMMAND(
CLI_CONTEXT(root, CTX_ARG("traceroute", "Discover IPv4 intermediate gateways.")),
"IP [ident IDENT] [vrf VRF]",
"IP [(ident IDENT),(vrf VRF)]",
traceroute,
"Discover IPv4 intermediate gateways.",
with_help("IPv4 destination address.", ec_node_re("IP", IPV4_RE)),
Expand Down
8 changes: 4 additions & 4 deletions modules/ip6/cli/icmp6.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,9 @@ static int ctx_init(struct ec_node *root) {

ret = CLI_COMMAND(
CLI_CONTEXT(
root, CTX_ARG("ping", "Send ICMPv6 echo requests and wait for replies.")
root, CTX_ARG("ping6", "Send ICMPv6 echo requests and wait for replies.")
),
"DEST [vrf VRF] [count COUNT] [delay DELAY] [iface IFACE] [ident IDENT]",
"DEST [(vrf VRF),(count COUNT),(delay DELAY),(iface IFACE),(ident IDENT)]",
ping,
"Send ICMPv6 echo requests and wait for replies.",
with_help("IPv6 destination address.", ec_node_re("DEST", IPV6_RE)),
Expand All @@ -232,8 +232,8 @@ static int ctx_init(struct ec_node *root) {
return ret;

ret = CLI_COMMAND(
CLI_CONTEXT(root, CTX_ARG("traceroute", "Discover IPv6 intermediate gateways.")),
"DEST [vrf VRF] [iface IFACE] [ident IDENT]",
CLI_CONTEXT(root, CTX_ARG("traceroute6", "Discover IPv6 intermediate gateways.")),
"DEST [(vrf VRF),(iface IFACE),(ident IDENT)]",
traceroute,
"Discover IPv6 intermediate gateways.",
with_help("IPv6 destination address.", ec_node_re("DEST", IPV6_RE)),
Expand Down
10 changes: 5 additions & 5 deletions smoke/ip6_builtin_icmp_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ 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
grcli ping6 fd00:ba4:0::2 count 10 delay 100
grcli ping6 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 ping6 fd00:baa::1 count 1 && fail "ping to unknown route succeeded"
grcli ping6 fd00:ba4:1::3 count 1 && fail "ping to non-existent host succeeded"

grcli traceroute fd00:ba4:1::2
grcli traceroute6 fd00:ba4:1::2
71 changes: 30 additions & 41 deletions smoke/ip_loadbalance_frr_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,34 @@
# Copyright (c) 2025 Christophe Fontaine

#
# | p1 (.1.2)
# [p0 ns0] --- grout --- | ns1 lo
# | p2 (.2.2)
#
#
# | p1 (.1.2)
# [p0 n0] --- grout --- | n1 lo
# | p2 (.2.2)
#
. $(dirname $0)/_init_frr.sh

p0=${run_id}0
p1=${run_id}1
p2=${run_id}2

create_interface $p0 f0:0d:ac:dc:00:00
create_interface $p1 f0:0d:ac:dc:00:01
create_interface $p2 f0:0d:ac:dc:00:02

netns_add n-$p0
ip l set $p0 netns n-$p0
ip -n n-$p0 link set $p0 address ba:d0:ca:ca:00:00
ip -n n-$p0 link set $p0 up
ip -n n-$p0 link set lo up
ip -n n-$p0 addr add 172.16.0.2/24 dev $p0
ip -n n-$p0 route add default via 172.16.0.1

netns_add n-$p1
ip l set $p1 netns n-$p1
ip l set $p2 netns n-$p1
ip -n n-$p1 link set lo up
ip -n n-$p1 addr add 192.0.0.2/32 dev lo
ip -n n-$p1 link set $p1 address ba:d0:ca:ca:00:01
ip -n n-$p1 link set $p1 up
ip -n n-$p1 addr add 172.16.1.2/24 dev $p1
ip -n n-$p1 link set $p2 address ba:d0:ca:ca:00:02
ip -n n-$p1 link set $p2 up
ip -n n-$p1 addr add 172.16.2.2/24 dev $p2

set_ip_address $p0 172.16.0.1/24
set_ip_address $p1 172.16.1.1/24
set_ip_address $p2 172.16.2.1/24
create_interface p0
create_interface p1
create_interface p2

netns_add n0
ip link set p0 netns n0
ip -n n0 link set p0 up
ip -n n0 addr add 172.16.0.2/24 dev p0
ip -n n0 route add default via 172.16.0.1

netns_add n1
ip link set p1 netns n1
ip link set p2 netns n1
ip -n n1 addr add 192.0.0.2/32 dev lo
ip -n n1 link set p1 up
ip -n n1 addr add 172.16.1.2/24 dev p1
ip -n n1 link set p2 up
ip -n n1 addr add 172.16.2.2/24 dev p2

set_ip_address p0 172.16.0.1/24
set_ip_address p1 172.16.1.1/24
set_ip_address p2 172.16.2.1/24

set_ip_route 192.0.0.0/24 172.16.1.2
# Can't use set_ip_route a second time
Expand All @@ -52,9 +41,9 @@ vtysh <<-EOF
ip route 192.0.0.0/24 172.16.2.2
EOF

ip -n n-$p1 route add default via 172.16.1.1
ip netns exec n-$p0 ping 192.0.0.2 -i0.01 -c 3
ip -n n1 route add default via 172.16.1.1
ip netns exec n0 ping -i0.01 -c3 -n 192.0.0.2

ip -n n-$p1 route del default
ip -n n-$p1 route add default via 172.16.2.1
ip netns exec n-$p0 ping 192.0.0.2 -i0.01 -c 3
ip -n n1 route del default
ip -n n1 route add default via 172.16.2.1
ip netns exec n0 ping -i0.01 -c3 -n 192.0.0.2
78 changes: 36 additions & 42 deletions smoke/ip_loadbalance_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,49 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2025 Christophe Fontaine

#
# p0 (.0.2) | |
# 192.200.0.2 lo n0 | --- grout --- | n1 p2 172.16.2.2
# p1 (.1.2) | |
#
. $(dirname $0)/_init.sh

p0=${run_id}0
p1=${run_id}1
p2=${run_id}2

grcli interface add port $p0 devargs net_tap0,iface=$p0 mac f0:0d:ac:dc:00:00
grcli interface add port $p1 devargs net_tap1,iface=$p1 mac f0:0d:ac:dc:00:01
grcli interface add port $p2 devargs net_tap2,iface=$p2 mac f0:0d:ac:dc:00:02

grcli address add 172.16.0.1/24 iface $p0
grcli address add 172.16.1.1/24 iface $p1
grcli address add 172.16.2.1/24 iface $p2

netns_add ${run_id}
ip -n ${run_id} link set lo up
ip -n ${run_id} addr add 192.200.0.2/24 dev lo

for n in 0 1; do
p=$run_id$n
ip link set $p netns ${run_id}
ip -n ${run_id} link set $p address ba:d0:ca:ca:00:0$n
ip -n ${run_id} link set $p up
ip -n ${run_id} addr add 172.16.$n.2/24 dev $p
done
port_add p0
port_add p1
port_add p2

netns_add n0
ip link set p0 netns n0
ip link set p1 netns n0
ip -n n0 addr add 192.200.0.2/24 dev lo
ip -n n0 link set p0 up
ip -n n0 addr add 172.16.0.2/24 dev p0
ip -n n0 link set p1 up
ip -n n0 addr add 172.16.1.2/24 dev p1
ip -n n0 nexthop add id 1601 via 172.16.0.1 dev p0
ip -n n0 nexthop add id 1611 via 172.16.1.1 dev p1
ip -n n0 nexthop add id 1620 group 1601/1611
ip -n n0 route add 172.16.2.0/24 nhid 1620

netns_add n1
ip link set p2 netns n1
ip -n n1 link set p2 up
ip -n n1 addr add 172.16.2.2/24 dev p2
ip -n n1 route add default via 172.16.2.1

grcli address add 172.16.0.1/24 iface p0
grcli address add 172.16.1.1/24 iface p1
grcli address add 172.16.2.1/24 iface p2

# Add ECMP route
grcli nexthop add l3 iface $p0 address 172.16.0.2 id 100
grcli nexthop add l3 iface $p1 address 172.16.1.2 id 101
grcli nexthop add l3 iface p0 address 172.16.0.2 id 100
grcli nexthop add l3 iface p1 address 172.16.1.2 id 101
grcli nexthop add group id 10 member 100 member 101
grcli route add 192.200.0.0/24 via id 10

# Locally generated ICMP requests
grcli ping 192.200.0.2 count 1 ident 1
grcli ping 192.200.0.2 count 1 ident 2
grcli ping 192.200.0.2 count 1 ident 1 delay 10
grcli ping 192.200.0.2 count 1 ident 2 delay 10

# Externally generated ICMP requests
ip -n ${run_id} nexthop add id 1601 via 172.16.0.1 dev $p0
ip -n ${run_id} nexthop add id 1611 via 172.16.1.1 dev $p1
ip -n ${run_id} nexthop add id 1620 group 1601/1611

ip -n ${run_id} route add 172.16.2.0/24 nhid 1620

netns_add $p2
ip link set $p2 netns $p2
ip -n $p2 link set $p2 address ba:d0:ca:ca:00:02
ip -n $p2 link set $p2 up
ip -n $p2 addr add 172.16.2.2/24 dev $p2
ip -n $p2 route add default via 172.16.2.1
ip netns exec $p2 ping 192.200.0.2 -c 3

grcli nexthop del 10
ip netns exec n0 ping -i0.01 -c3 -n 192.200.0.2
4 changes: 2 additions & 2 deletions smoke/srv6_frr_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,6 @@ ip -n n1 -6 route add fd00:202::/64 via fd00:102::1 dev p1
set_srv6_localsid locator_grout fd00:202 fd00:202::100

# test
ip netns exec n0 ping -c 3 192.168.60.1
ip netns exec n0 ping -i0.01 -c3 -n 192.168.60.1
# check that sid is reachable
ip netns exec n1 ping6 -c 3 fd00:202::100
ip netns exec n1 ping6 -i0.01 -c3 -n fd00:202::100
4 changes: 2 additions & 2 deletions smoke/srv6_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,6 @@ grcli nexthop add srv6-local behavior end.dt4 id 666
grcli route add fd00:202::100/128 via id 666

# test
ip netns exec n0 ping -c 3 192.168.60.1
ip netns exec n0 ping -i0.01 -c3 -n 192.168.60.1
# check that sid is reachable
ip netns exec n1 ping6 -c 3 fd00:202::100
ip netns exec n1 ping6 -i0.01 -c3 -n fd00:202::100