Print this page
Add "log": to fwadm JSON for cfwlog tag.

Split Close
Expand all
Collapse all
          --- old/src/fw/lib/fw.js
          +++ new/src/fw/lib/fw.js
↓ open down ↓ 1078 lines elided ↑ open up ↑
1079 1079  function ipfRuleObj(opts) {
1080 1080      var dir = opts.direction;
1081 1081      var rule = opts.rule;
1082 1082  
1083 1083      var targets = Array.isArray(opts.targets) ?
1084 1084          opts.targets : [ opts.targets ];
1085 1085  
1086 1086      // ipfilter uses /etc/protocols which calls ICMPv6 'ipv6-icmp'
1087 1087      var ipfProto = (rule.protocol === 'icmp6') ? 'ipv6-icmp' : rule.protocol;
1088 1088  
     1089 +    var readtags = [];
     1090 +    if (features.feature[FEATURE_INOUT_UUID]) {
     1091 +        if (rule.uuid) {
     1092 +            readtags.push(util.format('uuid=%s', rule.uuid));
     1093 +        }
     1094 +        if (rule.log) {
     1095 +            readtags.push('cfwlog');
     1096 +        }
     1097 +    }
     1098 +
1089 1099      var sortObj = {
1090 1100          action: rule.action,
1091 1101          direction: dir,
1092 1102          priority: rule.priority,
1093 1103          protocol: rule.protocol,
1094 1104          header: util.format('\n# rule=%s, version=%s, %s=%s',
1095 1105              rule.uuid, rule.version, opts.type, opts.value),
1096 1106          v4text: [],
1097 1107          v6text: [],
1098 1108          targets: targets,
1099 1109          protoTargets: rule.protoTargets,
1100 1110          type: opts.type,
1101 1111          uuid: rule.uuid,
1102 1112          value: opts.value,
1103 1113          version: rule.version,
1104      -        uuidTag: (features.feature[FEATURE_INOUT_UUID] && rule.uuid) ?
1105      -            sprintf(' set-tag(uuid=%s)', rule.uuid) : ''
     1114 +        allTags: readtags.length !== 0 ?
     1115 +            util.format(' set-tag(%s)', readtags.join(', ')) : ''
1106 1116      };
1107 1117  
1108 1118      if (opts.type === 'wildcard' && opts.value === 'any') {
1109 1119          rule.protoTargets.forEach(function (t) {
1110 1120              var wild = util.format('%s %s quick proto %s from any to any %s',
1111 1121                  rule.action === 'allow' ? 'pass' : 'block',
1112 1122                  dir === 'from' ? 'out' : 'in',
1113 1123                  ipfProto,
1114 1124                  protoTarget(rule, t));
1115 1125              if (rule.protocol !== 'icmp6')
↓ open down ↓ 140 lines elided ↑ open up ↑
1256 1266              '# DO NOT EDIT THIS FILE. THIS FILE IS AUTO-GENERATED BY fwadm(1M)',
1257 1267              '# AND MAY BE OVERWRITTEN AT ANY TIME.',
1258 1268              '#',
1259 1269              '# File generated at ' + date.toString(),
1260 1270              '#',
1261 1271              ''];
1262 1272          var ipf6Conf = ipf4Conf.slice();
1263 1273          var iks = hasKey(keepInboundState, vm) ? keepInboundState[vm] : {};
1264 1274  
1265 1275          conf[vm].sort(compareRules).forEach(function (sortObj) {
1266      -            assert.string(sortObj.uuidTag, 'sortObj.uuidTag');
     1276 +            assert.string(sortObj.allTags, 'sortObj.allTags');
1267 1277              var ktxt = KEEP_FRAGS;
1268      -            if (sortObj.uuidTag !== ''
     1278 +            if (sortObj.allTags !== ''
1269 1279                  || (sortObj.direction === 'from' && sortObj.action === 'allow')
1270 1280                  || (sortObj.direction === 'to' && iks[sortObj.protocol])) {
1271      -                ktxt += KEEP_STATE + sortObj.uuidTag;
     1281 +                ktxt += KEEP_STATE + sortObj.allTags;
1272 1282              }
1273 1283  
1274 1284              if (!hasKey(rulesIncluded, sortObj.uuid)) {
1275 1285                  rulesIncluded[sortObj.uuid] = [];
1276 1286              }
1277 1287              rulesIncluded[sortObj.uuid].push(sortObj.direction);
1278 1288  
1279 1289              ipf4Conf.push(sortObj.header);
1280 1290              ipf6Conf.push(sortObj.header);
1281 1291  
↓ open down ↓ 1761 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX