internal captures are not captured (RX core server feature)
authorimarom <[email protected]>
Mon, 6 Mar 2017 10:33:31 +0000 (12:33 +0200)
committerimarom <[email protected]>
Mon, 6 Mar 2017 10:33:54 +0000 (12:33 +0200)
Signed-off-by: imarom <[email protected]>
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py
src/stateless/rx/trex_stateless_rx_port_mngr.cpp

index 6b5183b..ecedcd3 100755 (executable)
@@ -1067,7 +1067,7 @@ class STLClient(object):
             port_id_list = [port_id_list]
 
         # should be a list
-        if not isinstance(port_id_list, list):
+        if not isinstance(port_id_list, list) and not isinstance(port_id_list, tuple):
             raise STLTypeError('port_id_list', type(port_id_list), list)
 
         if not port_id_list and not allow_empty:
@@ -4422,7 +4422,6 @@ class STLClient(object):
                                          "pkt",
                                          self.pkt_line.__doc__,
                                          parsing_opts.PORT_LIST_WITH_ALL,
-                                         parsing_opts.FORCE,
                                          parsing_opts.COUNT,
                                          parsing_opts.DRY_RUN,
                                          parsing_opts.SCAPY_PKT_CMD)
@@ -4445,12 +4444,19 @@ class STLClient(object):
             return
             
             
+        # verify ports are stopped or force stop them
+        active_ports = [port_id for port_id in opts.ports if self.ports[port_id].is_active()]
+        if active_ports:
+            self.logger.log(format_text("Port(s) {0} are active - please stop them before pushing packets".format(active_ports), 'bold'))
+            return
+            
+            
         self.logger.pre_cmd("Pushing {0} packet(s) (size: {1}) on port(s) {2}:".format(opts.count if opts.count else 'infinite',
                                                                                        len(opts.scapy_pkt), opts.ports))
         
         try:
             with self.logger.supress():
-                self.push_packets(pkts = bytes(opts.scapy_pkt), ports = opts.ports, force = opts.force, count = opts.count)
+                self.push_packets(pkts = bytes(opts.scapy_pkt), ports = opts.ports, force = True, count = opts.count)
         except STLError as e:
             self.logger.post_cmd(False)
             raise
index 4e24a4a..ab7719f 100644 (file)
@@ -433,6 +433,7 @@ RXServer::handle_icmp(RXPktParser &parser) {
     response_parser.m_icmp->updateCheckSum(response_parser.m_ipv4->getTotalLength() - response_parser.m_ipv4->getHeaderLength());
     
     /* send */
+    TrexStatelessCaptureMngr::getInstance().handle_pkt_tx(response, m_port_id);
     m_io->tx(response);
 }
 
@@ -487,6 +488,7 @@ RXServer::handle_arp(RXPktParser &parser) {
     response_parser.m_arp->m_arp_tip = parser.m_arp->m_arp_sip;
     
     /* send */
+    TrexStatelessCaptureMngr::getInstance().handle_pkt_tx(response, m_port_id);
     m_io->tx(response);
     
 }
@@ -550,6 +552,7 @@ RXGratARP::send_next_grat_arp() {
     
     CTestPktGen::create_arp_req(p, sip, sip, src_mac, vlan, m_port_id);
     
+    TrexStatelessCaptureMngr::getInstance().handle_pkt_tx(m, m_port_id);
     if (m_io->tx(m) == 0) {
         m_ign_stats->m_tx_arp    += 1;
         m_ign_stats->m_tot_bytes += 64;