The following code describes how to handle packetIn event.
Once controller receives a packetIn event, controller outputs "PacketIn Event is raised up"
from pox.core import core
import pox.openflow.libopenflow_01 as of
import pox.lib.packet as pkt
log = core.getLogger()
class PktInEvt(object):
def __init__(self):
core.openflow.addListeners(self)
def _handle_PacketIn (self, event):
print "PacketIn Event is raised up"
def launch():
core.registerNew(PktInEvt)
combine discovery module
the following code shows how to use discovery module in pox
from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.lib.revent import *
from pox.lib.recoco import Timer
from collections import defaultdict
from pox.openflow.discovery import Discovery
from pox.lib.util import dpid_to_str
import time
class PktInEvt(EventMixin):
def __init__(self):
def startup():
core.openflow.addListeners(self, priority = 0)
core.openflow_discovery.addListeners(self)
core.call_when_ready(startup, ('openflow','openflow_discovery'))
print "init over"
def _handle_PacketIn (self, event):
print "PacketIn Event is raised up"
def _handle_LinkEvent(self, event):
l = event.link
print event.added
print event.removed
print 'switch %d' %l.dpid1
print 'port %d' %l.port1
print 'switch %d' %l.dpid2
print 'port %d' %l.port2
def launch():
core.registerNew(PktInEvt)