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