mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- Squelch log message: sendto failed permission denied for
255.255.255.255, it is visible in VERB_DETAIL (verbosity 2). git-svn-id: file:///svn/unbound/trunk@2088 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
4c7edee5f3
commit
109fbe2350
4 changed files with 26 additions and 0 deletions
|
|
@ -1,3 +1,7 @@
|
||||||
|
23 April 2010: Wouter
|
||||||
|
- Squelch log message: sendto failed permission denied for
|
||||||
|
255.255.255.255, it is visible in VERB_DETAIL (verbosity 2).
|
||||||
|
|
||||||
22 April 2010: Wouter
|
22 April 2010: Wouter
|
||||||
- tag 1.4.4.
|
- tag 1.4.4.
|
||||||
- trunk contains 1.4.5 in development.
|
- trunk contains 1.4.5 in development.
|
||||||
|
|
|
||||||
|
|
@ -494,6 +494,14 @@ addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen)
|
||||||
return (memcmp(s, map_prefix, 12) == 0);
|
return (memcmp(s, map_prefix, 12) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int addr_is_broadcast(struct sockaddr_storage* addr, socklen_t addrlen)
|
||||||
|
{
|
||||||
|
int af = (int)((struct sockaddr_in*)addr)->sin_family;
|
||||||
|
void* sinaddr = &((struct sockaddr_in*)addr)->sin_addr;
|
||||||
|
return af == AF_INET && addrlen>=(socklen_t)sizeof(struct sockaddr_in)
|
||||||
|
&& memcmp(sinaddr, "\377\377\377\377", 4) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
void sock_list_insert(struct sock_list** list, struct sockaddr_storage* addr,
|
void sock_list_insert(struct sock_list** list, struct sockaddr_storage* addr,
|
||||||
socklen_t len, struct regional* region)
|
socklen_t len, struct regional* region)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -279,6 +279,14 @@ void addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen,
|
||||||
*/
|
*/
|
||||||
int addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen);
|
int addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See if sockaddr is 255.255.255.255.
|
||||||
|
* @param addr: address
|
||||||
|
* @param addrlen: length of address
|
||||||
|
* @return true if so
|
||||||
|
*/
|
||||||
|
int addr_is_broadcast(struct sockaddr_storage* addr, socklen_t addrlen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insert new socket list item. If fails logs error.
|
* Insert new socket list item. If fails logs error.
|
||||||
* @param list: pointer to pointer to first item.
|
* @param list: pointer to pointer to first item.
|
||||||
|
|
|
||||||
|
|
@ -301,6 +301,12 @@ comm_point_send_udp_msg(struct comm_point *c, ldns_buffer* packet,
|
||||||
(struct sockaddr_storage*)addr, addrlen) &&
|
(struct sockaddr_storage*)addr, addrlen) &&
|
||||||
verbosity < VERB_DETAIL)
|
verbosity < VERB_DETAIL)
|
||||||
return 0;
|
return 0;
|
||||||
|
/* SO_BROADCAST sockopt can give access to 255.255.255.255,
|
||||||
|
* but a dns cache does not need it. */
|
||||||
|
if(errno == EACCES && addr_is_broadcast(
|
||||||
|
(struct sockaddr_storage*)addr, addrlen) &&
|
||||||
|
verbosity < VERB_DETAIL)
|
||||||
|
return 0;
|
||||||
#ifndef USE_WINSOCK
|
#ifndef USE_WINSOCK
|
||||||
verbose(VERB_OPS, "sendto failed: %s", strerror(errno));
|
verbose(VERB_OPS, "sendto failed: %s", strerror(errno));
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue