summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@medozas.de>2009-09-18 13:07:09 +0200
committerHarald Welte <laforge@gnumonks.org>2009-10-25 11:08:56 +0100
commit7fa7329fc972513021131416dbd9d535141bd2ea (patch)
tree83909fa00a6ed6a922ebd2d92c49a29691fdbfa2
parent648a7bafa7acc33d986f113275a20199a6ad2aaa (diff)
iprange: roll address parsing into a loop
-rw-r--r--extensions/libxt_iprange.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/extensions/libxt_iprange.c b/extensions/libxt_iprange.c
index c5857669..9e544ea0 100644
--- a/extensions/libxt_iprange.c
+++ b/extensions/libxt_iprange.c
@@ -34,33 +34,29 @@ static void
iprange_parse_spec(const char *from, const char *to, union nf_inet_addr *range,
uint8_t family, const char *optname)
{
+ const char *spec[2] = {from, to};
struct in6_addr *ia6;
struct in_addr *ia4;
+ unsigned int i;
memset(range, 0, sizeof(union nf_inet_addr) * 2);
if (family == NFPROTO_IPV6) {
- ia6 = xtables_numeric_to_ip6addr(from);
- if (ia6 == NULL)
- xtables_param_act(XTF_BAD_VALUE, "iprange",
- optname, from);
- range[0].in6 = *ia6;
- ia6 = xtables_numeric_to_ip6addr(to);
- if (ia6 == NULL)
- xtables_param_act(XTF_BAD_VALUE, "iprange",
- optname, to);
- range[1].in6 = *ia6;
+ for (i = 0; i < ARRAY_SIZE(spec); ++i) {
+ ia6 = xtables_numeric_to_ip6addr(spec[i]);
+ if (ia6 == NULL)
+ xtables_param_act(XTF_BAD_VALUE, "iprange",
+ optname, spec[i]);
+ range[i].in6 = *ia6;
+ }
} else {
- ia4 = xtables_numeric_to_ipaddr(from);
- if (ia4 == NULL)
- xtables_param_act(XTF_BAD_VALUE, "iprange",
- optname, from);
- range[0].in = *ia4;
- ia4 = xtables_numeric_to_ipaddr(to);
- if (ia4 == NULL)
- xtables_param_act(XTF_BAD_VALUE, "iprange",
- optname, to);
- range[1].in = *ia4;
+ for (i = 0; i < ARRAY_SIZE(spec); ++i) {
+ ia4 = xtables_numeric_to_ipaddr(spec[i]);
+ if (ia4 == NULL)
+ xtables_param_act(XTF_BAD_VALUE, "iprange",
+ optname, spec[i]);
+ range[i].in = *ia4;
+ }
}
}