map: add debug-code for mapcalc
authorSteven Barth <cyrus@openwrt.org>
Tue, 1 Sep 2015 18:48:22 +0000 (18:48 +0000)
committerSteven Barth <cyrus@openwrt.org>
Tue, 1 Sep 2015 18:48:22 +0000 (18:48 +0000)
Signed-off-by: Steven Barth <steven@midlink.org>
SVN-Revision: 46763

package/network/ipv6/map/Makefile
package/network/ipv6/map/src/mapcalc.c

index 3757ed608820c75ca853d6d59d77a4171c13a2d6..a45e9bc1fd910f7491bb0e011dcfdd015d057a33 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=map
 PKG_VERSION:=4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_LICENSE:=GPL-2.0
 
 include $(INCLUDE_DIR)/package.mk
index cd72138cc6656d0f662483d9632d1bcd09472cad..b9fab4d9238684845bd6ed373af0923afff60168 100644 (file)
@@ -157,6 +157,8 @@ enum {
        OPT_PSID,
        OPT_BR,
        OPT_DMR,
+       OPT_PD,
+       OPT_PDLEN,
        OPT_MAX
 };
 
@@ -173,6 +175,8 @@ static char *const token[] = {
        [OPT_PSID] = "psid",
        [OPT_BR] = "br",
        [OPT_DMR] = "dmr",
+       [OPT_PD] = "pd",
+       [OPT_PDLEN] = "pdlen",
        [OPT_MAX] = NULL
 };
 
@@ -239,10 +243,14 @@ int main(int argc, char *argv[])
                                // dummy
                        } else if (idx == OPT_IPV6PREFIX && inet_pton(AF_INET6, value, &ipv6prefix) == 1) {
                                // dummy
+                       } else if (idx == OPT_PD && inet_pton(AF_INET6, value, &pd) == 1) {
+                               // dummy
                        } else if (idx == OPT_OFFSET && (intval = strtoul(value, NULL, 0)) <= 16 && !errno) {
                                offset = intval;
                        } else if (idx == OPT_PSIDLEN && (intval = strtoul(value, NULL, 0)) <= 16 && !errno) {
                                psidlen = intval;
+                       } else if (idx == OPT_PDLEN && (intval = strtoul(value, NULL, 0)) <= 128 && !errno) {
+                               pdlen = intval;
                        } else if (idx == OPT_PSID && (intval = strtoul(value, NULL, 0)) <= 65535 && !errno) {
                                psid = intval;
                        } else if (idx == OPT_DMR) {
@@ -270,24 +278,26 @@ int main(int argc, char *argv[])
                }
 
                // Find PD
-               struct blob_attr *c;
-               unsigned rem;
-               blobmsg_for_each_attr(c, dump, rem) {
-                       struct blob_attr *tb[IFACE_ATTR_MAX];
-                       blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb, blobmsg_data(c), blobmsg_data_len(c));
-
-                       if (!tb[IFACE_ATTR_INTERFACE] || (strcmp(argv[1], "*") && strcmp(argv[1],
-                                       blobmsg_get_string(tb[IFACE_ATTR_INTERFACE]))))
-                               continue;
-
-                       match_prefix(&pdlen, &pd, tb[IFACE_ATTR_PREFIX], &ipv6prefix, prefix6len);
-
-                       if (lw4o6)
-                               match_prefix(&pdlen, &pd, tb[IFACE_ATTR_ADDRESS], &ipv6prefix, prefix6len);
-
-                       if (pdlen >= 0) {
-                               iface = blobmsg_get_string(tb[IFACE_ATTR_INTERFACE]);
-                               break;
+               if (pdlen < 0) {
+                       struct blob_attr *c;
+                       unsigned rem;
+                       blobmsg_for_each_attr(c, dump, rem) {
+                               struct blob_attr *tb[IFACE_ATTR_MAX];
+                               blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb, blobmsg_data(c), blobmsg_data_len(c));
+
+                               if (!tb[IFACE_ATTR_INTERFACE] || (strcmp(argv[1], "*") && strcmp(argv[1],
+                                               blobmsg_get_string(tb[IFACE_ATTR_INTERFACE]))))
+                                       continue;
+
+                               match_prefix(&pdlen, &pd, tb[IFACE_ATTR_PREFIX], &ipv6prefix, prefix6len);
+
+                               if (lw4o6)
+                                       match_prefix(&pdlen, &pd, tb[IFACE_ATTR_ADDRESS], &ipv6prefix, prefix6len);
+
+                               if (pdlen >= 0) {
+                                       iface = blobmsg_get_string(tb[IFACE_ATTR_INTERFACE]);
+                                       break;
+                               }
                        }
                }