# ipv6 -host route to on-link gateway fails



## whoops (Mar 30, 2017)

I've successfully reinstalled my OVH VPS with FreeBSD, so I'm well into unsupported territory here. Before reinstalling I did verify IPv6 works as expected under Linux.

OVH's IPv6 configuration is a bit interesting. You can find the full instructions here, but the short version is:
IP: 2607:5300:201:3000::6714
Prefix: 128
Gateway: 2607:5300:201:3000::1

Obviously since the gateway (nor anything else) falls within the prefix, a static route is needed. I've attempted to model it with the configuration in /etc/rc.conf


```
ipv6_default_interface="vtnet0"
ifconfig_vtnet0_ipv6="inet6 2607:5300:201:3000::6714 prefixlen 128"
ipv6_static_routes="gateway default"
ipv6_route_gateway="-host 2607:5300:201:3000::1 -interface vtnet0"
ipv6_route_default="default 2607:5300:201:3000::1"
```

However if I attempt to ping the gateway, I get this

```
# ping6 2607:5300:201:3000::1
PING6(56=40+8+8 bytes) 2607:5300:201:3000::6714 --> 2607:5300:201:3000::1
ping6: sendmsg: No buffer space available
ping6: wrote 2607:5300:201:3000::1 16 chars, ret=-1
ping6: sendmsg: No buffer space available
ping6: wrote 2607:5300:201:3000::1 16 chars, ret=-1
^C
--- 2607:5300:201:3000::1 ping6 statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
```

The resulting routing table looks right to me

```
...
default                           2607:5300:201:3000::1         UGS      vtnet0
...
2607:5300:201:3000::1             fa:16:3e:a6:85:f2             UHS      vtnet0
2607:5300:201:3000::6714          link#1                        UHS         lo0
...
```

However if I change up my configuration to expand my prefix to include the gateway

```
ifconfig_vtnet0_ipv6="inet6 2607:5300:201:3000::6714 prefixlen 112"
ipv6_defaultrouter="2607:5300:201:3000::1"
```

My routing table becomes

```
...
default                           2607:5300:201:3000::1         UGS      vtnet0
...
2607:5300:201:3000::/112          link#1                        U        vtnet0
2607:5300:201:3000::6714          link#1                        UHS         lo0
...
```

Everything is fine, and IPv6 works great.  I don't love this solution though, since I can't actually reach all addresses in that /112 without going through the gateway, and it seems like the original solution should work (in fact it does on Linux).

Does anyone have any thoughts on what the problem might be?


----------



## SirDice (Mar 31, 2017)

Try this:

```
ifconfig_vtnet0_ipv6="inet6 2607:5300:201:3000::6714 prefixlen 128"
ipv6_defaultrouter="-iface vtnet0"
```


----------



## whoops (Mar 31, 2017)

I just tried that configuration and get the same error

```
$ ping6 google.com
PING6(56=40+8+8 bytes) 2607:5300:201:3000::6714 --> 2607:f8b0:4006:805::200e
ping6: sendmsg: No buffer space available
ping6: wrote google.com 16 chars, ret=-1
ping6: sendmsg: No buffer space available
ping6: wrote google.com 16 chars, ret=-1
^C
--- google.com ping6 statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
$ ping6 2607:5300:201:3000::1
PING6(56=40+8+8 bytes) 2607:5300:201:3000::6714 --> 2607:5300:201:3000::1
ping6: sendmsg: No buffer space available
ping6: wrote 2607:5300:201:3000::1 16 chars, ret=-1
ping6: sendmsg: No buffer space available
ping6: wrote 2607:5300:201:3000::1 16 chars, ret=-1
```

The resulting routing table was

```
....
default                           fa:16:3e:a6:85:f2             US       vtnet0
....
2607:5300:201:3000::6714          link#1                        UHS         lo0
```


----------



## Murf (Apr 28, 2017)

Where you able to solve this? I'm currently trying to get ipv6 working on OVH also. (Cheating using prefix 112 works for me also... It is all Slightly annoying.)

rc.conf

```
ifconfig_vtnet0_ipv6="inet6 2001:41d0:0302:2100:0000:0000:0000:72b5/128"
ipv6_route_net3="2001:41d0:0302:2100:0000:0000:0000:0001 -prefixlen 128 -interface vtnet0"
ipv6_route_net4="default 2001:41d0:0302:2100:0000:0000:0000:0001"
```
netstat -rn

```
default                           2001:41d0:302:2100::1         UGS      vtnet0
2001:41d0:302:2100::1             fa:16:3e:16:43:9f             UHS      vtnet0
```


----------



## whoops (Apr 29, 2017)

I'm afraid not, and I don't think the problem is OVH related. I think it might be time to open a bug against FreeBSD itself. Those routing tables *really* look correct to me, and even if they weren't the pings should just get lost in the ether rather than saying `sendmsg: No buffer space available`. Doubly so since `tcpdump` verifies that no packets actually leave the interface. If I can find the time this weekend I'll reproduce with KVM on my local desktop and see if I can figure out how to report it.


----------



## lothos (Jun 16, 2017)

I'm also with OVH and using FreeBSD 11.0-RELEASE-p9 

My ipv6 has been working great until today.  I just did a pkg upgrade and it installed or updated unbound.  After unbound was updated/installed I was also getting this error pinging my gateway:

ping6: sendmsg: No buffer space available

I prefer to use bind9 instead of unbound.  I disabled unbound again, and rebooted, and I have my ipv6 back.  I'm not sure if the issue is directly related or not, but you guys might want to try disabling unbound and using bind9 and seeing if that fixes your ipv6 issue.


----------



## hackish (Dec 16, 2017)

I know this thread is a bit old, but I'm also on OVH running 11.0-RELEASE-p15 and I get the error others have noted. One of my machines is quite happy to ping their suggested test address while the other returns with:
ping6 -c 4 2001:4860:4860::8888
PING6(56=40+8+8 bytes) 2607:5300:60:2db2:: --> 2001:4860:4860::8888
ping6: sendmsg: No buffer space available


----------

