X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_packet.c;h=012085e22bf8e9beb40185e11febd90701ede2b1;hb=b6e2b416bf9a5788c8847267b849efcd9e5bbf95;hp=1159231205f8bbbb25a22e091d83a15ac9db0846;hpb=57991e264202ad83e2c1b663777b358bf5573652;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)) {