Exemple #1
0
def action_generate(parent, field_to_mod, mod_field_vals):
    """
    Create an action to modify the field indicated in field_to_mod

    @param parent Must implement, assertTrue
    @param field_to_mod The field to modify as a string name
    @param mod_field_vals Hash of values to use for modified values
    """

    act = None

    if field_to_mod in ['pktlen']:
        return None

    if field_to_mod == 'dl_dst':
        act = action.action_set_dl_dst()
        act.dl_addr = parse.parse_mac(mod_field_vals['dl_dst'])
    elif field_to_mod == 'dl_src':
        act = action.action_set_dl_src()
        act.dl_addr = parse.parse_mac(mod_field_vals['dl_src'])
    elif field_to_mod == 'dl_vlan_enable':
        if not mod_field_vals['dl_vlan_enable']: # Strip VLAN tag
            act = action.action_strip_vlan()
        # Add VLAN tag is handled by dl_vlan field
        # Will return None in this case
    elif field_to_mod == 'dl_vlan':
        act = action.action_set_vlan_vid()
        act.vlan_vid = mod_field_vals['dl_vlan']
    elif field_to_mod == 'dl_vlan_pcp':
        act = action.action_set_vlan_pcp()
        act.vlan_pcp = mod_field_vals['dl_vlan_pcp']
    elif field_to_mod == 'ip_src':
        act = action.action_set_nw_src()
        act.nw_addr = parse.parse_ip(mod_field_vals['ip_src'])
    elif field_to_mod == 'ip_dst':
        act = action.action_set_nw_dst()
        act.nw_addr = parse.parse_ip(mod_field_vals['ip_dst'])
    elif field_to_mod == 'ip_tos':
        act = action.action_set_nw_tos()
        act.nw_tos = mod_field_vals['ip_tos']
    elif field_to_mod == 'tcp_sport':
        act = action.action_set_tp_src()
        act.tp_port = mod_field_vals['tcp_sport']
    elif field_to_mod == 'tcp_dport':
        act = action.action_set_tp_dst()
        act.tp_port = mod_field_vals['tcp_dport']
    elif field_to_mod == 'udp_sport':
        act = action.action_set_tp_src()
        act.tp_port = mod_field_vals['udp_sport']
    elif field_to_mod == 'udp_dport':
        act = action.action_set_tp_dst()
        act.tp_port = mod_field_vals['udp_dport']
    else:
        parent.assertTrue(0, "Unknown field to modify: " + str(field_to_mod))

    return act
Exemple #2
0
    def runTest(self):
        logging = get_logger()
        logging.info("Running FlowModFailed Ordering not possible Grp70No240 test")

        of_ports = config["port_map"].keys()
        of_ports.sort()
        self.assertTrue(len(of_ports) > 1, "Not enough ports for test")

        rc = delete_all_flows(self.controller)
        self.assertTrue(rc != -1, "Error installing flow mod")
        self.assertEqual(do_barrier(self.controller), 0, "Barrier failed")

        msg = message.flow_mod()
        msg.command = ofp.OFPFC_ADD
        act1 = action.action_output()
        act2 = action.action_set_tp_src()
        act1.port = of_ports[0]
        act2.tp_port = 8080
        
        self.assertTrue(msg.actions.add(act1), "Could not add action")
        self.assertTrue(msg.actions.add(act2), "Could not add action")

        packed=msg.pack()

        rv=self.controller.message_send(packed)
        self.assertTrue(rv==0,"Unable to send the message")
        self.assertEqual(do_barrier(self.controller), 0, "Barrier failed")

        (response, raw) = self.controller.poll(ofp.OFPT_ERROR, timeout=10)
        self.assertTrue(response is not None,"Did not receive an error")
        self.assertTrue(response.type==ofp.OFPET_FLOW_MOD_FAILED,"Unexpected Error type. Expected OFPET_FLOW_MOD_FAILED error type got {0}".format(response.type))
        self.assertTrue(response.code==ofp.OFPFMFC_UNSUPPORTED," Unexpected error code, Expected ofp.OFPFMFC_UNSUPPORTED error code got {0}" .format(response.code))
Exemple #3
0
def create_action(**kwargs):
    a = kwargs.get('action')
    if a == ofp.OFPAT_OUTPUT:
        act = action.action_output()
        act.port = kwargs.get('port', 1)
        return act
    if a == ofp.OFPAT_GROUP:
        act = action.action_group()
        act.group_id = kwargs.get('group_id', 0)
        return act
    if a == ofp.OFPAT_SET_TP_SRC:
        act = action.action_set_tp_src()
        act.tp_port = kwargs.get('tp_port', 0)
        return act;
