ports = ports if ports is not None else self.get_resolvable_ports()
ports = self._validate_port_list(ports)
- active_ports = list_intersect(ports, self.get_active_ports())
- if active_ports:
- raise STLError('Port(s) {0} are active, please stop them before resolving'.format(active_ports))
-
-
self.logger.pre_cmd('Resolving destination on port(s) {0}:'.format(ports))
with self.logger.supress():
rc = self.__resolve(ports, retries)
return port.err("{0} - port is not owned".format(func.__name__))
if not port.is_writeable():
- return port.err("{0} - port is not in a writeable state".format(func.__name__))
+ return port.err("{0} - port is active, please stop the port before executing command".format(func.__name__))
return func(*args, **kwargs)
def err(self, msg):
- return RC_ERR("port {0} : {1}\n".format(self.port_id, msg))
+ return RC_ERR("port {0} : *** {1}".format(self.port_id, msg))
def ok(self, data = ""):
return RC_OK(data)
return self.ok()
- @owned
+ @writeable
def set_l2_mode (self, dst_mac):
if not self.is_service_mode_on():
return self.err('port service mode must be enabled for configuring L2 mode. Please enable service mode')
return self.sync()
- @owned
+ @writeable
def set_l3_mode (self, src_addr, dest_addr, resolved_mac = None):
if not self.is_service_mode_on():
return self.err('port service mode must be enabled for configuring L3 mode. Please enable service mode')
generate_parse_err(result, ss.str());
}
- port->set_l2_mode(dst_mac);
+ try {
+ port->set_l2_mode(dst_mac);
+ } catch (const TrexException &ex) {
+ generate_execute_err(result, ex.what());
+ }
return (TREX_RPC_CMD_OK);
}
generate_parse_err(result, ss.str());
}
- port->set_l3_mode(src_ipv4, dst_ipv4, mac);
+ try {
+ port->set_l3_mode(src_ipv4, dst_ipv4, mac);
+ } catch (const TrexException &ex) {
+ generate_execute_err(result, ex.what());
+ }
} else {
+ try {
+ port->set_l3_mode(src_ipv4, dst_ipv4);
+ } catch (const TrexException &ex) {
+ generate_execute_err(result, ex.what());
+ }
- port->set_l3_mode(src_ipv4, dst_ipv4);
}
return (TREX_RPC_CMD_OK);
void
TrexStatelessPort::set_l2_mode(const uint8_t *dest_mac) {
+ /* not valid under traffic */
+ verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS, "set_l2_mode");
+
/* no IPv4 src */
getPortAttrObj()->set_src_ipv4(0);
void
TrexStatelessPort::set_l3_mode(uint32_t src_ipv4, uint32_t dest_ipv4) {
+ /* not valid under traffic */
+ verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS, "set_l3_mode");
+
/* set src IPv4 */
getPortAttrObj()->set_src_ipv4(src_ipv4);
void
TrexStatelessPort::set_l3_mode(uint32_t src_ipv4, uint32_t dest_ipv4, const uint8_t *resolved_mac) {
+ verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS, "set_l3_mode");
+
/* set src IPv4 */
getPortAttrObj()->set_src_ipv4(src_ipv4);