aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/ipv6
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2015-09-01 18:48:22 +0000
committerSteven Barth <steven@midlink.org>2015-09-01 18:48:22 +0000
commitb4fa5686a52d93bdaef613f8263cee6b47ad0390 (patch)
treeafd1d3e3661e2264a9221cfe1233661759954e45 /package/network/ipv6
parent352593e4d6565995aee376e333ee51c94bbd45de (diff)
downloadmaster-187ad058-b4fa5686a52d93bdaef613f8263cee6b47ad0390.tar.gz
master-187ad058-b4fa5686a52d93bdaef613f8263cee6b47ad0390.tar.bz2
master-187ad058-b4fa5686a52d93bdaef613f8263cee6b47ad0390.zip
map: add debug-code for mapcalc
Signed-off-by: Steven Barth <steven@midlink.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46763 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/ipv6')
-rw-r--r--package/network/ipv6/map/Makefile2
-rw-r--r--package/network/ipv6/map/src/mapcalc.c46
2 files changed, 29 insertions, 19 deletions
diff --git a/package/network/ipv6/map/Makefile b/package/network/ipv6/map/Makefile
index 3757ed6088..a45e9bc1fd 100644
--- a/package/network/ipv6/map/Makefile
+++ b/package/network/ipv6/map/Makefile
@@ -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
diff --git a/package/network/ipv6/map/src/mapcalc.c b/package/network/ipv6/map/src/mapcalc.c
index cd72138cc6..b9fab4d923 100644
--- a/package/network/ipv6/map/src/mapcalc.c
+++ b/package/network/ipv6/map/src/mapcalc.c
@@ -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;
+ }
}
}