Browse Source

ipauth characteristic now works with ARP

Adam Ierymenko 8 years ago
parent
commit
4436824faf
3 changed files with 3 additions and 2 deletions
  1. 0 1
      node/Membership.cpp
  2. 2 0
      node/Network.cpp
  3. 1 1
      node/OutboundMulticast.cpp

+ 0 - 1
node/Membership.cpp

@@ -240,7 +240,6 @@ Membership::AddCredentialResult Membership::addCredential(const RuntimeEnvironme
 	}
 }
 
-
 Membership::AddCredentialResult Membership::addCredential(const RuntimeEnvironment *RR,const NetworkConfig &nconf,const CertificateOfOwnership &coo)
 {
 	_RemoteCredential<CertificateOfOwnership> *const *htmp = std::lower_bound(&(_remoteCoos[0]),&(_remoteCoos[ZT_MAX_CERTIFICATES_OF_OWNERSHIP]),(uint64_t)coo.id(),_RemoteCredentialComp<CertificateOfOwnership>());

+ 2 - 0
node/Network.cpp

@@ -515,6 +515,8 @@ static _doZtFilterResult _doZtFilter(
 						src.set((const void *)(frameData + 12),4,0);
 					} else if ((etherType == ZT_ETHERTYPE_IPV6)&&(frameLen >= 40)) {
 						src.set((const void *)(frameData + 8),16,0);
+					} else if ((etherType == ZT_ETHERTYPE_ARP)&&(frameLen >= 28)) {
+						src.set((const void *)(frameData + 14),4,0);
 					}
 					if (inbound) {
 						if (membership) {

+ 1 - 1
node/OutboundMulticast.cpp

@@ -88,7 +88,7 @@ void OutboundMulticast::init(
 void OutboundMulticast::sendOnly(const RuntimeEnvironment *RR,const Address &toAddr)
 {
 	const SharedPtr<Network> nw(RR->node->network(_nwid));
-	Address toAddr2(toAddr);
+	const Address toAddr2(toAddr);
 	if ((nw)&&(nw->filterOutgoingPacket(true,RR->identity.address(),toAddr2,_macSrc,_macDest,_frameData,_frameLen,_etherType,0))) {
 		//TRACE(">>MC %.16llx -> %s",(unsigned long long)this,toAddr.toString().c_str());
 		_packet.newInitializationVector();