Indeed, ping does work if I ping the "fe80::1%lo1" on FIB 1, which is
correct.
My script was getting the address from the routing table output (F1)
which is returning "%lo0" instead of the correct loopback number (lo6 in
my case) and as a result it was failing.
The routing table should return the correct loop-back interface instead
of lo0. Not sure how difficult or easy it, i will take a look ( ENOCLUE).
Best regards.
Santi
On 7/18/24 18:15, Zhenlei Huang wrote:
On Jul 19, 2024, at 12:11 AM, Santiago Martinez <s...@codenetworks.net>
wrote:
Interesting, I'm running 14.1p2.
Yes, I'm running exactly the same version with you.
how does your routing table looks for fib1 ?
```
# netstat -6rnF 1
Routing tables (fib: 1)
Internet6:
Destination Gateway Flags Netif Expire
fe80::%lo1/64 link#5 U lo1
fe80::1%lo0 link#2 UHS lo0
```
Santi
On 7/18/24 18:09, Zhenlei Huang wrote:
On Jul 13, 2024, at 1:06 AM, Santiago Martinez
<s...@codenetworks.net> wrote:
Hi Everyone.
While adding -F ( fib as used in netstat ) to ping and ping6 I have
found something that from my understanding is not correct.
Please can you advise?
I have the following setup :
-- two fibs (0 and 1)
-- two loop-backs (lo0 and lo1).
-- Lo1 has been assigned to fib1
--net.add_addr_allfibs = 0
My interface output looks like this:
ifconfig lo0 | grep inet6
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
ifconfig lo1 | grep inet6
inet6 fe80::1%lo1 prefixlen 64 scopeid 0x3
If I do a netstat -rn -6 -F0 I get the following which is was i
expected.
Internet6:
Destination Gateway
Flags Netif Expire
::/96 link#2 URS
lo0
::1 link#2 UHS
lo0
::ffff:0.0.0.0/96 link#2 URS
lo0
fe80::%lo0/10 link#2 URS
lo0
fe80::%lo0/64 link#2 U
lo0
fe80::1%lo0 link#2 UHS
lo0
ff02::/16 link#2 URS
lo0
Now, netstat -rn -6 -F1 shows "fe80::1%lo0" which should not be
there and "fe80::1%lo1" is missing which should be there.
Internet6:
Destination Gateway
Flags Netif Expire
fe80::%lo1/64 link#3 U
lo1
*fe80::1%lo0 link#2
UHS lo0*
That seems wrong from my first glance. IIRC, there's HACK ( I'd
prefer this ) for loopback route. For example
```
# sysctl net.fibs=3
net.fibs: 2 -> 3
# ifconfig epair create
# epair0a
# ifconfig epair0a fib 2
# ifconfig epair0a inet6 -ifdisabled up
# netstat -6rnF 2
Routing tables (fib: 2)
Internet6:
Destination Gateway Flags Netif Expire
fe80::%epair0a/64 link#5 U
epair0a
fe80::3b:b3ff:fe8f:9a0a%lo0 link#1 UHS lo0
```
The loopback route always refer the first loop interface, aka lo0.
What output I was expecting was:
Internet6:
Destination Gateway
Flags Netif Expire
fe80::%lo1/64 link#3 U
lo1
*fe80::1%lo1 link#3
UHS lo1*
This makes the ping -6 -F0 fe80::1%lo0 to work but ping -6 -F1
fe80::1%l01 to fail which I wanted to use as test case.
That is interesting. I can ping without failure.
```
# setfib 1 ping6 -c3 fe80::1%lo1
PING(56=40+8+8 bytes) fe80::1%lo1 --> fe80::1%lo1
16 bytes from fe80::1%lo1, icmp_seq=0 hlim=64 time=0.050 ms
16 bytes from fe80::1%lo1, icmp_seq=1 hlim=64 time=0.067 ms
16 bytes from fe80::1%lo1, icmp_seq=2 hlim=64 time=0.096 ms
--- fe80::1%lo1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.050/0.071/0.096/0.019 ms
```
Best regards,
Zhenlei
Thanks in advance.
Santiago