From 6dcdb233eae6a909d2899a5f3d8dc5791a846745 Mon Sep 17 00:00:00 2001
From: jack9603301 <jack9603301@163.com>
Date: Fri, 26 Mar 2021 19:00:13 +0800
Subject: nat: op-mode: T3435: Filter extra rules that should not be processed

---
 src/op_mode/show_nat66_rules.py |  7 +++++++
 src/op_mode/show_nat_rules.py   | 10 ++++++++++
 2 files changed, 17 insertions(+)

(limited to 'src')

diff --git a/src/op_mode/show_nat66_rules.py b/src/op_mode/show_nat66_rules.py
index fe5113015..cd4c35b8a 100755
--- a/src/op_mode/show_nat66_rules.py
+++ b/src/op_mode/show_nat66_rules.py
@@ -42,9 +42,16 @@ if args.source or args.destination:
         data = data_json[idx]
         
         # If there is no index 3, we don't think this is the record we need to check
+        # We need to filter the rule for Len (expr) <= 3 first, which is not what we should be concerned with
         if len(data['expr']) <= 3:
             continue
         
+        # The following key values must exist
+        # When the rule JSON does not have some keys, this is not a rule we can work with
+        for keys in ['comment', 'chain', 'expr']:
+            if keys not in data:
+                continue
+        
         comment = data['comment']
         rule = comment.replace('SRC-NAT66-','')
         rule = rule.replace('DST-NAT66-','')
diff --git a/src/op_mode/show_nat_rules.py b/src/op_mode/show_nat_rules.py
index a98fbef8c..4bf9ff3b5 100755
--- a/src/op_mode/show_nat_rules.py
+++ b/src/op_mode/show_nat_rules.py
@@ -40,6 +40,16 @@ 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
+        
+        # The following key values must exist
+        for keys in ['comment', 'chain', 'expr']:
+            if keys not in data:
+                continue
+        
         comment = data['comment']
         rule = int(''.join(list(filter(str.isdigit, comment))))
         chain = data['chain']
-- 
cgit v1.2.3