Esempio n. 1
0
def port_config_set(controller, port_no, config, mask):
    """
    Set the port configuration according the given parameters

    Gets the switch feature configuration and updates one port's
    configuration value according to config and mask
    """
    logging.info("Setting port " + str(port_no) + " to config " + str(config))
    request = ofp.message.features_request()
    reply, pkt = controller.transact(request)
    if reply is None:
        return -1
    logging.debug(reply.show())
    p = None
    for idx in range(len(reply.ports)):
        if reply.ports[idx].port_no == port_no:
            p = reply.ports[idx]
            break
    mod = ofp.message.port_mod()
    mod.port_no = port_no
    if p:
        mod.hw_addr = p.hw_addr
    mod.config = config
    mod.mask = mask
    if p:
        mod.advertise = p.advertised
    controller.message_send(mod)
    return 0
Esempio n. 2
0
def port_config_set(controller, port_no, config, mask):
    """
    Set the port configuration according the given parameters

    Gets the switch feature configuration and updates one port's
    configuration value according to config and mask
    """
    logging.info("Setting port " + str(port_no) + " to config " + str(config))
    request = of10.message.features_request()
    reply, pkt = controller.transact(request)
    if reply is None:
        return -1
    logging.debug(reply.show())
    p = None
    for idx in range(len(reply.ports)):
        if reply.ports[idx].port_no == port_no:
            p = reply.ports[idx]
            break
    mod = of10.message.port_mod()
    mod.port_no = port_no
    if p:
        mod.hw_addr = p.hw_addr
    mod.config = config
    mod.mask = mask
    if p:
        mod.advertise = p.advertised
    controller.message_send(mod)
    return 0
Esempio n. 3
0
def flow_entry_install(controller,
                       flow_type,
                       match=None,
                       instructions=None,
                       prio=None,
                       flags=None,
                       table_id=0,
                       hard_timeout=None,
                       idle_timeout=None,
                       out_group=ofp.OFPG_ANY,
                       out_port=ofp.OFPP_ANY,
                       buffer_id=ofp.OFP_NO_BUFFER):
    request = flow_mod_class[flow_type](table_id=table_id,
                                        match=match,
                                        instructions=instructions,
                                        buffer_id=buffer_id,
                                        out_group=out_group,
                                        out_port=out_port,
                                        priority=prio,
                                        flags=flags,
                                        hard_timeout=hard_timeout,
                                        idle_timeout=idle_timeout)
    controller.message_send(request)
    # print(request.show())
    return request
Esempio n. 4
0
def port_config_set(controller, port_no, config, mask, logger):
    """
    Set the port configuration according the given parameters

    Gets the switch feature configuration and updates one port's
    configuration value according to config and mask
    """
    logger.info("Setting port " + str(port_no) + " to config " + str(config))
    request = message.features_request()
    reply, pkt = controller.transact(request, timeout=2)
    if reply is None:
        return -1
    logger.debug(reply.show())
    for idx in range(len(reply.ports)):
        if reply.ports[idx].port_no == port_no:
            break
    if idx >= len(reply.ports):
        return -1
    mod = message.port_mod()
    mod.port_no = port_no
    mod.hw_addr = reply.ports[idx].hw_addr
    mod.config = config
    mod.mask = mask
    mod.advertise = reply.ports[idx].advertised
    rv = controller.message_send(mod)
    return rv
Esempio n. 5
0
def entry_mod(controller, message_class,
              match=None,
              instructions=None,
              buffer_id=ofp.OFP_NO_BUFFER,
              out_group=ofp.OFPG_ANY,
              out_port=ofp.OFPP_ANY,
              priority=0,
              flags=0):
    request = message_class(
        table_id=cmd_param['table'],
        match=match,
        instructions=instructions,
        buffer_id=buffer_id,
        out_group=out_group,
        out_port=out_port,
        priority=priority,
        flags=flags,
    )
    controller.message_send(request)
Esempio n. 6
0
def entry_mod(controller,
              message_class,
              match=None,
              instructions=None,
              buffer_id=ofp.OFP_NO_BUFFER,
              out_group=ofp.OFPG_ANY,
              out_port=ofp.OFPP_ANY,
              priority=0,
              flags=0):
    request = message_class(
        table_id=cmd_param['table'],
        match=match,
        instructions=instructions,
        buffer_id=buffer_id,
        out_group=out_group,
        out_port=out_port,
        priority=priority,
        flags=flags,
    )
    controller.message_send(request)
Esempio n. 7
0
def flow_entry_install(controller, flow_type, match=None, instructions=None, prio=None, flags=None,
                       table_id=0,
                       hard_timeout=None,
                       idle_timeout=None,
                       out_group=ofp.OFPG_ANY,
                       out_port=ofp.OFPP_ANY,
                       buffer_id=ofp.OFP_NO_BUFFER):
    request = flow_mod_class[flow_type](
        table_id=table_id,
        match=match,
        instructions=instructions,
        buffer_id=buffer_id,
        out_group=out_group,
        out_port=out_port,
        priority=prio,
        flags=flags,
        hard_timeout=hard_timeout,
        idle_timeout=idle_timeout
    )
    controller.message_send(request)
    # print(request.show())
    return request