This commit is contained in:
Adam Ierymenko 2019-08-28 14:47:05 -07:00
parent 34ca3012e6
commit e07a019615
No known key found for this signature in database
GPG Key ID: C8877CF2D7A5D7F3
2 changed files with 3 additions and 2 deletions

View File

@ -655,7 +655,7 @@ bool IncomingPacket::_doMULTICAST_LIKE(const RuntimeEnvironment *RR,void *tPtr,c
uint64_t lastNwid = 0;
// Packet contains a series of 18-byte network,MAC,ADI tuples
for(unsigned int ptr=ZT_PACKET_IDX_PAYLOAD;ptr<size();ptr+=18) {
for(unsigned int ptr=ZT_PACKET_IDX_PAYLOAD;(ptr+18)<=size();ptr+=18) {
const uint64_t nwid = at<uint64_t>(ptr);
if (nwid != lastNwid) {
lastNwid = nwid;

View File

@ -212,13 +212,14 @@ static void handlePacket(const int sock,const InetAddress *const ip,Packet &pkt)
ip->serialize(pkt);
pkt.armor(peer->key,true);
sendto(sock,pkt.data(),pkt.size(),0,(const struct sockaddr *)ip,(socklen_t)((ip->ss_family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)));
printf("%s <- OK(HELLO)" ZT_EOL_S,ip->toString(ipstr));
}
} break;
case Packet::VERB_MULTICAST_LIKE: {
printf("LIKE\n");
Mutex::Lock l(peer->multicastGroups_l);
for(unsigned int ptr=ZT_PACKET_IDX_PAYLOAD;ptr<pkt.size();ptr+=18) {
for(unsigned int ptr=ZT_PACKET_IDX_PAYLOAD;(ptr+18)<=pkt.size();ptr+=18) {
const uint64_t nwid = pkt.template at<uint64_t>(ptr);
const MulticastGroup mg(MAC(pkt.field(ptr + 8,6),6),pkt.template at<uint32_t>(ptr + 14));
peer->multicastGroups[nwid][mg] = now;