コード例 #1
0
ファイル: flows.py プロジェクト: yapkke/yapc
 def add_output(self, port=pyof.OFPP_CONTROLLER, max_len=pyof.OFP_DEFAULT_MISS_SEND_LEN):
     """Add output action to list
     """
     oao = pyof.ofp_action_output()
     oao.max_len = max_len
     oao.port = port
     self.add(oao)
コード例 #2
0
ファイル: topology.py プロジェクト: sharifelshenawy/yapc
    def __init__(self, server, ofconn,
                 sendinterval=10, linktimeout=30):
        """Initialize

        @param server yapc core
        """
        if (sendinterval > linktimeout):
            output.warn("Probe interval of "+str(sendinterval)+\
                        "is smaller than timeout of "+str(linktimeout),
                        self.__class__.__name__)
        ##Interval to send LLDP per switch/port
        self.interval = sendinterval
        self.__minterval = sendinterval
        ##Time to wait before timing out link
        self.link_maintain = link_maintain(server, linktimeout)
        ##Reference to core
        self.server = server
        ##Reference to OpenFlow connections
        self.conn = ofconn
        ##Current list of switch/port LLDP is sent
        self.__sw_port = []
        ##Packet out template
        self.__po = pyof.ofp_packet_out()
        oao = pyof.ofp_action_output()
        self.__po.in_port = pyof.OFPP_NONE
        self.__po.actions_len = oao.len
        self.__po.actions.append(oao)

        mc.get_client()

        server.register_event_handler(ofevents.pktin.name,
                                      self)
        server.register_event_handler(ofevents.port_status.name,
                                      self)
        server.register_event_handler(ofevents.features_reply.name,
                                      self)
        server.post_event(yapc.priv_callback(self, True),
                          self.interval)
コード例 #3
0
ファイル: openflow.py プロジェクト: sharifelshenawy/yapc
    def unpack_action(self, string):
        """Unpack action
        
        @param string binary string of actions
        @return (action, remaining)
        """
        remaining = string
        action = None

        ah = pyof.ofp_action_header()
        ah.unpack(string)
        if (ah.type == pyof.OFPAT_OUTPUT):
            action = pyof.ofp_action_output()
            remaining = action.unpack(string)
        elif (ah.type == pyof.OFPAT_SET_NW_SRC) or (ah.type == pyof.OFPAT_SET_NW_DST):
            action = pyof.ofp_action_nw_addr()
            remaining = action.unpack(string)
        else:
            output.warn("Unhandled action type "+str(ah.type)+"!",
                        self.__class__.__name__)
            return (None, remaining[ah.len:])

        return (action, remaining)