diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2013-09-06 09:18:07 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2013-09-06 09:18:07 -0600 |
commit | 8601e2839ecae85978c6dd0aa372fb5ee2f1e4c6 (patch) | |
tree | 078b73be7d6f332af6feafff4bad529665f0fb32 /nuttx/net/uip/uip_input.c | |
parent | 70d21b8c25966310cf3fc123092f10f297e8a653 (diff) | |
download | nuttx-8601e2839ecae85978c6dd0aa372fb5ee2f1e4c6.tar.gz nuttx-8601e2839ecae85978c6dd0aa372fb5ee2f1e4c6.tar.bz2 nuttx-8601e2839ecae85978c6dd0aa372fb5ee2f1e4c6.zip |
Partial implementation of driver-based UDP backlog still missing some logic. From Max Holtzberg.
Diffstat (limited to 'nuttx/net/uip/uip_input.c')
-rw-r--r-- | nuttx/net/uip/uip_input.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/nuttx/net/uip/uip_input.c b/nuttx/net/uip/uip_input.c index 878b351a7..73773b0ed 100644 --- a/nuttx/net/uip/uip_input.c +++ b/nuttx/net/uip/uip_input.c @@ -2,7 +2,7 @@ * netuip/uip_input.c * The uIP TCP/IP stack code. * - * Copyright (C) 2007-2009, 2012 Gregory Nutt. All rights reserved. + * Copyright (C) 2007-2009, 2013 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <gnutt@nuttx.org> * * Adapted for NuttX from logic in uIP which also has a BSD-like license: @@ -170,7 +170,7 @@ static uint8_t uip_reass(void) * fragment into the buffer. */ - if (uiphdr_addr_cmp(pbuf->srcipaddr, pfbuf->srcipaddr) && + if (uiphdr_addr_cmp(pbuf->srcipaddr, pfbuf->srcipaddr) && uiphdr_addr_cmp(pbuf->destipaddr == pfbuf->destipaddr) && pbuf->g_ipid[0] == pfbuf->g_ipid[0] && pbuf->g_ipid[1] == pfbuf->g_ipid[1]) { @@ -291,11 +291,14 @@ nullreturn: * * Description: * + * Returned Value: + * OK if packet could be processed, otherwise ERROR. + * * Assumptions: * ****************************************************************************/ -void uip_input(struct uip_driver_s *dev) +int uip_input(struct uip_driver_s *dev) { struct uip_ip_hdr *pbuf = BUF; uint16_t iplen; @@ -311,7 +314,7 @@ void uip_input(struct uip_driver_s *dev) #ifdef CONFIG_NET_IPv6 /* Check validity of the IP header. */ - if ((pbuf->vtc & 0xf0) != 0x60) + if ((pbuf->vtc & 0xf0) != 0x60) { /* IP version and header length. */ @@ -405,8 +408,7 @@ void uip_input(struct uip_driver_s *dev) uip_ipaddr_cmp(pbuf->destipaddr, g_alloneaddr)) #endif { - uip_udpinput(dev); - return; + return uip_udpinput(dev); } /* In most other cases, the device must be assigned a non-zero IP @@ -537,9 +539,11 @@ void uip_input(struct uip_driver_s *dev) /* Return and let the caller do any actual transmission. */ - return; + return OK; drop: dev->d_len = 0; + + return ERROR; } #endif /* CONFIG_NET */ |