UNPKG

@gavinaiken/netflowv9

Version:

NetFlow Version 1,5,7,9 compatible library (with support for NetFlow v9 options template & data) for Node.JS. It also has experimental support for IPFIX (NetFlow v10).

51 lines (43 loc) 1.92 kB
var decNumRule = { 1: "o['$name']=buf.readUInt8($pos);", 2: "o['$name']=buf.readUInt16BE($pos);", 3: "o['$name']=buf.readUInt8($pos)*65536+buf.readUInt16BE($pos+1);", 4: "o['$name']=buf.readUInt32BE($pos);", 5: "o['$name']=buf.readUInt8($pos)*4294967296+buf.readUInt32BE($pos+1);", 6: "o['$name']=buf.readUInt16BE($pos)*4294967296+buf.readUInt32BE($pos+2);", 8: "o['$name']=buf.readUInt32BE($pos)*4294967296+buf.readUInt32BE($pos+4);" }; var decTimestamp = decNumRule; var decTsMs = decTimestamp; var decTsMcs = decTimestamp; var decTsNs = decTimestamp; var decIpv4Rule = { 4: "o['$name']=(t=buf.readUInt32BE($pos),(parseInt(t/16777216)%256)+'.'+(parseInt(t/65536)%256)+'.'+(parseInt(t/256)%256)+'.'+(t%256));" }; var decIpv6Rule = { 16: "o['$name']=buf.toString('hex',$pos,$pos+$len);" }; var decMacRule = { 0: "o['$name']=buf.toString('hex',$pos,$pos+$len);", 65535: "l=buf.readUInt8($pos);if(l===255){l=buf.readUInt16BE($pos+1);offset+=2;};o['$name']=buf.toString('hex',$pos+1,$pos+1+l);offset+=l;" }; var decStringRule = { 0: 'o[\'$name\']=buf.toString(\'utf8\',$pos,$pos+$len).replace(/\\0/g,\'\');', 65535: `l=buf.readUInt8($pos);if(l===255){l=buf.readUInt16BE($pos+1);offset+=2;}o['$name']=buf.toString('utf8',$pos+1,$pos+1+l).replace(/\\0/g,'');offset+=l;` }; var decAsciiStringRule = { 0: 'o[\'$name\']=buf.toString(\'ascii\',$pos,$pos+$len).replace(/\\0/g,\'\');', 65535: `l=buf.readUInt8($pos);if(l===255){l=buf.readUInt16BE($pos+1);offset+=2;}o['$name']=buf.toString('ascii',$pos+1,$pos+1+l).replace(/\\0/g,'');offset+=l;` }; module.exports = { decNumRule: decNumRule, decTimestamp: decTimestamp, decTsMs: decTsMs, decTsMcs: decTsMcs, decTsNs: decTsNs, decIpv4Rule: decIpv4Rule, decIpv6Rule: decIpv6Rule, decMacRule: decMacRule, decStringRule: decStringRule, decAsciiStringRule: decAsciiStringRule, };