Index: trunk/src/VBox/Devices/Network/lwip-new/CHANGELOG
===================================================================
--- trunk/src/VBox/Devices/Network/lwip-new/CHANGELOG	(revision 50172)
+++ trunk/src/VBox/Devices/Network/lwip-new/CHANGELOG	(revision 50173)
@@ -80,4 +80,15 @@
 
  ++ Bugfixes:
+
+  2014-01-14: "Freddie Chopin"
+  * snmp.h, mib2.c: fixed constness and spelling of sysdescr
+
+  2014-01-14: Simon Goldschmidt (patch by Thomas Faber)
+  * tcpip.c: patch #8241: Fix implicit declaration of ip_input with
+    LWIP_TCPIP_CORE_LOCKING_INPUT disabled
+
+  2014-01-14: chrysn
+  * timers.c: patch #8244 make timeouts usable reliably from outside of the
+    timeout routine
 
   2014-01-10: Simon Goldschmidt
Index: trunk/src/VBox/Devices/Network/lwip-new/src/api/tcpip.c
===================================================================
--- trunk/src/VBox/Devices/Network/lwip-new/src/api/tcpip.c	(revision 50172)
+++ trunk/src/VBox/Devices/Network/lwip-new/src/api/tcpip.c	(revision 50173)
@@ -47,4 +47,5 @@
 #include "lwip/tcpip.h"
 #include "lwip/init.h"
+#include "lwip/ip.h"
 #include "netif/etharp.h"
 #include "netif/ppp_oe.h"
Index: trunk/src/VBox/Devices/Network/lwip-new/src/core/snmp/mib2.c
===================================================================
--- trunk/src/VBox/Devices/Network/lwip-new/src/core/snmp/mib2.c	(revision 50172)
+++ trunk/src/VBox/Devices/Network/lwip-new/src/core/snmp/mib2.c	(revision 50173)
@@ -773,6 +773,6 @@
 static const u8_t sysdescr_len_default = 4;
 static const u8_t sysdescr_default[] = "lwIP";
-static u8_t* sysdescr_len_ptr = (u8_t*)&sysdescr_len_default;
-static u8_t* sysdescr_ptr = (u8_t*)&sysdescr_default[0];
+static const u8_t* sysdescr_len_ptr = &sysdescr_len_default;
+static const u8_t* sysdescr_ptr = &sysdescr_default[0];
 /** mib-2.system.sysContact */
 static const u8_t syscontact_len_default = 0;
@@ -903,5 +903,5 @@
  * @param n number of octets to copy.
  */
-static void ocstrncpy(u8_t *dst, u8_t *src, u16_t n)
+static void ocstrncpy(u8_t *dst, const u8_t *src, u16_t n)
 {
   u16_t i = n;
@@ -919,5 +919,5 @@
  * @param n number of sub identifiers to copy.
  */
-void objectidncpy(s32_t *dst, s32_t *src, u8_t n)
+void objectidncpy(s32_t *dst, const s32_t *src, u8_t n)
 {
   u8_t i = n;
@@ -934,5 +934,5 @@
  * @param len points to string length, excluding zero terminator
  */
-void snmp_set_sysdesr(u8_t *str, u8_t *len)
+void snmp_set_sysdescr(const u8_t *str, const u8_t *len)
 {
   if (str != NULL)
Index: trunk/src/VBox/Devices/Network/lwip-new/src/core/timers.c
===================================================================
--- trunk/src/VBox/Devices/Network/lwip-new/src/core/timers.c	(revision 50172)
+++ trunk/src/VBox/Devices/Network/lwip-new/src/core/timers.c	(revision 50173)
@@ -369,4 +369,7 @@
 {
   struct sys_timeo *timeout, *t;
+#if NO_SYS
+  u32_t now, diff;
+#endif
 
   timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT);
@@ -375,8 +378,23 @@
     return;
   }
+
+#if NO_SYS
+  now = sys_now();
+  if (next_timeout == NULL) {
+    diff = 0;
+    timeouts_last_time = now;
+  } else {
+    diff = now - timeouts_last_time;
+  }
+#endif
+
   timeout->next = NULL;
   timeout->h = handler;
   timeout->arg = arg;
+#if NO_SYS
+  timeout->time = msecs + diff;
+#else
   timeout->time = msecs;
+#endif
 #if LWIP_DEBUG_TIMERNAMES
   timeout->handler_name = handler_name;
@@ -480,5 +498,5 @@
         /* timeout has expired */
         had_one = 1;
-        timeouts_last_time = now;
+        timeouts_last_time += tmptimeout->time;
         diff -= tmptimeout->time;
         next_timeout = tmptimeout->next;
Index: trunk/src/VBox/Devices/Network/lwip-new/src/include/lwip/snmp.h
===================================================================
--- trunk/src/VBox/Devices/Network/lwip-new/src/include/lwip/snmp.h	(revision 50172)
+++ trunk/src/VBox/Devices/Network/lwip-new/src/include/lwip/snmp.h	(revision 50173)
@@ -99,5 +99,5 @@
 
 /* system */
-void snmp_set_sysdesr(u8_t* str, u8_t* len);
+void snmp_set_sysdescr(const u8_t* str, const u8_t* len);
 void snmp_set_sysobjid(struct snmp_obj_id *oid);
 void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid);
@@ -232,5 +232,5 @@
 
 /* system */
-#define snmp_set_sysdesr(str, len)
+#define snmp_set_sysdescr(str, len)
 #define snmp_set_sysobjid(oid);
 #define snmp_get_sysobjid_ptr(oid)
Index: trunk/src/VBox/Devices/Network/lwip-new/src/include/lwip/sockets.h
===================================================================
--- trunk/src/VBox/Devices/Network/lwip-new/src/include/lwip/sockets.h	(revision 50172)
+++ trunk/src/VBox/Devices/Network/lwip-new/src/include/lwip/sockets.h	(revision 50173)
@@ -168,8 +168,10 @@
 
 #define IPPROTO_IP      0
+#define IPPROTO_ICMP    1 
 #define IPPROTO_TCP     6
 #define IPPROTO_UDP     17
 #if LWIP_IPV6
 #define IPPROTO_IPV6    41
+#define IPPROTO_ICMPV6  58
 #endif /* LWIP_IPV6 */
 #define IPPROTO_UDPLITE 136
