mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-09 03:32:06 -04:00
[9.18] chg: dev: Reduce memory sizes of common structures
* Reduce `sizeof(isc_sockaddr_t)` from 152 to 48 bytes * Reduce `sizeof(struct isc__nm_uvreq)` from 1560 to 560 bytes Partial backport of !8299 Merge branch 'ondrej/reduce-netmgr-memory-usage-9.18' into 'bind-9.18' See merge request isc-projects/bind9!9953
This commit is contained in:
commit
008e520109
5 changed files with 10 additions and 46 deletions
|
|
@ -247,7 +247,7 @@ add_server(isc_mem_t *mctx, const char *address_str,
|
|||
goto cleanup;
|
||||
}
|
||||
address->length = (unsigned int)res->ai_addrlen;
|
||||
memmove(&address->type.ss, res->ai_addr, res->ai_addrlen);
|
||||
memmove(&address->type.sa, res->ai_addr, res->ai_addrlen);
|
||||
ISC_LINK_INIT(address, link);
|
||||
ISC_LIST_APPEND(*nameservers, address, link);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,11 +29,9 @@
|
|||
*/
|
||||
struct isc_sockaddr {
|
||||
union {
|
||||
struct sockaddr sa;
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in6 sin6;
|
||||
struct sockaddr_storage ss;
|
||||
struct sockaddr_un sunix;
|
||||
struct sockaddr sa;
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in6 sin6;
|
||||
} type;
|
||||
unsigned int length; /* XXXRTH beginning? */
|
||||
ISC_LINK(struct isc_sockaddr) link;
|
||||
|
|
|
|||
|
|
@ -348,10 +348,6 @@ isc_netaddr_fromsockaddr(isc_netaddr_t *t, const isc_sockaddr_t *s) {
|
|||
memmove(&t->type.in6, &s->type.sin6.sin6_addr, 16);
|
||||
t->zone = s->type.sin6.sin6_scope_id;
|
||||
break;
|
||||
case AF_UNIX:
|
||||
memmove(t->type.un, s->type.sunix.sun_path, sizeof(t->type.un));
|
||||
t->zone = 0;
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -391,16 +391,11 @@ struct isc__nm_uvreq {
|
|||
int connect_tries; /* connect retries */
|
||||
|
||||
union {
|
||||
uv_handle_t handle;
|
||||
uv_req_t req;
|
||||
uv_getaddrinfo_t getaddrinfo;
|
||||
uv_getnameinfo_t getnameinfo;
|
||||
uv_shutdown_t shutdown;
|
||||
uv_handle_t handle;
|
||||
uv_write_t write;
|
||||
uv_connect_t connect;
|
||||
uv_udp_send_t udp_send;
|
||||
uv_fs_t fs;
|
||||
uv_work_t work;
|
||||
} uv_req;
|
||||
ISC_LINK(isc__nm_uvreq_t) link;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -137,24 +137,7 @@ isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) {
|
|||
ntohs(sockaddr->type.sin6.sin6_port));
|
||||
break;
|
||||
case AF_UNIX:
|
||||
plen = strlen(sockaddr->type.sunix.sun_path);
|
||||
if (plen >= isc_buffer_availablelength(target)) {
|
||||
return ISC_R_NOSPACE;
|
||||
}
|
||||
|
||||
isc_buffer_putmem(
|
||||
target,
|
||||
(const unsigned char *)sockaddr->type.sunix.sun_path,
|
||||
plen);
|
||||
|
||||
/*
|
||||
* Null terminate after used region.
|
||||
*/
|
||||
isc_buffer_availableregion(target, &avail);
|
||||
INSIST(avail.length >= 1);
|
||||
avail.base[0] = '\0';
|
||||
|
||||
return ISC_R_SUCCESS;
|
||||
return ISC_R_NOTIMPLEMENTED;
|
||||
default:
|
||||
return ISC_R_FAILURE;
|
||||
}
|
||||
|
|
@ -461,16 +444,9 @@ isc_sockaddr_isnetzero(const isc_sockaddr_t *sockaddr) {
|
|||
}
|
||||
|
||||
isc_result_t
|
||||
isc_sockaddr_frompath(isc_sockaddr_t *sockaddr, const char *path) {
|
||||
if (strlen(path) >= sizeof(sockaddr->type.sunix.sun_path)) {
|
||||
return ISC_R_NOSPACE;
|
||||
}
|
||||
memset(sockaddr, 0, sizeof(*sockaddr));
|
||||
sockaddr->length = sizeof(sockaddr->type.sunix);
|
||||
sockaddr->type.sunix.sun_family = AF_UNIX;
|
||||
strlcpy(sockaddr->type.sunix.sun_path, path,
|
||||
sizeof(sockaddr->type.sunix.sun_path));
|
||||
return ISC_R_SUCCESS;
|
||||
isc_sockaddr_frompath(isc_sockaddr_t *sockaddr ISC_ATTR_UNUSED,
|
||||
const char *path ISC_ATTR_UNUSED) {
|
||||
return ISC_R_NOTIMPLEMENTED;
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
|
|
@ -485,8 +461,7 @@ isc_sockaddr_fromsockaddr(isc_sockaddr_t *isa, const struct sockaddr *sa) {
|
|||
length = sizeof(isa->type.sin6);
|
||||
break;
|
||||
case AF_UNIX:
|
||||
length = sizeof(isa->type.sunix);
|
||||
break;
|
||||
return ISC_R_NOTIMPLEMENTED;
|
||||
default:
|
||||
return ISC_R_NOTIMPLEMENTED;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue