X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;ds=sidebyside;f=src%2Fnet_packet.c;h=012085e22bf8e9beb40185e11febd90701ede2b1;hb=3d41e7d71247998b7c4a3dd4eacb93bd3529428d;hp=1159231205f8bbbb25a22e091d83a15ac9db0846;hpb=c1703ea9172be05f501d636510834e31d5d4f98c;p=tinc diff --git a/src/net_packet.c b/src/net_packet.c index 11592312..012085e2 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -143,16 +143,15 @@ static void send_mtu_probe_handler(void *data) { memset(packet.data, 0, 14); randomize(packet.data + 14, len - 14); packet.len = len; - if(i >= 4 && n->mtuprobes <= 10) - packet.priority = -1; - else - packet.priority = 0; + packet.priority = 0; + n->status.broadcast = i >= 4 && n->mtuprobes <= 10 && n->prevedge; logger(DEBUG_TRAFFIC, LOG_INFO, "Sending MTU probe length %d to %s (%s)", len, n->name, n->hostname); send_udppacket(n, &packet); } + n->status.broadcast = false; n->probe_counter = 0; gettimeofday(&n->probe_time, NULL); @@ -734,9 +733,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) { const sockaddr_t *sa; int sock; - /* Overloaded use of priority field: -1 means local broadcast */ - - if(origpriority == -1 && n->prevedge) + if(n->status.broadcast) choose_broadcast_address(n, &sa, &sock); else choose_udp_address(n, &sa, &sock); @@ -788,7 +785,10 @@ bool send_sptps_data(void *handle, uint8_t type, const char *data, size_t len) { const sockaddr_t *sa; int sock; - choose_udp_address(to, &sa, &sock); + if(to->status.broadcast) + choose_broadcast_address(to, &sa, &sock); + else + choose_udp_address(to, &sa, &sock); if(sendto(listen_socket[sock].udp.fd, data, len, 0, &sa->sa, SALEN(sa->sa)) < 0 && !sockwouldblock(sockerrno)) { if(sockmsgsize(sockerrno)) {