mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
if auto fix more.
git-svn-id: file:///svn/unbound/trunk@871 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
c854c57c6f
commit
fec9e1d262
3 changed files with 15 additions and 6 deletions
|
|
@ -1,6 +1,8 @@
|
||||||
17 January 2008: Wouter
|
17 January 2008: Wouter
|
||||||
- fixup configure in case -lldns is installed.
|
- fixup configure in case -lldns is installed.
|
||||||
- fixup a couple of doxygen warnings, about enum variables.
|
- fixup a couple of doxygen warnings, about enum variables.
|
||||||
|
- interface-automatic now copies the interface address from the
|
||||||
|
PKT_INFO structure as well.
|
||||||
|
|
||||||
16 January 2008: Wouter
|
16 January 2008: Wouter
|
||||||
- incoming queries to the server with TC bit on are replied FORMERR.
|
- incoming queries to the server with TC bit on are replied FORMERR.
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@ comm_point_send_udp_msg(struct comm_point *c, ldns_buffer* packet,
|
||||||
/** send a UDP reply over specified interface*/
|
/** send a UDP reply over specified interface*/
|
||||||
int
|
int
|
||||||
comm_point_send_udp_msg_if(struct comm_point *c, ldns_buffer* packet,
|
comm_point_send_udp_msg_if(struct comm_point *c, ldns_buffer* packet,
|
||||||
struct sockaddr* addr, socklen_t addrlen, int ifnum)
|
struct sockaddr* addr, socklen_t addrlen, void* ifaddr, int ifnum)
|
||||||
{
|
{
|
||||||
#if defined(AF_INET6) && defined(IPV6_PKTINFO)
|
#if defined(AF_INET6) && defined(IPV6_PKTINFO)
|
||||||
ssize_t sent;
|
ssize_t sent;
|
||||||
|
|
@ -213,8 +213,8 @@ comm_point_send_udp_msg_if(struct comm_point *c, ldns_buffer* packet,
|
||||||
cmsg->cmsg_level = IPPROTO_IPV6;
|
cmsg->cmsg_level = IPPROTO_IPV6;
|
||||||
cmsg->cmsg_type = IPV6_PKTINFO;
|
cmsg->cmsg_type = IPV6_PKTINFO;
|
||||||
cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
|
cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
|
||||||
memset(&((struct in6_pktinfo*)CMSG_DATA(cmsg))->ipi6_addr, 0,
|
memmove(&((struct in6_pktinfo*)CMSG_DATA(cmsg))->ipi6_addr,
|
||||||
sizeof(struct in6_addr));
|
ifaddr, sizeof(struct in6_addr));
|
||||||
((struct in6_pktinfo*)CMSG_DATA(cmsg))->ipi6_ifindex = ifnum;
|
((struct in6_pktinfo*)CMSG_DATA(cmsg))->ipi6_ifindex = ifnum;
|
||||||
msg.msg_controllen = cmsg->cmsg_len;
|
msg.msg_controllen = cmsg->cmsg_len;
|
||||||
#endif /* S_SPLINT_S */
|
#endif /* S_SPLINT_S */
|
||||||
|
|
@ -287,7 +287,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg)
|
||||||
cmsg->cmsg_type == IPV6_PKTINFO) {
|
cmsg->cmsg_type == IPV6_PKTINFO) {
|
||||||
rep.ifnum = ((struct in6_pktinfo*)CMSG_DATA(cmsg))->
|
rep.ifnum = ((struct in6_pktinfo*)CMSG_DATA(cmsg))->
|
||||||
ipi6_ifindex;
|
ipi6_ifindex;
|
||||||
/* ignored ipi6_addr with the dest ipv6 address */
|
memmove(&rep.ifaddr, &((struct in6_pktinfo*)
|
||||||
|
CMSG_DATA(cmsg))->ipi6_addr,
|
||||||
|
sizeof(struct in6_addr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* S_SPLINT_S */
|
#endif /* S_SPLINT_S */
|
||||||
|
|
@ -295,7 +297,8 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg)
|
||||||
if((*rep.c->callback)(rep.c, rep.c->cb_arg, NETEVENT_NOERROR, &rep)) {
|
if((*rep.c->callback)(rep.c, rep.c->cb_arg, NETEVENT_NOERROR, &rep)) {
|
||||||
/* send back immediate reply */
|
/* send back immediate reply */
|
||||||
(void)comm_point_send_udp_msg_if(rep.c, rep.c->buffer,
|
(void)comm_point_send_udp_msg_if(rep.c, rep.c->buffer,
|
||||||
(struct sockaddr*)&rep.addr, rep.addrlen, rep.ifnum);
|
(struct sockaddr*)&rep.addr, rep.addrlen,
|
||||||
|
&rep.ifaddr, rep.ifnum);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
fatal_exit("recvmsg: No support for IPV6_PKTINFO. "
|
fatal_exit("recvmsg: No support for IPV6_PKTINFO. "
|
||||||
|
|
@ -1007,7 +1010,7 @@ comm_point_send_reply(struct comm_reply *repinfo)
|
||||||
if(repinfo->ifnum != -1)
|
if(repinfo->ifnum != -1)
|
||||||
comm_point_send_udp_msg_if(repinfo->c,
|
comm_point_send_udp_msg_if(repinfo->c,
|
||||||
repinfo->c->buffer, (struct sockaddr*)&repinfo->addr,
|
repinfo->c->buffer, (struct sockaddr*)&repinfo->addr,
|
||||||
repinfo->addrlen, repinfo->ifnum);
|
repinfo->addrlen, &repinfo->ifaddr, repinfo->ifnum);
|
||||||
else
|
else
|
||||||
comm_point_send_udp_msg(repinfo->c, repinfo->c->buffer,
|
comm_point_send_udp_msg(repinfo->c, repinfo->c->buffer,
|
||||||
(struct sockaddr*)&repinfo->addr, repinfo->addrlen);
|
(struct sockaddr*)&repinfo->addr, repinfo->addrlen);
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,10 @@ struct comm_reply {
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
/** length of address */
|
/** length of address */
|
||||||
socklen_t addrlen;
|
socklen_t addrlen;
|
||||||
|
#ifdef AF_INET6
|
||||||
|
/** the interface address */
|
||||||
|
struct in6_addr ifaddr;
|
||||||
|
#endif
|
||||||
/** the interface received (for UDPautomaticinterface) or 0 */
|
/** the interface received (for UDPautomaticinterface) or 0 */
|
||||||
int ifnum;
|
int ifnum;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue