From 03b909603ae6010d7bf059de688c0cfe0f96a0a3 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 18 Oct 2013 13:20:34 -0400 Subject: Clean up the awful Network::Config mess and break that out into NetworkConfig. --- node/Switch.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'node/Switch.cpp') diff --git a/node/Switch.cpp b/node/Switch.cpp index 37184076..14f6c506 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -82,6 +82,10 @@ void Switch::onRemotePacket(Demarc::Port localPort,const InetAddress &fromAddr,c void Switch::onLocalEthernet(const SharedPtr &network,const MAC &from,const MAC &to,unsigned int etherType,const Buffer<4096> &data) { + SharedPtr nconf(network->config2()); + if (!nconf) + return; + if (to == network->tap().mac()) { LOG("%s: frame received from self, ignoring (bridge loop? OS bug?)",network->tap().deviceName().c_str()); return; @@ -92,7 +96,7 @@ void Switch::onLocalEthernet(const SharedPtr &network,const MAC &from,c return; } - if (!network->permitsEtherType(etherType)) { + if (!nconf->permitsEtherType(etherType)) { LOG("ignored tap: %s -> %s: ethertype %s not allowed on network %.16llx",from.toString().c_str(),to.toString().c_str(),etherTypeName(etherType),(unsigned long long)network->id()); return; } @@ -115,11 +119,11 @@ void Switch::onLocalEthernet(const SharedPtr &network,const MAC &from,c const SharedPtr supernode(_r->topology->getBestSupernode()); uint64_t now = Utils::now(); - for(unsigned int prefix=0,np=((unsigned int)2 << (network->multicastPrefixBits() - 1));prefixmulticastPrefixBits() - 1));prefixmc->getNextHops(network->id(),mg,Multicaster::AddToPropagationQueue(&fifoPtr,fifoEnd,bloom,bloomNonce,_r->identity.address(),network->multicastPrefixBits(),prefix)); + _r->mc->getNextHops(network->id(),mg,Multicaster::AddToPropagationQueue(&fifoPtr,fifoEnd,bloom,bloomNonce,_r->identity.address(),nconf->multicastPrefixBits(),prefix)); while (fifoPtr != fifoEnd) *(fifoPtr++) = (unsigned char)0; @@ -143,7 +147,7 @@ void Switch::onLocalEthernet(const SharedPtr &network,const MAC &from,c outp.append((unsigned char)0); outp.append(network->id()); outp.append(bloomNonce); - outp.append((unsigned char)network->multicastPrefixBits()); + outp.append((unsigned char)nconf->multicastPrefixBits()); outp.append((unsigned char)prefix); _r->identity.address().appendTo(outp); outp.append((unsigned char)((mcid >> 16) & 0xff)); -- cgit v1.2.3