From 6693149f3e2d1557f007ace99987694a34ebe6f8 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 1 Oct 2015 13:34:12 -0700 Subject: Send COM with MULTICAST_GATHER for future use. --- node/Multicaster.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'node/Multicaster.cpp') diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index 07792737..420a00ff 100644 --- a/node/Multicaster.cpp +++ b/node/Multicaster.cpp @@ -237,12 +237,25 @@ void Multicaster::send( if (sn) { TRACE(">>MC upstream GATHER up to %u for group %.16llx/%s",gatherLimit,nwid,mg.toString().c_str()); + const CertificateOfMembership *com = (CertificateOfMembership *)0; + if (sn->needsOurNetworkMembershipCertificate(nwid,now,true)) { + SharedPtr nw = RR->node->network(nwid); + SharedPtr nconf; + if (nw) { + nconf = nw->config2(); + if (nconf) + com = &(nconf->com()); + } + } + Packet outp(sn->address(),RR->identity.address(),Packet::VERB_MULTICAST_GATHER); outp.append(nwid); - outp.append((uint8_t)0); + outp.append((uint8_t)(com ? 0x01 : 0x00)); mg.mac().appendTo(outp); outp.append((uint32_t)mg.adi()); outp.append((uint32_t)gatherLimit); + if (com) + com->serialize(outp); outp.armor(sn->key(),true); sn->send(RR,outp.data(),outp.size(),now); } -- cgit v1.2.3 From 3999e468b78fd4b8ada57ba6801f672e8ed08999 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 1 Oct 2015 13:43:15 -0700 Subject: Need to hold nconf so *com does not die while being used. --- node/Multicaster.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'node/Multicaster.cpp') diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index 420a00ff..87a1df9c 100644 --- a/node/Multicaster.cpp +++ b/node/Multicaster.cpp @@ -238,9 +238,9 @@ void Multicaster::send( TRACE(">>MC upstream GATHER up to %u for group %.16llx/%s",gatherLimit,nwid,mg.toString().c_str()); const CertificateOfMembership *com = (CertificateOfMembership *)0; + SharedPtr nconf; if (sn->needsOurNetworkMembershipCertificate(nwid,now,true)) { SharedPtr nw = RR->node->network(nwid); - SharedPtr nconf; if (nw) { nconf = nw->config2(); if (nconf) -- cgit v1.2.3 From 2fa21aa676d2115b287a2c6d131afcf95c6dada9 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 1 Oct 2015 13:43:57 -0700 Subject: . --- node/Multicaster.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'node/Multicaster.cpp') diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index 87a1df9c..6a8d6379 100644 --- a/node/Multicaster.cpp +++ b/node/Multicaster.cpp @@ -240,7 +240,7 @@ void Multicaster::send( const CertificateOfMembership *com = (CertificateOfMembership *)0; SharedPtr nconf; if (sn->needsOurNetworkMembershipCertificate(nwid,now,true)) { - SharedPtr nw = RR->node->network(nwid); + SharedPtr nw(RR->node->network(nwid)); if (nw) { nconf = nw->config2(); if (nconf) -- cgit v1.2.3