question: protected void doFloodBDDP ( long pinSwitch , OFPacketIn pi , FloodlightContext cntx ) { TopologyInstance ti = getCurrentInstance ( false ) ; Set < Long > switches = ti . getSwitchesInOpenflowDomain ( pinSwitch ) ; if ( switches == null ) { switches = new HashSet < Long > ( ) ; switches . add ( pinSwitch ) ; } for ( long sid : switches ) { IOFSwitch sw = floodlightProvider . getSwitch ( sid ) ; if ( sw == null ) continue ; Collection < Short > enabledPorts = sw . getEnabledPortNumbers ( ) ; if ( enabledPorts == null ) continue ; Set < Short > ports = new HashSet < Short > ( ) ; ports . addAll ( enabledPorts ) ; Set < Short > portsKnownToTopo = ti . getPortsWithLinks ( sid ) ; if ( portsKnownToTopo != null ) { for ( short p : portsKnownToTopo ) { NodePortTuple npt = new NodePortTuple ( sid , p ) ; if ( ti . isBroadcastDomainPort ( npt ) == false ) { ports . remove ( p ) ; } } } Set < Short > portsToEliminate = getPortsToEliminateForBDDP ( sid ) ; if ( portsToEliminate != null ) { ports . removeAll ( portsToEliminate ) ; } if ( pinSwitch == sid ) { ports . remove ( pi . getInPort ( ) ) ; } doMultiActionPacketOut ( pi . getPacketData ( ) , sw , ports , cntx ) ; } }
target:  The BDDP packets are forwarded out of all the ports out of an openflowdomain.  Get all the switches in the same openflow domain as the sw (disabling tunnels).  Then get all the external switch ports and send these packets out.