def buildMulticastGroupEntry(self, multicast_group_id, replicas): mc_entry = p4runtime_pb2.PacketReplicationEngineEntry() mc_entry.multicast_group_entry.multicast_group_id = multicast_group_id for replica in replicas: r = p4runtime_pb2.Replica() r.egress_port = replica['egress_port'] r.instance = replica['instance'] mc_entry.multicast_group_entry.replicas.extend([r]) return mc_entry
def buildMirrorSessionEntry(self, session_id, egress_port): pre_entry = p4runtime_pb2.PacketReplicationEngineEntry() mirror_entry = p4runtime_pb2.CloneSessionEntry() replica = p4runtime_pb2.Replica() replica.egress_port = egress_port mirror_entry.session_id = session_id mirror_entry.replicas.add().CopyFrom(replica) pre_entry.clone_session_entry.CopyFrom(mirror_entry) return pre_entry
def buildCloneSessionEntry(self, clone_session_id, replicas, packet_length_bytes=0): clone_entry = p4runtime_pb2.PacketReplicationEngineEntry() clone_entry.clone_session_entry.session_id = clone_session_id clone_entry.clone_session_entry.packet_length_bytes = packet_length_bytes clone_entry.clone_session_entry.class_of_service = 0 # PI currently supports only CoS=0 for clone session entry for replica in replicas: r = p4runtime_pb2.Replica() r.egress_port = replica['egress_port'] r.instance = replica['instance'] clone_entry.clone_session_entry.replicas.extend([r]) return clone_entry
def buildMulticastEntry(self, mcast_group_id, member_ports): multicast_entry = p4runtime_pb2.MulticastGroupEntry() multicast_entry.multicast_group_id = mcast_group_id for i in member_ports: replica = p4runtime_pb2.Replica() replica.egress_port = i replica.instance = 1 multicast_entry.replicas.extend([replica]) return multicast_entry
def buildMulticastEntry(self, mcast_group_id, member_ports): """ See documentation at beginning of document. """ multicast_entry = p4runtime_pb2.MulticastGroupEntry() multicast_entry.multicast_group_id = mcast_group_id for i in member_ports: replica = p4runtime_pb2.Replica() replica.egress_port = i replica.instance = 1 multicast_entry.replicas.extend([replica]) return multicast_entry
def get_replicas_pb(self, egress_port, instance): p4runtime_replicas = p4runtime_pb2.Replica() p4runtime_replicas.egress_port = egress_port p4runtime_replicas.instance = instance return p4runtime_replicas