+
+ if br_name != "":
+ res_ofctl = self._runner.exec_cmd("ovs-ofctl show " + br_name)
+ for i in range(0, len(res_ofctl)):
+ port_start = res_ofctl[i].strip()
+ if self._u.d_push(re.search(r'(\d+)\(%s\): addr:(.*)' % port_name, port_start)) is not None:
+ match = self._u.d_pop()
+ port_meta["port_no"] = match.group(1).strip()
+ port_meta["mac_addr"] = match.group(2).strip()
+ break
+
+ res_ofctl = self._runner.exec_cmd("ovs-ofctl dump-ports " + br_name)
+ if "port_no" in port_meta:
+ found_port = False
+ for i in range(0, len(res_ofctl)):
+ port_start = res_ofctl[i].strip()
+ if self._u.d_push(
+ re.search(r'port\s*%s:\s*rx pkts=(\d+), bytes=(\d+), drop=(\d+), errs=(\d+), frame=(\d+), over=(\d+), crc=(\d+)'
+ % port_meta["port_no"], port_start)) is not None:
+ match = self._u.d_pop()
+ port_meta["rx_pkts"] = match.group(1).strip()
+ port_meta["rx_bytes"] = match.group(2).strip()
+ port_meta["rx_drop"] = match.group(3).strip()
+ port_meta["rx_errs"] = match.group(4).strip()
+ port_meta["rx_frame"] = match.group(5).strip()
+ port_meta["rx_over"] = match.group(6).strip()
+ port_meta["rx_crc"] = match.group(7).strip()
+ found_port = True
+ elif self._u.d_push(
+ re.search(r'\s*tx pkts=(\d+), bytes=(\d+), drop=(\d+), errs=(\d+), coll=(\d+)',
+ port_start)) is not None and found_port:
+ match = self._u.d_pop()
+ port_meta["tx_pkts"] = match.group(1).strip()
+ port_meta["tx_bytes"] = match.group(2).strip()
+ port_meta["tx_drop"] = match.group(3).strip()
+ port_meta["tx_errs"] = match.group(4).strip()
+ port_meta["tx_coll"] = match.group(5).strip()
+ break
+