X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=bgpfake%2Fbf.js;h=a8a66e3690cf7b249c3bbdc8c29fa3770d9f535c;hb=07875209fec5483d79f0fe0bd3db4df7720b882b;hp=81c1f392e94a9f6a3bea6ce1b11f044dc1115198;hpb=896dba1f71a364113a0caaa9a74287cf9be1279c;p=random_node_code.git diff --git a/bgpfake/bf.js b/bgpfake/bf.js index 81c1f39..a8a66e3 100644 --- a/bgpfake/bf.js +++ b/bgpfake/bf.js @@ -1,9 +1,12 @@ -var myas=1234; -var myip="10.99.99.1"; -var num_to_create = 400000; +var myas=4321; +var myip="10.10.40.1"; +var number_of_route_adverts = 6; +var routes_per_advert = 4; var net = require('net'); +var updateSent = 0; + var scon; @@ -13,7 +16,7 @@ function createentry(i) { var b = 0; var c = 0; - var x = 101<<16; + var x = 45<<16; //console.log("var x is "+x); i = i+x; @@ -48,29 +51,39 @@ console.log("startup...."); var data = new Array(); console.log("start construction"); -for(var t=0; t0) thisdata[2] += constructUpdateMessage(thisdata, true, routes_per_advert); + else thisdata[2] = constructUpdateMessage(thisdata, false, routes_per_advert); + } + console.log("thisdata is..."); + console.log(thisdata); + //console.log(thisdata.toJSON()); + console.log(thisdata[2].length); + console.log(thisdata[2].toString()); data[t] = thisdata; - } console.log("finish construction"); //console.log("data: " + data.toString()); +//console.log(data); //console.log("Done!: " + data.length); function parseBuffer(b, c) { var len = b.readUInt16BE(16); var type = b.readUInt8(18); - console.log("got input: " + len + ", type: " + type); + //console.log("got input: " + len + ", type: " + type); if(type == 1) { var vers = b.readUInt8(19); @@ -105,9 +118,10 @@ function parseBuffer(b, c) { } else if(type == 4) { console.log("writing keepalive - exact as sent"); c.write(b); + //if(updateSent ==0) beginUpdateSend(c); } else if(type == 2) { console.log("got update..."); - beginUpdateSend(c); + if(updateSent ==0) beginUpdateSend(c); } else { console.log("sending end..."); c.end(); @@ -118,14 +132,14 @@ function parseBuffer(b, c) { // this function gets prefix t from data[] and then // creates an update message for it -function constructUpdateMessage(localdata) { - //console.log("Construction update for "+t); +function constructUpdateMessage(localdata, onlynlri, n_up) { + console.log("Construction update for "+t); var bsize = 0; - //console.log("localdata0: " + localdata[0]); - //console.log("localdata1: " + localdata[1]); - //console.log("localdata0 - : " + typeof localdata[1]); - //console.log("localdata1 - : " + typeof localdata[1]); + console.log("localdata0: " + localdata[0]); + console.log("localdata1: " + localdata[1]); + console.log("localdata0 - : " + typeof localdata[1]); + console.log("localdata1 - : " + typeof localdata[1]); // first the header components bsize += 16; @@ -161,6 +175,9 @@ function constructUpdateMessage(localdata) { // fudge bsize+=1; + // now figure out t_bsize; + var t_bsize = bsize + (4*(n_up-1)); + //console.log("size: " + bsize + ", an: " + aspathn + " al:" + aspathlen); var buf = new Buffer(bsize); var bp = 0; @@ -168,7 +185,7 @@ function constructUpdateMessage(localdata) { // now lets create the buffer buf.fill(0xff, bp, bp+16); bp+=16; - buf.writeUInt16BE(bsize, bp); + buf.writeUInt16BE(t_bsize, bp); bp+=2; buf.writeUInt8(2, bp); bp++; @@ -222,19 +239,29 @@ function constructUpdateMessage(localdata) { }); // last, nlri + if(onlynlri) { + console.log("constructing new buffer for only nlri"); + buf = new Buffer(4); + bp = 0; + } buf.writeUInt8(24, bp); bp++; localdata[0].split(".").forEach(function(ed){ - //console.log("Writing in nlri: "+ed); + console.log("Writing in nlri: "+ed); buf.writeUInt8(parseInt(ed), bp); bp++; }); + console.log("buf is:"); + console.log(buf); + console.log(buf.length); + return buf; } // start sending updates messages function beginUpdateSend(c) { + updateSent = 1; var n = 0; data.forEach(function(led) { c.write(led[2]);