예제 #1
0
 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
예제 #2
0
    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
예제 #3
0
 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
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
 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