lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] [patch #7913] Enable Support for IPv6 Loopback


From: Grant Erickson
Subject: [lwip-devel] [patch #7913] Enable Support for IPv6 Loopback
Date: Fri, 04 Jan 2013 00:52:01 +0000
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17

URL:
  <http://savannah.nongnu.org/patch/?7913>

                 Summary: Enable Support for IPv6 Loopback
                 Project: lwIP - A Lightweight TCP/IP stack
            Submitted by: marathon96
            Submitted on: Fri 04 Jan 2013 12:51:59 AM GMT
                Category: None
                Priority: 5 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: None

    _______________________________________________________

Details:

diff --git a/src/core/ipv6/ip6.c b/src/core/ipv6/ip6.c
index 94e423a..e3957b1 100644
--- a/src/core/ipv6/ip6.c
+++ b/src/core/ipv6/ip6.c
@@ -802,10 +802,11 @@ ip6_output_if(struct pbuf *p, ip6_addr_t *src,
ip6_addr_t *dest,
   ip6_debug_print(p);
 
 #if ENABLE_LOOPBACK
-  /* TODO implement loopback for v6
-  if (ip6_addr_cmp(dest, netif_ip6_addr(0))) {
+  if (ip6_addr_cmp(dest, netif_ip6_addr(netif, 0))) {
+    /* Packet to self, enqueue it for loopback */
+    LWIP_DEBUGF(IP6_DEBUG, ("netif_loop_output()\n"));
     return netif_loop_output(netif, p, dest);
-  }*/
+  }
 #endif /* ENABLE_LOOPBACK */
 #if LWIP_IPV6_FRAG
   /* don't fragment if interface has mtu set to 0 [loopif] */
diff --git a/src/core/netif.c b/src/core/netif.c
index f8133f7..7b5ab17 100644
--- a/src/core/netif.c
+++ b/src/core/netif.c
@@ -88,6 +88,12 @@ static u8_t netif_num;
 static err_t netif_null_output_ip6(struct netif *netif, struct pbuf *p,
ip6_addr_t *ipaddr);
 #endif /* LWIP_IPV6 */
 
+#if LWIP_IPV6
+#define ipX_input(in, netif) (IP6H_V((const struct ip6_hdr *)in->payload) ==
6) ? ip6_input(in, netif) : ip_input(in, netif)
+#else
+#define ipX_input(in, netif) ip_input(in, netif)
+#endif
+
 #if LWIP_HAVE_LOOPIF
 static struct netif loop_netif;
 
@@ -127,6 +133,10 @@ netif_init(void)
 #else  /* NO_SYS */
   netif_add(&loop_netif, &loop_ipaddr, &loop_netmask, &loop_gw, NULL,
netif_loopif_init, tcpip_input);
 #endif /* NO_SYS */
+#if LWIP_IPV6
+  ip6_addr_set_loopback(&loop_netif.ip6_addr[0]);
+  netif_ip6_addr_set_state(&loop_netif, 0, IP6_ADDR_VALID);
+#endif /* LWIP_IPV6 */
   netif_set_up(&loop_netif);
 
 #endif /* LWIP_HAVE_LOOPIF */
@@ -798,7 +808,7 @@ netif_poll(struct netif *netif)
       snmp_add_ifinoctets(stats_if, in->tot_len);
       snmp_inc_ifinucastpkts(stats_if);
       /* loopback packets are always IP packets! */
-      if (ip_input(in, netif) != ERR_OK) {
+      if (ipX_input(in, netif) != ERR_OK) {
         pbuf_free(in);
       }
       /* Don't reference the packet any more! */



    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Fri 04 Jan 2013 12:51:59 AM GMT  Name: ip6-loopback-0001.0.patch  Size:
822B   By: marathon96
These patches add support for IPv6 loopback.
<http://savannah.nongnu.org/patch/download.php?file_id=27196>
-------------------------------------------------------
Date: Fri 04 Jan 2013 12:51:59 AM GMT  Name: ip6-loopback-0002.0.patch  Size:
2kB   By: marathon96
These patches add support for IPv6 loopback.
<http://savannah.nongnu.org/patch/download.php?file_id=27197>

    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/patch/?7913>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]