Faced with the need to extend optflags, inverse_for_options and commands_v_options arrays in order to integrate ebtables-specific options, I chose to get rid of them all instead. Patch 1 replaces opt2char() function which didn't work well since not every option has printable short-option character. The callback-based replacement returns the long-option and should make error messages more readable this way. Patch 2 elminates the inverse_for_options array along with the loop turning a given option into its bit's position for use in the array. The switch statement in the replacing callback is much easier to maintain and extend. Patch 3 makes use of the fact that no command has a mandatory option anymore. So every combination is either allowed or not, and a single bit may indicate that. Phil Sutter (3): xshared: Introduce xt_cmd_parse_ops::option_name xshared: Introduce xt_cmd_parse_ops::option_invert xshared: Simplify generic_opt_check() iptables/ip6tables.c | 2 + iptables/iptables.c | 2 + iptables/nft-arp.c | 32 ++++++ iptables/nft-ipv4.c | 2 + iptables/nft-ipv6.c | 2 + iptables/xshared.c | 249 ++++++++++++++++++++----------------------- iptables/xshared.h | 6 ++ 7 files changed, 159 insertions(+), 136 deletions(-) -- 2.41.0