Thursday, June 29, 2023

Re: relayd: pfe_route: failed to add gateway 22 Invalid argument

On Thu, Jun 29, 2023 at 09:34:10AM +0200, Jörg Streckfuß wrote:
> Hi Claudio,
>
> Am 29.06.23 um 09:01 schrieb Claudio Jeker:
> > On Thu, Jun 29, 2023 at 08:53:05AM +0200, Jörg Streckfuß wrote:
> > >
> > > Hi list,
> > >
> > > here is a small addition. Adding and deleting the route to and from routing
> > > table on the command line works as expected:
> > >
> > > fw1 # route add 2001:xxxx:xxxx:xxxx::4/128 2001:xxxx:xxxx:xxxx::4 -label
> > > geo_service
> > > add host 2001:xxxx:xxxx:xxxx::4/128: gateway 2001:xxxx:xxxx:xxxx::4
> > >
> > > fw# route -n show -inet6 | grep 2001:xxxx:xxxx:xxxx::4
> > > 2001:xxxx:xxxx:xxxx::4 52:01:8d:e4:fd:63 UHLch
> > > 1 23015 - 3 vlan18
> > > 2001:xxxx:xxxx:xxxx::4 2001:xxxx:xxxx:xxxx::4 UGHS
> > > 0 0 - 8 vlan18
> > >
> > > fw1 # route del 2001:xxxx:xxxx:xxxx::4/128 2001:xxxx:xxxx:xxxx::4 -label
> > > geo_service
> > > del host 2001:xxxx:xxxx:xxxx::4/128: gateway 2001:xxxx:xxxx:xxxx::4
> > >
> > > fw1# route -n show -inet6 | grep 2001:xxxx:xxxx:xxxx::4
> > >
> > > 2001:638:dfce:3000::4 52:01:8d:e4:fd:63 UHLc 0
> > > 23015 - 3 vlan18
> > >
> > >
> > > Why can't relayd add the route to the table and what does the following log
> > > concretely mean:
> > >
> > > <snip>
> > > pfe_route: failed to add gateway 2001:638:dfce:3000::4: 22 Invalid argument
> > > <snap>
> > >
> >
> > Run route -n monitor will give you more insights at what is sent to the
> > kernel. At least unless the route message is so mangled that the kernel
> > fails to parse it.
>
> This is interesting. I ran route -n monitor and run relayd but it says
> nothing. No output at all.

Ugh, relayd pfe_route is utterly broken for IPv6. That code never worked,
the encoded message is not properly aligned because struct sockaddr_in6
does not align to a long word boundary.

This function requires a rewrite.
--
:wq Claudio

No comments:

Post a Comment