diff options
author | Andrey V. Elsukov <ae@FreeBSD.org> | 2025-02-11 09:48:17 +0000 |
---|---|---|
committer | Andrey V. Elsukov <ae@FreeBSD.org> | 2025-02-21 11:18:44 +0000 |
commit | 63422982e074a144cfb420408be06e6dc154f9fe (patch) | |
tree | daddb779e1a87c7237463693cf349e4e227cf8e5 | |
parent | a8c1ea2614a43922dff9598c7948df32473c720c (diff) |
ipfw: make 'ipfw show' output compatible with 'ipfw add' commandstable/13
If rule was added in compact form and rule body is empty, print
'proto ip' opcode to be compatible with ipfw(8) syntax parser.
Before:
$ ipfw add allow proto ip
000700 allow
After:
$ ipfw add allow proto ip
000700 allow proto ip
(cherry picked from commit 706a03f61bbb6e0cf10e6c3727966495b30d763e)
-rw-r--r-- | sbin/ipfw/ipfw2.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sbin/ipfw/ipfw2.c b/sbin/ipfw/ipfw2.c index 46c51081ded4..7a084249c4eb 100644 --- a/sbin/ipfw/ipfw2.c +++ b/sbin/ipfw/ipfw2.c @@ -2276,6 +2276,13 @@ show_static_rule(struct cmdline_opts *co, struct format_opts *fo, if (rule->flags & IPFW_RULE_JUSTOPTS) { state.flags |= HAVE_PROTO | HAVE_SRCIP | HAVE_DSTIP; + /* + * Print `proto ip` if all opcodes has been already printed. + */ + if (memchr(state.printed, 0, rule->act_ofs) == NULL) { + bprintf(bp, " proto ip"); + goto end; + } goto justopts; } |