mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-05 22:29:49 +00:00
DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses its own MEMP pool instead of the heap
This commit is contained in:
parent
6ffd29507c
commit
03bd61c799
@ -78,6 +78,7 @@
|
|||||||
|
|
||||||
#include "lwip/udp.h"
|
#include "lwip/udp.h"
|
||||||
#include "lwip/mem.h"
|
#include "lwip/mem.h"
|
||||||
|
#include "lwip/memp.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -180,14 +181,6 @@ struct dns_table_entry {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#if DNS_LOCAL_HOSTLIST
|
#if DNS_LOCAL_HOSTLIST
|
||||||
/** struct used for local host-list */
|
|
||||||
struct local_hostlist_entry {
|
|
||||||
/** static hostname */
|
|
||||||
const char *name;
|
|
||||||
/** static host address in network byteorder */
|
|
||||||
ip_addr_t addr;
|
|
||||||
struct local_hostlist_entry *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
|
#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
|
||||||
/** Local host-list. For hostnames in this list, no
|
/** Local host-list. For hostnames in this list, no
|
||||||
@ -329,7 +322,8 @@ dns_init_local()
|
|||||||
struct local_hostlist_entry *init_entry = &local_hostlist_init[i];
|
struct local_hostlist_entry *init_entry = &local_hostlist_init[i];
|
||||||
LWIP_ASSERT("invalid host name (NULL)", init_entry->name != NULL);
|
LWIP_ASSERT("invalid host name (NULL)", init_entry->name != NULL);
|
||||||
namelen = strlen(init_entry->name);
|
namelen = strlen(init_entry->name);
|
||||||
entry = mem_malloc((mem_size_t)(sizeof(struct local_hostlist_entry) + namelen + 1));
|
LWIP_ASSERT("namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN", namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN);
|
||||||
|
entry = (struct local_hostlist_entry *)memp_malloc(MEMP_LOCALHOSTLIST);
|
||||||
LWIP_ASSERT("mem-error in dns_init_local", entry != NULL);
|
LWIP_ASSERT("mem-error in dns_init_local", entry != NULL);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
entry->name = (char*)entry + sizeof(struct local_hostlist_entry);
|
entry->name = (char*)entry + sizeof(struct local_hostlist_entry);
|
||||||
@ -398,7 +392,7 @@ dns_local_removehost(const char *hostname, const ip_addr_t *addr)
|
|||||||
}
|
}
|
||||||
free_entry = entry;
|
free_entry = entry;
|
||||||
entry = entry->next;
|
entry = entry->next;
|
||||||
mem_free(free_entry);
|
memp_free(MEMP_LOCALHOSTLIST, free_entry);
|
||||||
removed++;
|
removed++;
|
||||||
} else {
|
} else {
|
||||||
last_entry = entry;
|
last_entry = entry;
|
||||||
@ -423,7 +417,8 @@ dns_local_addhost(const char *hostname, const ip_addr_t *addr)
|
|||||||
size_t namelen;
|
size_t namelen;
|
||||||
LWIP_ASSERT("invalid host name (NULL)", hostname != NULL);
|
LWIP_ASSERT("invalid host name (NULL)", hostname != NULL);
|
||||||
namelen = strlen(hostname);
|
namelen = strlen(hostname);
|
||||||
entry = mem_malloc((mem_size_t)(sizeof(struct local_hostlist_entry) + namelen + 1));
|
LWIP_ASSERT("namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN", namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN);
|
||||||
|
entry = (struct local_hostlist_entry *)memp_malloc(MEMP_LOCALHOSTLIST);
|
||||||
if (entry == NULL) {
|
if (entry == NULL) {
|
||||||
return ERR_MEM;
|
return ERR_MEM;
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,23 @@
|
|||||||
sizeof(struct addrinfo) + sizeof(struct sockaddr_in) + DNS_MAX_NAME_LENGTH + 1 byte zero-termination */
|
sizeof(struct addrinfo) + sizeof(struct sockaddr_in) + DNS_MAX_NAME_LENGTH + 1 byte zero-termination */
|
||||||
#define NETDB_ELEM_SIZE (32 + 16 + DNS_MAX_NAME_LENGTH + 1)
|
#define NETDB_ELEM_SIZE (32 + 16 + DNS_MAX_NAME_LENGTH + 1)
|
||||||
|
|
||||||
|
#if DNS_LOCAL_HOSTLIST
|
||||||
|
/** struct used for local host-list */
|
||||||
|
struct local_hostlist_entry {
|
||||||
|
/** static hostname */
|
||||||
|
const char *name;
|
||||||
|
/** static host address in network byteorder */
|
||||||
|
ip_addr_t addr;
|
||||||
|
struct local_hostlist_entry *next;
|
||||||
|
};
|
||||||
|
#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
|
||||||
|
#ifndef DNS_LOCAL_HOSTLIST_MAX_NAMELEN
|
||||||
|
#define DNS_LOCAL_HOSTLIST_MAX_NAMELEN DNS_MAX_NAME_LENGTH
|
||||||
|
#endif
|
||||||
|
#define LOCALHOSTLIST_ELEM_SIZE ((sizeof(struct local_hostlist_entry) + DNS_LOCAL_HOSTLIST_MAX_NAMELEN + 1))
|
||||||
|
#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
|
||||||
|
#endif /* DNS_LOCAL_HOSTLIST */
|
||||||
|
|
||||||
/** Callback which is invoked when a hostname is found.
|
/** Callback which is invoked when a hostname is found.
|
||||||
* A function of this type must be implemented by the application using the DNS resolver.
|
* A function of this type must be implemented by the application using the DNS resolver.
|
||||||
* @param name pointer to the name that was looked up.
|
* @param name pointer to the name that was looked up.
|
||||||
|
@ -79,6 +79,9 @@ LWIP_MEMPOOL(SNMP_VALUE, MEMP_NUM_SNMP_VALUE, SNMP_MAX_VALUE_SIZE,
|
|||||||
#if LWIP_DNS && LWIP_SOCKET
|
#if LWIP_DNS && LWIP_SOCKET
|
||||||
LWIP_MEMPOOL(NETDB, MEMP_NUM_NETDB, NETDB_ELEM_SIZE, "NETDB")
|
LWIP_MEMPOOL(NETDB, MEMP_NUM_NETDB, NETDB_ELEM_SIZE, "NETDB")
|
||||||
#endif /* LWIP_DNS && LWIP_SOCKET */
|
#endif /* LWIP_DNS && LWIP_SOCKET */
|
||||||
|
#if LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC
|
||||||
|
LWIP_MEMPOOL(LOCALHOSTLIST, MEMP_NUM_LOCALHOSTLIST, LOCALHOSTLIST_ELEM_SIZE, "LOCALHOSTLIST")
|
||||||
|
#endif /* LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A list of pools of pbuf's used by LWIP.
|
* A list of pools of pbuf's used by LWIP.
|
||||||
|
@ -370,6 +370,14 @@
|
|||||||
#define MEMP_NUM_NETDB 1
|
#define MEMP_NUM_NETDB 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list
|
||||||
|
* if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1.
|
||||||
|
*/
|
||||||
|
#ifndef MEMP_NUM_LOCALHOSTLIST
|
||||||
|
#define MEMP_NUM_LOCALHOSTLIST 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user