Routing IPv6 packets towards oneself with routing sockets?

Fernando Gont fernando at gont.com.ar
Sat Aug 9 05:53:13 UTC 2014


Hi, Hiroki,

On 08/07/2014 04:37 PM, Hiroki Sato wrote:
> 
> fe> However, whenever I lookup an entry for fc00:1::1 with routing sockets,
> fe> the only entry I obtain is fc00:1::/64 (a network route) rather than
> fe> fc00:1::1/128 (a host route).
> 
>  Does this mean you got RTA_DST with fc00:1::/64 when
>  "bsd-lookup-simple -v fc00:1::1"?  If so, it is very strange.  

Nope, you're right. I get fc00:1::1... the only "problem" was that the
outgoing interface was incorrect... but as you noted, that had to do
with me not setting RTA_IFP. (FWIW, my guide for using routing sockets
was Stevens' UNPv1... but IIRC he never mentioned that of setting
RTA_IFP, but rather suggested that RTA_GATEWAY could return AF_INET or
AF_LINK (in his discussion about IPv4, since there was no discussion
about IPv6).



>  Although your code assumes RTA_GATEWAY eventually returns the
>  outgoing interface, it is not always true.  RTA_IFP should be used if
>  you want to look up it instead of looking up gateways until AF_LINK
>  is obtained.  Certainly RTA_GATEWAY returns AF_LINK and you can check
>  sdl_index in it, but the index number is not always the same as the
>  actual outgoing interface (one of the examples is a host route).

Just curious: what's the meaning of the AF_LINK I was reading?



>  A revised source file is attached.  Some nits are also fixed: 1)
>  SA_SIZE() on MacOSX is not aligned with sizeof(long) and 2)
>  IFACE_LENGTH should be IFNAMSIZ.

Thanks so much! -- I'll incorporate these into the ipv6toolkit (that's
the reason for which I was playing with this in the first place).

Thanks again!

Best regards,
-- 
Fernando Gont
e-mail: fernando at gont.com.ar || fgont at si6networks.com
PGP Fingerprint: 7809 84F5 322E 45C7 F1C9 3945 96EE A9EF D076 FFF1





More information about the freebsd-net mailing list