diff options
Diffstat (limited to 'nuttx/net/uip/uip-neighbor.c')
-rw-r--r-- | nuttx/net/uip/uip-neighbor.c | 143 |
1 files changed, 72 insertions, 71 deletions
diff --git a/nuttx/net/uip/uip-neighbor.c b/nuttx/net/uip/uip-neighbor.c index 6da1a891d..d2fb74304 100644 --- a/nuttx/net/uip/uip-neighbor.c +++ b/nuttx/net/uip/uip-neighbor.c @@ -1,6 +1,11 @@ /* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. + * uip-neighbor.c + * Database of link-local neighbors, used by IPv6 code and to be used by + * a future ARP code rewrite. + * + * Author: Adam Dunkels <adam@sics.se> + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -25,23 +30,12 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.c,v 1.1.1.1 2007-08-26 23:04:08 patacongo Exp $ - */ - -/** - * \file - * Database of link-local neighbors, used by IPv6 code and - * to be used by a future ARP code rewrite. - * \author - * Adam Dunkels <adam@sics.se> */ #include "uip-neighbor.h" #include <string.h> +#include <debug.h> #define MAX_TIME 128 @@ -51,108 +45,115 @@ #define ENTRIES 8 #endif /* UIP_NEIGHBOR_CONF_ENTRIES */ -struct neighbor_entry { +struct neighbor_entry +{ uip_ipaddr_t ipaddr; struct uip_neighbor_addr addr; uint8 time; }; static struct neighbor_entry entries[ENTRIES]; -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_init(void) +void uip_neighbor_init(void) { int i; - for(i = 0; i < ENTRIES; ++i) { - entries[i].time = MAX_TIME; - } + for(i = 0; i < ENTRIES; ++i) + { + entries[i].time = MAX_TIME; + } } -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_periodic(void) + +void uip_neighbor_periodic(void) { int i; - for(i = 0; i < ENTRIES; ++i) { - if(entries[i].time < MAX_TIME) { - entries[i].time++; + for(i = 0; i < ENTRIES; ++i) + { + if (entries[i].time < MAX_TIME) + { + entries[i].time++; + } } - } } -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr) + +void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr) { int i, oldest; uint8 oldest_time; - printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", - addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3], - addr->addr.addr[4], addr->addr.addr[5]); - + dbg("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", + addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3], + addr->addr.addr[4], addr->addr.addr[5]); + /* Find the first unused entry or the oldest used entry. */ + oldest_time = 0; oldest = 0; - for(i = 0; i < ENTRIES; ++i) { - if(entries[i].time == MAX_TIME) { - oldest = i; - break; - } - if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) { - oldest = i; - break; - } - if(entries[i].time > oldest_time) { - oldest = i; - oldest_time = entries[i].time; + for (i = 0; i < ENTRIES; ++i) + { + if (entries[i].time == MAX_TIME) + { + oldest = i; + break; + } + if (uip_ipaddr_cmp(entries[i].ipaddr, addr)) + { + oldest = i; + break; + } + if (entries[i].time > oldest_time) + { + oldest = i; + oldest_time = entries[i].time; + } } - } /* Use the oldest or first free entry (either pointed to by the - "oldest" variable). */ + * "oldest" variable). + */ + entries[oldest].time = 0; uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr); memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr)); } -/*---------------------------------------------------------------------------*/ -static struct neighbor_entry * -find_entry(uip_ipaddr_t ipaddr) + +static struct neighbor_entry *find_entry(uip_ipaddr_t ipaddr) { int i; - - for(i = 0; i < ENTRIES; ++i) { - if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) { - return &entries[i]; + + for(i = 0; i < ENTRIES; ++i) + { + if (uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) + { + return &entries[i]; + } } - } return NULL; } -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_update(uip_ipaddr_t ipaddr) + +void uip_neighbor_update(uip_ipaddr_t ipaddr) { struct neighbor_entry *e; e = find_entry(ipaddr); - if(e != NULL) { - e->time = 0; - } + if (e != NULL) + { + e->time = 0; + } } -/*---------------------------------------------------------------------------*/ -struct uip_neighbor_addr * -uip_neighbor_lookup(uip_ipaddr_t ipaddr) + +struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr) { struct neighbor_entry *e; e = find_entry(ipaddr); - if(e != NULL) { - /* printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", - e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3], - e->addr.addr.addr[4], e->addr.addr.addr[5]);*/ + if (e != NULL) + { + dbg("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", + e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3], + e->addr.addr.addr[4], e->addr.addr.addr[5]); return &e->addr; } return NULL; } -/*---------------------------------------------------------------------------*/ |