diff options
| -rw-r--r-- | op-mode-definitions/show-conntrack.xml.in | 6 | ||||
| -rwxr-xr-x | src/op_mode/conntrack.py | 23 | 
2 files changed, 29 insertions, 0 deletions
| diff --git a/op-mode-definitions/show-conntrack.xml.in b/op-mode-definitions/show-conntrack.xml.in index 8d921e6a5..4cdcffcdb 100644 --- a/op-mode-definitions/show-conntrack.xml.in +++ b/op-mode-definitions/show-conntrack.xml.in @@ -7,6 +7,12 @@            <help>Show conntrack tables entries</help>          </properties>          <children> +          <node name="statistics"> +            <properties> +              <help>Show conntrack statistics</help> +            </properties> +            <command>sudo ${vyos_op_scripts_dir}/conntrack.py show_statistics</command> +          </node>            <node name="table">              <properties>                <help>Show conntrack entries for table</help> diff --git a/src/op_mode/conntrack.py b/src/op_mode/conntrack.py index 036226418..b27aa6060 100755 --- a/src/op_mode/conntrack.py +++ b/src/op_mode/conntrack.py @@ -51,6 +51,21 @@ def _get_raw_data(family):      return _xml_to_dict(xml) +def _get_raw_statistics(): +    entries = [] +    data = cmd('sudo conntrack -S') +    data = data.replace('  \t', '').split('\n') +    for entry in data: +        entries.append(entry.split()) +    return entries + + +def get_formatted_statistics(entries): +    headers = ["CPU", "Found", "Invalid", "Insert", "Insert fail", "Drop", "Early drop", "Errors", "Search restart"] +    output = tabulate(entries, headers, numalign="left") +    return output + +  def get_formatted_output(dict_data):      """      :param xml: @@ -111,6 +126,14 @@ def show(raw: bool, family: str):          return get_formatted_output(conntrack_data) +def show_statistics(raw: bool): +    conntrack_statistics = _get_raw_statistics() +    if raw: +        return conntrack_statistics +    else: +        return get_formatted_statistics(conntrack_statistics) + +  if __name__ == '__main__':      try:          res = vyos.opmode.run(sys.modules[__name__]) | 
