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
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