<div dir="ltr"><div>Hello all, this is a message for developer and who know how bird use timer, and buffer.</div><div>Sorry for the length of this mail.</div><div><br></div><div>For first, the protocol i want to modify and upgrade is BGP, i see that there isn't the timer MRAI implemented and it will be useful for some studies on information propagation, so i decided to develop a first version of it.</div><div><br></div><div>The actual process to send any kind of pkt is to call the function</div><div><br></div><div>bgp_fire_tx() and it's called by two other function respectively bgp_kick_tx() and bgp_tx()</div><div><br></div><div>and the function bgp_fire_tx() take care to read from the buffer the message that has to be sent and send it.</div><div><br></div><div>bgp_kick_tx() and bgp_tx() call bgp_fire_tx() while it don't return 0, so the clear all the buffer of the message that has to be sent.</div><div><br></div><div>So my idea to introduce MRAI was that:</div><div><br></div><div>Create a timer (for now I created it for connection, after like say RFC 4271 this timer has to be set for every route) and put it on the connection.</div><div><br></div><div>Initialize it with the other timer of the conn</div><div><br></div><div>when the state of the conn goes up i set it to some value and start the timer.</div><div><br></div><div>when the timer finish i call the function MRAI_finish() that call the function bgp_fire_tx() while there is something to send more ore less like the while loop in bgp_kick_tx() and bgp_tx()<br></div><div><br></div><div>when it's called bgp_fire_tx() on the update message part i written a check, if the timer isn't at 0 i can't send the update, because the function can be called from bgp_kick_tx() or bgp_tx(), but if it 0 it is finished so i can send the message</div><div><br></div><div>When all the message had been send i reset the timer and start it again.</div><div><br></div><div><br></div><div>But unfortunately i see something that doesn't make my code work. when something call bgp_kick_tx() or bgp_tx() the call bgp_fire_tx() and they clear all the buffer, including update message that wasn't sended so when the timer finish it didn't found anything on the buffer.</div><div><br></div><div>Now how can i change that? <br></div><div><br></div><div>My idea is to use a secondary buffer, when in bgp_fire_tx() i see that i can't send the update I will insert the pkt in this secondary buffer and consume the pkt on the main buffer.</div><div>when bgp_kick_tx() or bgp_tx() have send all the messages I will transfer all the pkt in the secondary buffer into the main buffer.</div><div><br></div><div>So I ask you it's possible that? there is something in the code already written that could help me? do you see another way to implement the MRAI timer?</div><div><br></div><div>Thanks a lot to everyone,</div><div>Mattia<br></div></div>