… | |
… | |
413 | |
413 | |
414 | if (len > 0) |
414 | if (len > 0) |
415 | { |
415 | { |
416 | pkt->len = len; |
416 | pkt->len = len; |
417 | |
417 | |
418 | // 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 |
419 | // this is slow, but... |
|
|
420 | pkt->skip_hdr (IP_OVERHEAD); |
419 | pkt->skip_hdr (IP_OVERHEAD); |
421 | |
420 | |
422 | recv_vpn_packet (pkt, si); |
421 | recv_vpn_packet (pkt, si); |
423 | } |
422 | } |
424 | else |
423 | else |
… | |
… | |
430 | delete pkt; |
429 | delete pkt; |
431 | } |
430 | } |
432 | else |
431 | else |
433 | { |
432 | { |
434 | slog (L_ERR, |
433 | slog (L_ERR, |
435 | _("FATAL: unknown revents %08x in socket, terminating\n"), |
434 | _("FATAL: unknown revents %08x in socket, terminating\n"), |
436 | revents); |
435 | revents); |
437 | exit (EXIT_FAILURE); |
436 | exit (EXIT_FAILURE); |
438 | } |
437 | } |
439 | } |
438 | } |
440 | |
439 | |
441 | #if ENABLE_ICMP |
440 | #if ENABLE_ICMP |
… | |
… | |
542 | int dst = mac2id (pkt->dst); |
541 | int dst = mac2id (pkt->dst); |
543 | int src = mac2id (pkt->src); |
542 | int src = mac2id (pkt->src); |
544 | |
543 | |
545 | if (src != THISNODE->id) |
544 | if (src != THISNODE->id) |
546 | { |
545 | { |
547 | 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.")); |
548 | exit (EXIT_FAILURE); |
547 | exit (EXIT_FAILURE); |
549 | } |
548 | } |
550 | |
549 | |
551 | if (dst == THISNODE->id) |
550 | if (dst == THISNODE->id) |
552 | { |
551 | { |