added support for dropping packets if hop limit is reached

This commit is contained in:
joxe 2010-03-09 15:50:15 +00:00
parent 1214b1fa40
commit 48a9bff889

View file

@ -41,7 +41,7 @@
* *
* This file is part of the uIP TCP/IP stack. * This file is part of the uIP TCP/IP stack.
* *
* $Id: uip6.c,v 1.13 2010/02/15 19:23:54 adamdunkels Exp $ * $Id: uip6.c,v 1.14 2010/03/09 15:50:15 joxe Exp $
* *
*/ */
@ -1099,9 +1099,16 @@ uip_process(u8_t flag)
PRINT6ADDR(&UIP_IP_BUF->destipaddr); PRINT6ADDR(&UIP_IP_BUF->destipaddr);
PRINTF("\n"); PRINTF("\n");
/* Decrement the TTL (time-to-live) value in the IP header */ if(UIP_IP_BUF->ttl <= 1) {
UIP_IP_BUF->ttl = UIP_IP_BUF->ttl - 1; PRINTF("Dropping packet: hop limit reached\n");
UIP_STAT(++uip_stat.ip.forwarded); UIP_STAT(++uip_stat.ip.drop);
uip_icmp6_error_output(ICMP6_TIME_EXCEEDED,
ICMP6_TIME_EXCEED_TRANSIT, 0);
} else {
/* Decrement the TTL (time-to-live) value in the IP header */
UIP_IP_BUF->ttl = UIP_IP_BUF->ttl - 1;
UIP_STAT(++uip_stat.ip.forwarded);
}
goto send; goto send;
} else if(!uip_is_addr_linklocal_allnodes_mcast(&UIP_IP_BUF->destipaddr) && } else if(!uip_is_addr_linklocal_allnodes_mcast(&UIP_IP_BUF->destipaddr) &&
!uip_is_addr_linklocal_allrouters_mcast(&UIP_IP_BUF->destipaddr)) { !uip_is_addr_linklocal_allrouters_mcast(&UIP_IP_BUF->destipaddr)) {