from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.openflow.libopenflow_01 import *
from pox.lib.revent import *
from collections import defaultdict
from pox.openflow.discovery import Discovery
from pox.lib.util import dpidToStr
from pox.lib.recoco import Timer
import time
import random
from pox.lib.util import dpid_to_str
from pox.topology import topology
from pox.lib.revent import *
from pox.lib.addresses import *
import traceback
import pickle
import pox
from pox.lib.packet.ethernet import ethernet, ETHER_BROADCAST
from pox.lib.packet.ipv4 import ipv4
from pox.lib.packet.arp import arp
from pox.lib.addresses import IPAddr, EthAddr
from pox.lib.util import str_to_bool, dpidToStr
switchlist = []
switchpath = defaultdict(lambda:[])
def _handle_ConnectionUp (event):
# When a switch connects, forget about previous port states
# _prev[event.dpid].clear()
global switchlist
if event.dpid not in switchlist:
switchlist.append(event.dpid)
switchpath[event.dpid] = event.connection
print event.dpid
def _handle_ConnectionDown (event):
global switchlist
if event.dpid in switchlist:
switchlist.remove(event.dpid)
del switchpath[event.dpid]
pass
def _handle_PacketIn (event):
print switchpath[switchlist[1]]
if event.dpid in switchlist:
switchlist.remove(event.dpid)
del switchpath[event.dpid]
pass