If the nameserver pool size is 1, we don't need to maintain a list of servers, but only a single server variable. This saves space.

This commit is contained in:
Adam Dunkels 2014-12-10 08:35:10 +01:00
parent ccc0d27da0
commit e4c387615e

View file

@ -62,8 +62,13 @@ static uint8_t initialized = 0;
/** \name List and memory block /** \name List and memory block
* @{ * @{
*/ */
#if UIP_NAMESERVER_POOL_SIZE > 1
LIST(dns); LIST(dns);
MEMB(dnsmemb, uip_nameserver_record, UIP_NAMESERVER_POOL_SIZE); MEMB(dnsmemb, uip_nameserver_record, UIP_NAMESERVER_POOL_SIZE);
#else /* UIP_NAMESERVER_POOL_SIZE > 1 */
static uip_ipaddr_t serveraddr;
static uint32_t serverlifetime;
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
/** @} */ /** @} */
/** \brief Expiration time in seconds */ /** \brief Expiration time in seconds */
@ -74,6 +79,7 @@ MEMB(dnsmemb, uip_nameserver_record, UIP_NAMESERVER_POOL_SIZE);
/** /**
* Initialize the module variables * Initialize the module variables
*/ */
#if UIP_NAMESERVER_POOL_SIZE > 1
static CC_INLINE void static CC_INLINE void
init(void) init(void)
{ {
@ -81,10 +87,12 @@ init(void)
memb_init(&dnsmemb); memb_init(&dnsmemb);
initialized = 1; initialized = 1;
} }
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
void void
uip_nameserver_update(uip_ipaddr_t *nameserver, uint32_t lifetime) uip_nameserver_update(uip_ipaddr_t *nameserver, uint32_t lifetime)
{ {
#if UIP_NAMESERVER_POOL_SIZE > 1
register uip_nameserver_record *e; register uip_nameserver_record *e;
if(initialized == 0) { if(initialized == 0) {
@ -125,8 +133,13 @@ uip_nameserver_update(uip_ipaddr_t *nameserver, uint32_t lifetime)
uip_ipaddr_copy(&e->ip, nameserver); uip_ipaddr_copy(&e->ip, nameserver);
} }
} }
#else /* UIP_NAMESERVER_POOL_SIZE > 1 */
uip_ipaddr_copy(&serveraddr, nameserver);
serverlifetime = lifetime;
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
#if UIP_NAMESERVER_POOL_SIZE > 1
/** /**
* Purge expired records * Purge expired records
*/ */
@ -143,10 +156,12 @@ purge(void)
} }
} }
} }
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
uip_ipaddr_t * uip_ipaddr_t *
uip_nameserver_get(uint8_t num) uip_nameserver_get(uint8_t num)
{ {
#if UIP_NAMESERVER_POOL_SIZE > 1
uint8_t i; uint8_t i;
uip_nameserver_record *e = NULL; uip_nameserver_record *e = NULL;
@ -162,11 +177,18 @@ uip_nameserver_get(uint8_t num)
return &e->ip; return &e->ip;
} }
return NULL; return NULL;
#else /* UIP_NAMESERVER_POOL_SIZE > 1 */
if(num > 0) {
return NULL;
}
return &serveraddr;
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
uint32_t uint32_t
uip_nameserver_next_expiration(void) uip_nameserver_next_expiration(void)
{ {
#if UIP_NAMESERVER_POOL_SIZE > 1
register uip_nameserver_record *e = NULL; register uip_nameserver_record *e = NULL;
uint32_t exp = UIP_NAMESERVER_INFINITE_LIFETIME; uint32_t exp = UIP_NAMESERVER_INFINITE_LIFETIME;
uint32_t t; uint32_t t;
@ -183,15 +205,30 @@ uip_nameserver_next_expiration(void)
} }
return exp; return exp;
#else /* UIP_NAMESERVER_POOL_SIZE > 1 */
return serverlifetime;
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
uint16_t uint16_t
uip_nameserver_count(void) uip_nameserver_count(void)
{ {
#if UIP_NAMESERVER_POOL_SIZE > 1
if(initialized == 0) { if(initialized == 0) {
return 0; return 0;
} }
return list_length(dns); return list_length(dns);
#else /* UIP_NAMESERVER_POOL_SIZE > 1 */
#if NETSTACK_CONF_WITH_IPV6
if(uip_is_addr_unspecified(&serveraddr)) {
#else /* NETSTACK_CONF_WITH_IPV6 */
if(uip_ipaddr_cmp(&serveraddr, &uip_all_zeroes_addr)) {
#endif /* NETSTACK_CONF_WITH_IPV6 */
return 0;
} else {
return 1;
}
#endif /* UIP_NAMESERVER_POOL_SIZE > 1 */
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/** @} */ /** @} */