Exemple #4
0
def action_generate(parent, field_to_mod, mod_field_vals):
    """
    Create an action to modify the field indicated in field_to_mod

    @param parent Must implement, assertTrue
    @param field_to_mod The field to modify as a string name
    @param mod_field_vals Hash of values to use for modified values
    """

    act = None

    if field_to_mod in ['pktlen']:
        return None

    if field_to_mod == 'dl_dst':
        act = action.action_set_dl_dst()
        act.dl_addr = parse.parse_mac(mod_field_vals['dl_dst'])
    elif field_to_mod == 'dl_src':
        act = action.action_set_dl_src()
        act.dl_addr = parse.parse_mac(mod_field_vals['dl_src'])
    elif field_to_mod == 'dl_vlan_enable':
        if not mod_field_vals['dl_vlan_enable']:  # Strip VLAN tag
            act = action.action_strip_vlan()
        # Add VLAN tag is handled by dl_vlan field
        # Will return None in this case
    elif field_to_mod == 'dl_vlan':
        act = action.action_set_vlan_vid()
        act.vlan_vid = mod_field_vals['dl_vlan']
    elif field_to_mod == 'dl_vlan_pcp':
        act = action.action_set_vlan_pcp()
        act.vlan_pcp = mod_field_vals['dl_vlan_pcp']
    elif field_to_mod == 'ip_src':
        act = action.action_set_nw_src()
        act.nw_addr = parse.parse_ip(mod_field_vals['ip_src'])
    elif field_to_mod == 'ip_dst':
        act = action.action_set_nw_dst()
        act.nw_addr = parse.parse_ip(mod_field_vals['ip_dst'])
    elif field_to_mod == 'ip_tos':
        act = action.action_set_nw_tos()
        act.nw_tos = mod_field_vals['ip_tos']
    elif field_to_mod == 'tcp_sport':
        act = action.action_set_tp_src()
        act.tp_port = mod_field_vals['tcp_sport']
    elif field_to_mod == 'tcp_dport':
        act = action.action_set_tp_dst()
        act.tp_port = mod_field_vals['tcp_dport']
    else:
        parent.assertTrue(0, "Unknown field to modify: " + str(field_to_mod))

    return act
Exemple #5
0
    def runTest(self):
        logging = get_logger()
        logging.info(
            "Running FlowModFailed Ordering not possible Grp70No240 test")

        of_ports = config["port_map"].keys()
        of_ports.sort()
        self.assertTrue(len(of_ports) > 1, "Not enough ports for test")

        rc = delete_all_flows(self.controller)
        self.assertTrue(rc != -1, "Error installing flow mod")
        self.assertEqual(do_barrier(self.controller), 0, "Barrier failed")

        msg = message.flow_mod()
        msg.command = ofp.OFPFC_ADD
        act1 = action.action_output()
        act2 = action.action_set_tp_src()
        act1.port = of_ports[0]
        act2.tp_port = 8080

        self.assertTrue(msg.actions.add(act1), "Could not add action")
        self.assertTrue(msg.actions.add(act2), "Could not add action")

        packed = msg.pack()

        rv = self.controller.message_send(packed)
        self.assertTrue(rv == 0, "Unable to send the message")
        self.assertEqual(do_barrier(self.controller), 0, "Barrier failed")

        (response, raw) = self.controller.poll(ofp.OFPT_ERROR, timeout=10)
        self.assertTrue(response is not None, "Did not receive an error")
        self.assertTrue(
            response.type == ofp.OFPET_FLOW_MOD_FAILED,
            "Unexpected Error type. Expected OFPET_FLOW_MOD_FAILED error type got {0}"
            .format(response.type))
        self.assertTrue(
            response.code == ofp.OFPFMFC_UNSUPPORTED,
            " Unexpected error code, Expected ofp.OFPFMFC_UNSUPPORTED error code got {0}"
            .format(response.code))
Exemple #6
0
def create_action(**kwargs):
    a = kwargs.get('action')
    if a == ofp.OFPAT_OUTPUT:
        act = action.action_output()
        act.port = kwargs.get('port', 1)
        return act
    if a == ofp.OFPAT_GROUP:
        act = action.action_group()
        act.group_id = kwargs.get('group_id', 0)
        return act
    if a == ofp.OFPAT_SET_TP_SRC:
        act = action.action_set_tp_src()
        act.tp_port = kwargs.get('tp_port', 0)
        return act
    if a == ofp.OFPAT_SET_DL_DST:
        act = action.action_set_dl_dst()
        dl_tmp = kwargs.get('dl_dst', 1)
        act.dl_addr = parse.parse_mac(dl_tmp)
        return act
    if a == ofp.OFPAT_SET_NW_DST:
        act = action.action_set_nw_dst()
        act.nw_addr = parse.parse_ip(kwargs.get('nw_dst', '192.168.3.1' ))
        return act
Exemple #7
0
def create_action(**kwargs):
    a = kwargs.get('action')
    if a == ofp.OFPAT_OUTPUT:
        act = action.action_output()
        act.port = kwargs.get('port', 1)
        return act
    if a == ofp.OFPAT_GROUP:
        act = action.action_group()
        act.group_id = kwargs.get('group_id', 0)
        return act
    if a == ofp.OFPAT_SET_TP_SRC:
        act = action.action_set_tp_src()
        act.tp_port = kwargs.get('tp_port', 0)
        return act
    if a == ofp.OFPAT_SET_DL_DST:
        act = action.action_set_dl_dst()
        dl_tmp = kwargs.get('dl_dst', 1)
        act.dl_addr = parse.parse_mac(dl_tmp)
        return act
    if a == ofp.OFPAT_SET_NW_DST:
        act = action.action_set_nw_dst()
        act.nw_addr = parse.parse_ip(kwargs.get('nw_dst', '192.168.3.1'))
        return act