diff --git a/rule-compiler/cli.js b/rule-compiler/cli.js index a0ff5197a..75235ac86 100644 --- a/rule-compiler/cli.js +++ b/rule-compiler/cli.js @@ -26,9 +26,10 @@ if (err) { let tagsArray = []; for(let n in tags) { let t = tags[n]; + let dfl = t['default']; tagsArray.push({ 'id': t.id, - 'default': t['default']||null + 'default': (((dfl)||(dfl === 0)) ? dfl : null) }); } diff --git a/rule-compiler/package.json b/rule-compiler/package.json index 1def45a5e..1db006b3a 100644 --- a/rule-compiler/package.json +++ b/rule-compiler/package.json @@ -1,6 +1,6 @@ { "name": "zerotier-rule-compiler", - "version": "1.2.2-1", + "version": "1.2.2-2", "description": "ZeroTier Rule Script Compiler", "main": "cli.js", "scripts": { diff --git a/rule-compiler/rule-compiler.js b/rule-compiler/rule-compiler.js index 899362136..bd84824e2 100644 --- a/rule-compiler/rule-compiler.js +++ b/rule-compiler/rule-compiler.js @@ -762,7 +762,7 @@ function compile(src,rules,caps,tags) return [ tag[k][1],tag[k][2],'Duplicate tag default directive.' ]; if ((k + 1) >= tag.length) return [ tag[k][1],tag[k][2],'Missing value for default.' ]; - dfl = tag[++k][0]||0; + dfl = tag[++k][0]; } else if (tkeyword === 'flag') { if ((k + 2) >= tag.length) return [ tag[k][1],tag[k][2],'Missing tag flag name or bit index.' ]; @@ -806,7 +806,7 @@ function compile(src,rules,caps,tags) if (id < 0) return [ tag[0][1],tag[0][2],'Tag definition is missing a numeric ID.' ]; - if (dfl !== null) { + if (typeof dfl === 'string') { let dfl2 = enums[dfl]; if (typeof dfl2 === 'number') { dfl = dfl2; @@ -815,9 +815,11 @@ function compile(src,rules,caps,tags) if (typeof dfl2 === 'number') { dfl = dfl2; } else { - dfl = Math.abs(_parseNum(dfl)||0) & 0xffffffff; + dfl = Math.abs(parseInt(dfl)||0) & 0xffffffff; } } + } else if (typeof dfl === 'number') { + dfl = Math.abs(dfl) & 0xffffffff; } tags[tagName] = {