summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/op_mode/show_nat66_rules.py14
-rwxr-xr-xsrc/op_mode/show_nat66_statistics.py2
-rwxr-xr-xsrc/op_mode/show_nat_rules.py7
3 files changed, 16 insertions, 7 deletions
diff --git a/src/op_mode/show_nat66_rules.py b/src/op_mode/show_nat66_rules.py
index cbab2d03b..736ba2063 100755
--- a/src/op_mode/show_nat66_rules.py
+++ b/src/op_mode/show_nat66_rules.py
@@ -40,10 +40,17 @@ if args.source or args.destination:
data_json = jmespath.search('nftables[?rule].rule[?chain]', tmp)
for idx in range(0, len(data_json)):
data = data_json[idx]
+
+ # If there is no index 3, we don't think this is the record we need to check
+ if len(data['expr']) <= 3:
+ continue
+
comment = data['comment']
+ rule = comment.replace('SRC-NAT66-','')
+ rule = rule.replace('DST-NAT66-','')
chain = data['chain']
if not (args.source and chain == 'POSTROUTING') or (not args.source and chain == 'PREROUTING'):
- exit(0)
+ continue
interface = dict_search('match.right', data['expr'][0])
srcdest = dict_search('match.right.prefix.addr', data['expr'][2])
if srcdest:
@@ -52,6 +59,7 @@ if args.source or args.destination:
srcdest = srcdest + '/' + str(addr_tmp)
else:
srcdest = dict_search('match.right', data['expr'][2])
+
tran_addr = dict_search('snat.addr.prefix.addr' if args.source else 'dnat.addr.prefix.addr', data['expr'][3])
if tran_addr:
addr_tmp = dict_search('snat.addr.prefix.len' if args.source else 'dnat.addr.prefix.len', data['expr'][3])
@@ -60,12 +68,10 @@ if args.source or args.destination:
else:
if 'masquerade' in data['expr'][3]:
tran_addr = 'masquerade'
- elif 'log' in data['expr'][3]:
- continue
else:
tran_addr = dict_search('snat.addr' if args.source else 'dnat.addr', data['expr'][3])
- print(format_nat66_rule % (comment, srcdest, tran_addr, interface))
+ print(format_nat66_rule % (rule, srcdest, tran_addr, interface))
exit(0)
else:
diff --git a/src/op_mode/show_nat66_statistics.py b/src/op_mode/show_nat66_statistics.py
index 0f0b05978..bc81692ae 100755
--- a/src/op_mode/show_nat66_statistics.py
+++ b/src/op_mode/show_nat66_statistics.py
@@ -31,7 +31,7 @@ rule pkts bytes interface
{% set bytes = r.counter.bytes %}
{% set interface = r.interface %}
{# remove rule comment prefix #}
-{% set comment = r.comment | replace('SRC-NAT-', '') | replace('DST-NAT-', '') | replace(' tcp_udp', '') %}
+{% set comment = r.comment | replace('SRC-NAT66-', '') | replace('DST-NAT66-', '') %}
{{ "%-4s" | format(comment) }} {{ "%9s" | format(packets) }} {{ "%12s" | format(bytes) }} {{ interface }}
{% endif %}
{% endfor %}
diff --git a/src/op_mode/show_nat_rules.py b/src/op_mode/show_nat_rules.py
index 0ddb7ddd4..1a02f6602 100755
--- a/src/op_mode/show_nat_rules.py
+++ b/src/op_mode/show_nat_rules.py
@@ -41,9 +41,12 @@ if args.source or args.destination:
for idx in range(0, len(data_json)):
data = data_json[idx]
comment = data['comment']
+ rule = comment.replace('SRC-NAT-','')
+ rule = rule.replace('DST-NAT-','')
+ rule = rule.replace(' tcp_udp','')
chain = data['chain']
if not (args.source and chain == 'POSTROUTING') or (not args.source and chain == 'PREROUTING'):
- exit(0)
+ continue
interface = dict_search('match.right', data['expr'][0])
srcdest = dict_search('match.right.prefix.addr', data['expr'][1])
if srcdest:
@@ -65,7 +68,7 @@ if args.source or args.destination:
else:
tran_addr = dict_search('snat.addr' if args.source else 'dnat.addr', data['expr'][3])
- print(format_nat66_rule % (comment, srcdest, tran_addr, interface))
+ print(format_nat66_rule % (rule, srcdest, tran_addr, interface))
exit(0)
else: