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
|
||||
- tag 1.4.4.
|
||||
- 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);
|
||||
}
|
||||
|
||||
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,
|
||||
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);
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* @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) &&
|
||||
verbosity < VERB_DETAIL)
|
||||
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
|
||||
verbose(VERB_OPS, "sendto failed: %s", strerror(errno));
|
||||
#else
|
||||
|
|
|
|||
Loading…
Reference in a new issue