… | |
… | |
228 | #endif |
228 | #endif |
229 | |
229 | |
230 | #if ENABLE_DNS |
230 | #if ENABLE_DNS |
231 | if (THISNODE->protocols & PROT_DNSv4) |
231 | if (THISNODE->protocols & PROT_DNSv4) |
232 | { |
232 | { |
|
|
233 | dns_forwarder.set (::conf.dns_forw_host, ::conf.dns_forw_port, PROT_DNSv4); |
|
|
234 | |
233 | dnsv4_fd = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP); |
235 | dnsv4_fd = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP); |
234 | |
236 | |
235 | if (dnsv4_fd < 0) |
237 | if (dnsv4_fd < 0) |
236 | return -1; |
238 | return -1; |
237 | |
239 | |
… | |
… | |
411 | |
413 | |
412 | if (len > 0) |
414 | if (len > 0) |
413 | { |
415 | { |
414 | pkt->len = len; |
416 | pkt->len = len; |
415 | |
417 | |
416 | // raw sockets deliver the ipv4, but don't expect it on sends |
418 | // raw sockets deliver the ipv4 header, but don't expect it on sends |
417 | // this is slow, but... |
|
|
418 | pkt->skip_hdr (IP_OVERHEAD); |
419 | pkt->skip_hdr (IP_OVERHEAD); |
419 | |
420 | |
420 | recv_vpn_packet (pkt, si); |
421 | recv_vpn_packet (pkt, si); |
421 | } |
422 | } |
422 | else |
423 | else |
… | |
… | |
428 | delete pkt; |
429 | delete pkt; |
429 | } |
430 | } |
430 | else |
431 | else |
431 | { |
432 | { |
432 | slog (L_ERR, |
433 | slog (L_ERR, |
433 | _("FATAL: unknown revents %08x in socket, terminating\n"), |
434 | _("FATAL: unknown revents %08x in socket, terminating\n"), |
434 | revents); |
435 | revents); |
435 | exit (EXIT_FAILURE); |
436 | exit (EXIT_FAILURE); |
436 | } |
437 | } |
437 | } |
438 | } |
438 | |
439 | |
439 | #if ENABLE_ICMP |
440 | #if ENABLE_ICMP |
… | |
… | |
540 | int dst = mac2id (pkt->dst); |
541 | int dst = mac2id (pkt->dst); |
541 | int src = mac2id (pkt->src); |
542 | int src = mac2id (pkt->src); |
542 | |
543 | |
543 | if (src != THISNODE->id) |
544 | if (src != THISNODE->id) |
544 | { |
545 | { |
545 | slog (L_ERR, _("FATAL: tap packet not originating on current node received, exiting.")); |
546 | slog (L_ERR, _("FATAL: tap packet not originating on current node received (if-up script not working properly?), exiting.")); |
546 | exit (EXIT_FAILURE); |
547 | exit (EXIT_FAILURE); |
547 | } |
548 | } |
548 | |
549 | |
549 | if (dst == THISNODE->id) |
550 | if (dst == THISNODE->id) |
550 | { |
551 | { |