X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=options.c;h=f41153c693f35e509a3c531e2a7afa437ae67ddf;hp=292f5fc322f7d93facb08f8c1a2458708c80bfa3;hb=c03e20d7f594058ff223f30cf34de1b5e8210b8d;hpb=bba31cce0521e014109fc805671d4cff7ee9dbf6 diff --git a/options.c b/options.c index 292f5fc..f41153c 100644 --- a/options.c +++ b/options.c @@ -268,12 +268,15 @@ fw3_parse_address(void *ptr, const char *val, bool is_list) addr.family = FW3_FAMILY_V6; addr.address.v6 = v6; - if (m && !inet_pton(AF_INET6, m, &addr.mask.v6)) + if (m) { - bits = strtol(m, &e, 10); + if (!inet_pton(AF_INET6, m, &v6)) + { + bits = strtol(m, &e, 10); - if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v6)) - goto fail; + if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v6)) + goto fail; + } addr.mask.v6 = v6; } @@ -294,12 +297,15 @@ fw3_parse_address(void *ptr, const char *val, bool is_list) addr.family = FW3_FAMILY_V4; addr.address.v4 = v4; - if (m && !inet_pton(AF_INET, m, &addr.mask.v4)) + if (m) { - bits = strtol(m, &e, 10); + if (!inet_pton(AF_INET, m, &v4)) + { + bits = strtol(m, &e, 10); - if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v4)) - goto fail; + if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v4)) + goto fail; + } addr.mask.v4 = v4; } @@ -436,7 +442,7 @@ fw3_parse_port(void *ptr, const char *val, bool is_list) bool fw3_parse_family(void *ptr, const char *val, bool is_list) { - if (!strcmp(val, "any")) + if (!strcmp(val, "any") || !strcmp(val, "*")) *((enum fw3_family *)ptr) = FW3_FAMILY_ANY; else if (!strcmp(val, "inet") || strrchr(val, '4')) *((enum fw3_family *)ptr) = FW3_FAMILY_V4; @@ -537,7 +543,7 @@ fw3_parse_protocol(void *ptr, const char *val, bool is_list) while (isspace(*++val)); } - if (!strcmp(val, "all")) + if (!strcmp(val, "all") || !strcmp(val, "any") || !strcmp(val, "*")) { proto.any = true; put_value(ptr, &proto, sizeof(proto), is_list);