diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-08-24 13:37:57 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-08-24 13:37:57 -0700 |
| commit | 8e3463d47a8e7565784f349f359ebe7f4a4d0e57 (patch) | |
| tree | 678b59a6d85bd456649ca4200761386eb64874e5 /node/Capability.hpp | |
| parent | 8d594f8b536a1e4acfe62223eb4bd939a8e04fe9 (diff) | |
| download | infinitytier-8e3463d47a8e7565784f349f359ebe7f4a4d0e57.tar.gz infinitytier-8e3463d47a8e7565784f349f359ebe7f4a4d0e57.zip | |
Add length limit to TEE and REDIRECT, and completely factor out old C json-parser to eliminate a dependency.
Diffstat (limited to 'node/Capability.hpp')
| -rw-r--r-- | node/Capability.hpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/node/Capability.hpp b/node/Capability.hpp index b0620891..0b352725 100644 --- a/node/Capability.hpp +++ b/node/Capability.hpp @@ -181,6 +181,11 @@ public: break; case ZT_NETWORK_RULE_ACTION_TEE: case ZT_NETWORK_RULE_ACTION_REDIRECT: + b.append((uint8_t)14); + b.append((uint64_t)rules[i].v.fwd.address); + b.append((uint32_t)rules[i].v.fwd.flags); + b.append((uint16_t)rules[i].v.fwd.length); + break; case ZT_NETWORK_RULE_MATCH_SOURCE_ZEROTIER_ADDRESS: case ZT_NETWORK_RULE_MATCH_DEST_ZEROTIER_ADDRESS: b.append((uint8_t)5); @@ -266,6 +271,10 @@ public: break; case ZT_NETWORK_RULE_ACTION_TEE: case ZT_NETWORK_RULE_ACTION_REDIRECT: + rules[ruleCount].v.fwd.address = b.template at<uint64_t>(p); + rules[ruleCount].v.fwd.flags = b.template at<uint32_t>(p + 8); + rules[ruleCount].v.fwd.length = b.template at<uint16_t>(p + 12); + break; case ZT_NETWORK_RULE_MATCH_SOURCE_ZEROTIER_ADDRESS: case ZT_NETWORK_RULE_MATCH_DEST_ZEROTIER_ADDRESS: rules[ruleCount].v.zt = Address(b.field(p,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH).toInt(); |
