diff mbox series

[iptables,3/3] xshared: Print protocol numbers if --numeric was given

Message ID 20220728113136.24376-3-phil@nwl.cc
State Accepted
Delegated to: Pablo Neira
Headers show
Series [iptables,1/3] tests: shell: Fix testcases for changed ip6tables opts output | expand

Commit Message

Phil Sutter July 28, 2022, 11:31 a.m. UTC
This is much trickier than expected: On one hand, proto_to_name() is
used to lookup protocol extensions so must resolve despite FMT_NUMERIC
being set. On the other, --verbose implies --numeric but changing the
output there is probably a bad idea. Luckily the latter situation is
identified by FMT_NOTABLE bit.

Signed-off-by: Phil Sutter <phil@nwl.cc>
---
 .../shell/testcases/ip6tables/0002-verbose-output_0    | 10 +++++-----
 .../testcases/ipt-restore/0011-noflush-empty-line_0    |  2 +-
 .../shell/testcases/iptables/0002-verbose-output_0     |  4 ++--
 iptables/xshared.c                                     |  6 +++---
 4 files changed, 11 insertions(+), 11 deletions(-)
diff mbox series

Patch

diff --git a/iptables/tests/shell/testcases/ip6tables/0002-verbose-output_0 b/iptables/tests/shell/testcases/ip6tables/0002-verbose-output_0
index dad01a982a915..2a1518d6fb0de 100755
--- a/iptables/tests/shell/testcases/ip6tables/0002-verbose-output_0
+++ b/iptables/tests/shell/testcases/ip6tables/0002-verbose-output_0
@@ -33,11 +33,11 @@  EXPECT='Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 
 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source               destination
-    0     0 ACCEPT     all  --  eth2   eth3    feed:babe::1         feed:babe::2
-    0     0 ACCEPT     all  --  eth2   eth3    feed:babe::4         feed:babe::5
-    0     0            ipv6-icmp --  *      *       ::/0                 ::/0                 ipv6-icmptype 1 code 0
-    0     0            all  --  *      *       ::/0                 ::/0                 dst length:42  rt type:23
-    0     0 LOG        all  --  *      *       ::/0                 ::/0                 frag id:1337 LOG flags 0 level 4
+    0     0 ACCEPT     0    --  eth2   eth3    feed:babe::1         feed:babe::2
+    0     0 ACCEPT     0    --  eth2   eth3    feed:babe::4         feed:babe::5
+    0     0            58   --  *      *       ::/0                 ::/0                 ipv6-icmptype 1 code 0
+    0     0            0    --  *      *       ::/0                 ::/0                 dst length:42  rt type:23
+    0     0 LOG        0    --  *      *       ::/0                 ::/0                 frag id:1337 LOG flags 0 level 4
 
 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source               destination'
diff --git a/iptables/tests/shell/testcases/ipt-restore/0011-noflush-empty-line_0 b/iptables/tests/shell/testcases/ipt-restore/0011-noflush-empty-line_0
index bea1a690bb624..1a3af46fc4756 100755
--- a/iptables/tests/shell/testcases/ipt-restore/0011-noflush-empty-line_0
+++ b/iptables/tests/shell/testcases/ipt-restore/0011-noflush-empty-line_0
@@ -12,5 +12,5 @@  EOF
 
 EXPECT='Chain FORWARD (policy ACCEPT)
 target     prot opt source               destination         
-ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           '
+ACCEPT     0    --  0.0.0.0/0            0.0.0.0/0           '
 diff -u <(echo "$EXPECT") <($XT_MULTI iptables -n -L FORWARD)
diff --git a/iptables/tests/shell/testcases/iptables/0002-verbose-output_0 b/iptables/tests/shell/testcases/iptables/0002-verbose-output_0
index 5d2af4c8d2ab2..15c72af309186 100755
--- a/iptables/tests/shell/testcases/iptables/0002-verbose-output_0
+++ b/iptables/tests/shell/testcases/iptables/0002-verbose-output_0
@@ -21,8 +21,8 @@  EXPECT='Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 
 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source               destination
-    0     0 ACCEPT     all  --  eth2   eth3    10.0.0.1             10.0.0.2
-    0     0 ACCEPT     all  --  eth2   eth3    10.0.0.4             10.0.0.5
+    0     0 ACCEPT     0    --  eth2   eth3    10.0.0.1             10.0.0.2
+    0     0 ACCEPT     0    --  eth2   eth3    10.0.0.4             10.0.0.5
 
 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source               destination'
diff --git a/iptables/xshared.c b/iptables/xshared.c
index ccec4ff1bceef..695157896d521 100644
--- a/iptables/xshared.c
+++ b/iptables/xshared.c
@@ -1092,10 +1092,10 @@  void print_rule_details(unsigned int linenum, const struct xt_counters *ctrs,
 
 	fputc(invflags & XT_INV_PROTO ? '!' : ' ', stdout);
 
-	if (pname)
-		printf(FMT("%-4s ", "%s "), pname);
-	else
+	if (((format & (FMT_NUMERIC | FMT_NOTABLE)) == FMT_NUMERIC) || !pname)
 		printf(FMT("%-4hu ", "%hu "), proto);
+	else
+		printf(FMT("%-4s ", "%s "), pname);
 }
 
 void save_rule_details(const char *iniface, unsigned const char *iniface_mask,