예제 #1
0
    def add_port_egress_group(datapath, vlan_id, is_tag, port_id):
        ofproto = datapath.ofproto
        parser = datapath.ofproto_parser
		
        if is_tag:
            actions = [parser.OFPActionOutput(port=port_id)]
        else:
            actions = [parser.OFPActionOutput(port=port_id), parser.OFPActionPopVlan()]
      
        buckets = [parser.OFPBucket(weight=100, watch_port=0, watch_group=0, actions=actions)]
        group_id=vlan_util.encode_group_l2_intf(vlan_id, is_tag, port_id)
        msg_util.add_group(datapath, ofproto.OFPGT_INDIRECT, group_id, buckets)
        return group_id
예제 #2
0
    def create_dlf_group(datapath, vlan_id, port_list):
        ofproto = datapath.ofproto
        parser = datapath.ofproto_parser
        groups = Set()
        for port in port_list:
            # collect group_id
            groups.add(vlan_util.add_port_egress_group(datapath, vlan_id, False, port))

        bucket_actions = []
        for group_id in groups:
            bucket_actions.append(parser.OFPActionGroup(group_id))

        buckets = []
        for bk_action in bucket_actions:
            buckets.append(parser.OFPBucket(weight=100, watch_port=0, watch_group=0, actions=bk_action))

        dlf_group_id = bridge_util.encode_group_dlf(vlan_id)
        msg_util.add_group(datapath, ofproto.OFPGT_ALL, dlf_group_id, buckets)
        return dlf_group_id