Răsfoiți Sursa

[lwIP] Add IPv4 input hook

Bernard Xiong 10 ani în urmă
părinte
comite
15231efaff

+ 20 - 0
components/net/lwip-1.4.1/src/arch/sys_arch.c

@@ -601,6 +601,26 @@ u32_t sys_now(void)
 	return rt_tick_get() * (1000 / RT_TICK_PER_SECOND);
 }
 
+/*
+ * lwIP IPv4 input hook
+ */
+#ifdef LWIP_USING_IP4INPUT_HOOK
+static int (*_lwip_ip_input_hook)(struct pbuf *p, struct netif *inp) = RT_NULL;
+
+void lwip_ip_input_set_hook(int (*hook)(struct pbuf *p, struct netif *inp))
+{
+    _lwip_ip_input_hook = hook;
+}
+
+int lwip_ip_input_hook(struct pbuf *p, struct netif *inp)
+{
+    if (_lwip_ip_input_hook != RT_NULL) 
+        return _lwip_ip_input_hook(p, inp);
+
+    return 0;
+}
+#endif
+
 #ifdef RT_LWIP_PPP
 u32_t sio_read(sio_fd_t fd, u8_t *buf, u32_t size)
 {

+ 8 - 0
components/net/lwip-1.4.1/src/lwipopts.h

@@ -161,6 +161,14 @@
  */
 #define SYS_LIGHTWEIGHT_PROT        (NO_SYS==0)
 
+#ifdef LWIP_USING_IP4INPUT_HOOK
+struct pbuf;
+struct netif;
+int lwip_ip_input_hook(struct pbuf *p, struct netif *inp);
+
+#define LWIP_HOOK_IP4_INPUT         lwip_ip_input_hook
+#endif
+
 /* ---------- TCP options ---------- */
 #ifdef RT_LWIP_TCP
 #define LWIP_TCP                    1