diff options
| author | Bernard Xiong <[email protected]> | 2015-01-26 06:35:08 +0000 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2015-01-26 06:35:08 +0000 |
| commit | 15231efaffb0a916e5d084f5cc59830faf873dd6 (patch) | |
| tree | 2b5a7cee8efd0214f71c6b20a2c596f010126813 /components | |
| parent | 1512da3b03be76c3b0483c6ff16bc9093f2b20dd (diff) | |
[lwIP] Add IPv4 input hook
Diffstat (limited to 'components')
| -rw-r--r-- | components/net/lwip-1.4.1/src/arch/sys_arch.c | 20 | ||||
| -rw-r--r-- | components/net/lwip-1.4.1/src/lwipopts.h | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/components/net/lwip-1.4.1/src/arch/sys_arch.c b/components/net/lwip-1.4.1/src/arch/sys_arch.c index 287c861f04..c94b54dd1d 100644 --- a/components/net/lwip-1.4.1/src/arch/sys_arch.c +++ b/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) { diff --git a/components/net/lwip-1.4.1/src/lwipopts.h b/components/net/lwip-1.4.1/src/lwipopts.h index bff172e280..edae3163c3 100644 --- a/components/net/lwip-1.4.1/src/lwipopts.h +++ b/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 |
