netdev
[Top] [All Lists]

Re: [PATCH][IPV6][NDISC] unify ipv6 output routine

To: mika.penttila@xxxxxxxxxxx
Subject: Re: [PATCH][IPV6][NDISC] unify ipv6 output routine
From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx>
Date: Sat, 07 Feb 2004 19:28:04 +0900 (JST)
Cc: kazunori@xxxxxxxxxxxx, davem@xxxxxxxxxx, netdev@xxxxxxxxxxx, usagi-core@xxxxxxxxxxxxxx
In-reply-to: <4024A488.60203@xxxxxxxxxxx>
Organization: USAGI Project
References: <4023D6FB.9010909@xxxxxxxxxxx> <20040207.131455.27570445.yoshfuji@xxxxxxxxxxxxxx> <4024A488.60203@xxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
In article <4024A488.60203@xxxxxxxxxxx> (at Sat, 07 Feb 2004 10:40:40 +0200), 
Mika Penttilä <mika.penttila@xxxxxxxxxxx> says:

> >The ip6_output2() resolves and inserts link-layer address appropriately.
> >If it did, we would have noticed (by conformance test or even by
> >usual operation). ;-)
> >  
> >
> ip6_output2() doesn't resolve link-layer addresses. We don't even have a 
> neighbour, in
> ndisc_dst_alloc(dev, NULL, ip6_output2); case.

ip6_output2() calls ip6_output_flinish().
ip6_output_finish() calls dst->hh->hh_output() if hh is already built.
Otherwise, dst->neighbour->output() is called and it resolves 
link-layer address of neighbor.

I think you missed our ndsic_dst_alloc() change.
ndisc_dst_alloc() takes 4 argument:
   struct dst_entry *ndisc_dst_alloc(struct net_device *dev, 
                                     struct neighbour *neigh,
                                     struct in6_addr *addr,
                                     int (*output)(struct sk_buff *));
If neigh is NULL, we do ndisc_get_neigh(dev, addr) to get one.


> You just described how the normal link layer address resolving goes. It 
> doesn't apply here. Again, there is no dst->neighbour.

There IS with our patch.

-- 
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA


<Prev in Thread] Current Thread [Next in Thread>