]> git.ipfire.org Git - thirdparty/ipset.git/commitdiff
- macipmap type reported misleading deprecated separator
author/C=EU/ST=EU/CN=Jozsef Kadlecsik/emailAddress=kadlec@blackhole.kfki.hu </C=EU/ST=EU/CN=Jozsef Kadlecsik/emailAddress=kadlec@blackhole.kfki.hu>
Tue, 21 Oct 2008 22:04:47 +0000 (22:04 +0000)
committer/C=EU/ST=EU/CN=Jozsef Kadlecsik/emailAddress=kadlec@blackhole.kfki.hu </C=EU/ST=EU/CN=Jozsef Kadlecsik/emailAddress=kadlec@blackhole.kfki.hu>
Tue, 21 Oct 2008 22:04:47 +0000 (22:04 +0000)
    tokens and printed the old one at listing set elements.
    Token printing was errorneous too.
    (Bugs reported by Krzysztof Oledzki)
  - Warn only once about deprecated separator tokens in
    restore mode.

ChangeLog
ipset.c
ipset.h
ipset_ipporthash.c
ipset_ipportiphash.c
ipset_ipportnethash.c
ipset_iptree.c
ipset_iptreemap.c
ipset_macipmap.c

index 93b1f0103cacd03652a2d8f401c3947e8e2f5012..26bad2589587320d172a11e5fba8c58b21660aa0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2.4.1
+  - macipmap type reported misleading deprecated separator
+    tokens and printed the old one at listing set elements
+    (bug reported by Krzysztof Oledzki)
+  - Warn only once about deprecated separator tokens in
+    restore mode.
 
 2.4
   - Added KBUILD_OUTPUT support (Sven Wegener)
diff --git a/ipset.c b/ipset.c
index d57318a6f77fcbf25d0a8e22242eb0125a54b385..4b7d5f99e407503c61fde82549d8f27ff8f0ee55 100644 (file)
--- a/ipset.c
+++ b/ipset.c
@@ -47,6 +47,7 @@ struct ip_set_restore *restore_set = NULL;
 size_t restore_offset = 0;
 socklen_t restore_size;
 unsigned restore_line = 0;
+unsigned warn_once = 0;
 
 #define TEMPFILE_PATTERN       "/ipsetXXXXXX"
 
diff --git a/ipset.h b/ipset.h
index 3e181c4a19f5223c711624143303b09741ed2b87..12091bade6bd40bc499f3640660a52b8f908a0c4 100644 (file)
--- a/ipset.h
+++ b/ipset.h
@@ -185,6 +185,8 @@ extern void ipset_free(void **data);
 extern struct set *set_find_byname(const char *name);
 extern struct set *set_find_byid(ip_set_id_t id);
 
+extern unsigned warn_once;
+
 #define BITSPERBYTE    (8*sizeof(char))
 #define ID2BYTE(id)    ((id)/BITSPERBYTE)
 #define ID2MASK(id)    (1 << ((id)%BITSPERBYTE))
index 1b92979699d1cf855d6f988ca313ec07ede07127..a839bd5d9132be09acf507553d97df6e5beb8ea4 100644 (file)
@@ -198,10 +198,9 @@ adt_parser(unsigned cmd, const char *optarg, void *data)
 
        DP("ipporthash: %p %p", optarg, data);
 
