Restore ipfw(8)'s compact output support broken after r331668.

Also modify it a bit. Now -c option omits only 'from any to any' part
and works for different protocols (not just for ip).

Reported by:	Dmitry Selivanov <dseliv at gmail>
MFC after:	1 week
This commit is contained in:
ae 2019-06-25 09:08:24 +00:00
parent 41795499d1
commit 664615ae29

View File

@ -2223,6 +2223,8 @@ show_static_rule(struct cmdline_opts *co, struct format_opts *fo,
}
print_proto(bp, fo, &state);
if (co->do_compact != 0 && (rule->flags & IPFW_RULE_NOOPT))
goto justopts;
/* Print source */
bprintf(bp, " from");
@ -4395,6 +4397,8 @@ compile_rule(char *av[], uint32_t *rbuf, int *rbufsize, struct tidx *tstate)
}
OR_BLOCK(get_proto);
first_cmd = cmd; /* update pointer to use in compact form */
/*
* "from", mandatory
*/
@ -4466,6 +4470,8 @@ compile_rule(char *av[], uint32_t *rbuf, int *rbufsize, struct tidx *tstate)
cmd = next_cmd(cmd, &cblen);
}
}
if (first_cmd == cmd)
rule->flags |= IPFW_RULE_NOOPT;
read_options:
prev = NULL;