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);
  }
}

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 ) ; } }
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 .
