This was... a bit of a nightmare. It took way too long and went down
a bunch of blind alleys. I'm not sure how much I like the final
result: it's pleasingly terse in some cases, but in others it feels
dangerously subtle, requiring a pretty careful understanding of the
sequencing rules of C's &&, || and , operators.
That said, while I was at many points ready to pack it in and hack my
around the problems limiting the parsing for destination remapping, I
couldn't really think of feasible way to do that either. So, here we
are.
David Gibson (12):
Makefile: Add missing PESTO_HEADERS variable
conf: Use parameter instead of global in conf_nat()
parse: Start splitting out parsing helpers
conf: Remove duplicate parsing of -F option
conf: Clean up conf_ip4_prefix()
parse: Add helper to parse unsigned integer values
parse: Move parse_port_range() to new parsing framework
parse: Add helpers for parsing IP addresses
conf: Move address configuration into helper function
conf: Use new parsing tools to handle -a option
fwd_rule: Allow "all" port specs to be combined with other options
fwd_rule: Rewrite forward rule parsing using parse.c helpers
Makefile | 22 +--
common.h | 3 +
conf.c | 209 ++++++++++++++++------------
conf.h | 1 +
fwd_rule.c | 392 +++++++++++++++++++++++------------------------------
fwd_rule.h | 2 -
inany.c | 70 +---------
inany.h | 3 -
parse.c | 243 +++++++++++++++++++++++++++++++++
parse.h | 37 +++++
util.c | 12 +-
11 files changed, 591 insertions(+), 403 deletions(-)
create mode 100644 parse.c
create mode 100644 parse.h
--
2.54.0