-       if ((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%')))
-               fprintf(stderr, "Warning: please replace old separator character '%s.1' with ','.\n"
-                               "Next release won't support it.\n",
-                       ptr);
+       if (((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%'))) && ++warn_once == 1)
+               fprintf(stderr, "Warning: please use ',' separator token between ip,port.\n"
+                               "Next release won't support old separator tokens.\n");
 
        ptr = strsep(&tmp, ":%,");
        parse_ip(ptr, &mydata->ip);
index 0bd2e9f785939230decda54597a2260a011d9cac..5cb920d48b72c3939d7dac78bf648e46bfc41a84 100644 (file)
@@ -198,10 +198,9 @@ adt_parser(unsigned cmd, const char *optarg, void *data)
 
        DP("ipportiphash: %p %p", optarg, data);
 
-       if ((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%')))
-               fprintf(stderr, "Warning: please replace old separator character '%s.1' with ','.\n"
-                               "Next release won't support it.\n",
-                       ptr);
+       if (((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%'))) && ++warn_once == 1)
+               fprintf(stderr, "Warning: please use ',' separator token between ip,port,ip.\n"
+                               "Next release won't support old separator tokens.\n");
 
        ptr = strsep(&tmp, ":%,");
        parse_ip(ptr, &mydata->ip);
index 51297ffd840232b9ce345838f655f60e301b3fdb..470718971fa12004a0ea9523679ee7e9cc72dce1 100644 (file)
@@ -199,10 +199,9 @@ adt_parser(unsigned cmd, const char *optarg, void *data)
 
        DP("ipportnethash: %p %p", optarg, data);
 
-       if ((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%')))
-               fprintf(stderr, "Warning: please replace old separator character '%s.1' with ','.\n"
-                               "Next release won't support it.\n",
-                       ptr);
+       if (((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%'))) && ++warn_once == 1)
+               fprintf(stderr, "Warning: please use ',' separator token between ip,port,net.\n"
+                               "Next release won't support old separator tokens.\n");
 
        ptr = strsep(&tmp, ":%,");
        parse_ip(ptr, &mydata->ip);
index 0c23c993165875202ff38121901f10cd513390e8..f77da19a54531fd07e13a284942887819b9cf736 100644 (file)
@@ -83,10 +83,9 @@ adt_parser(unsigned cmd, const char *optarg, void *data)
 
        DP("iptree: %p %p", optarg, data);
 
-       if ((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%')))
-               fprintf(stderr, "Warning: please replace old separator character '%s.1' with ','.\n"
-                               "Next release won't support it.\n",
-                       ptr);
+       if (((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%'))) && ++warn_once == 1)
+               fprintf(stderr, "Warning: please use ',' separator token between ip,timeout.\n"
+                               "Next release won't support old separator tokens.\n");
 
        ptr = strsep(&tmp, ":%,");
        parse_ip(ptr, &mydata->ip);
index 141210f9132956d331013573663d6720e8345a04..72af5b8b01d9955762a67ca698d3fcf2d9f52932 100644 (file)
@@ -76,10 +76,9 @@ adt_parser(unsigned int cmd, const char *optarg, void *data)
                parse_ipandmask(tmp, &mydata->ip, &mask);
                mydata->end = mydata->ip | ~mask;
        } else {
-               if ((ptr = strchr(tmp, ':')) != NULL)
-                       fprintf(stderr, "Warning: please replace old separator character '%s.1' with ','.\n"
-                               "Next release won't support it.\n",
-                               ptr);
+               if ((ptr = strchr(tmp, ':')) != NULL && ++warn_once == 1)
+                       fprintf(stderr, "Warning: please use '-' separator token between IP range.\n"
+                               "Next release won't support old separator token.\n");
                ptr = strsep(&tmp, "-:");
                parse_ip(ptr, &mydata->ip);
 
index 7345f8bb72bd7e62f89c87c9121e6ff2b1ab1239..3a9530c6d0ee0fd601475379dde469a59dcd840e 100644 (file)
@@ -183,13 +183,15 @@ adt_parser(unsigned cmd, const char *optarg, void *data)
        char *ptr, *tmp = saved;
 
        DP("macipmap: %p %p", optarg, data);
-       
-       if ((ptr = strchr(tmp, ':')) || (ptr = strchr(tmp, '%')))
-               fprintf(stderr, "Warning: please replace old separator character '%s.1' with ','.\n"
-                               "Next release won't support it.\n",
-                       ptr);
 
-       ptr = strsep(&tmp, ":%,");
+       ptr = strsep(&tmp, ",");
+       if (!tmp) {
+               tmp = saved;
+               ptr = strsep(&tmp, ":%");       
+               if (tmp && ++warn_once == 1)
+                       fprintf(stderr, "Warning: please use ',' separator token between ip,mac.\n"
+                                       "Next release won't support old separator tokens.\n");
+       }
        parse_ip(ptr, &mydata->ip);
 
        if (tmp)
@@ -250,7 +252,7 @@ printips_sorted(struct set *set, void *data, size_t len, unsigned options)
        while (addr <= mysetdata->last_ip) {
                if (test_bit(IPSET_MACIP_ISSET,
                             (void *)&table[addr - mysetdata->first_ip].flags)) {
-                       printf("%s:", ip_tostring(addr, options));
+                       printf("%s,", ip_tostring(addr, options));
                        print_mac(table[addr - mysetdata->first_ip].
                                  ethernet);
                        printf("\n");