On Mon, Aug 8, 2011 at 3:39 PM, Kieran Mansley <kie...@recoil.org> wrote:

> On Mon, 2011-08-08 at 15:28 +0530, Rahul Gundecha wrote:
> > Running tcpdump shows that tap0 sends Router Solicitation and Router
> > Advertisements. But no other packet hits tap0 interface.
>
> In that case I would start looking at why the lwIP end of the tap link
> doesn't think it has received a router advertisement as from your
> previous description that seems to be the problem.
>
Yes, Router Advertisements were not reaching to lwip due to filtering in
tapif_input based on ethertype. I added a check for IPv6 ethertype and now I
can see IPv6 packets reaching lwip.

Second problem was that there was no output_ip6 function assigned for the
netif interface. After assigning ethip6_output as output_ip6 function I can
see lwip sends the packets which are seen on other end of tap interface.

However now the problem is that the link-local IP address is not correctly
assigned to the interface. The packets are sent with source address as
IP6_ADDR_ANY. Debugging this issue further.

Below is the patch fixing the first two issues, can someone point me the
procedure to submit the patch to lwip-contrib. Is there any different
mailing list for that.

Thanks,
Rahul


diff --git a/ports/unix/netif/tapif.c b/ports/unix/netif/tapif.c
index 49bca65..974c0ad 100644
--- a/ports/unix/netif/tapif.c
+++ b/ports/unix/netif/tapif.c
@@ -52,6 +52,7 @@
 #include "lwip/sys.h"

 #include "netif/etharp.h"
+#include "lwip/ethip6.h"

 #if defined(LWIP_DEBUG) && defined(LWIP_TCPDUMP)
 #include "netif/tcpdump.h"
@@ -300,6 +301,7 @@ tapif_input(struct netif *netif)
   /* IP or ARP packet? */
   case ETHTYPE_IP:
   case ETHTYPE_ARP:
+  case ETHTYPE_IPV6:
 #if PPPOE_SUPPORT
   /* PPPoE packet? */
   case ETHTYPE_PPPOEDISC:
@@ -340,6 +342,10 @@ tapif_init(struct netif *netif)
   netif->name[0] = IFNAME0;
   netif->name[1] = IFNAME1;
   netif->output = etharp_output;
+#if LWIP_IPV6
+  netif->output_ip6 = ethip6_output;
+#endif /* LWIP_IPV6 */
+
   netif->linkoutput = low_level_output;
   netif->mtu = 1500;
   /* hardware address length */





>
> Perhaps lwIP isn't automatically assigning an IPv6 address to its end of
> the link (I would be surprised if it did) and so you would have to
> arrange for this to happen, but I'm not sure of the exact commands to do
> this as the IPv6 code is new enough that I haven't experimented with it
> yet.
>
> Kieran
>
>
> _______________________________________________
> lwip-users mailing list
> lwip-users@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to