<div dir="ltr"><div>Hello bird community, I'm trying to implement a peer-based MRAI on Bird, but before everything else, I would like to hear from you what do you think about my implementation idea.<br></div><div><br></div><div>My idea is to act before <i>prefixes</i> go into the <i>bucket_queue</i> data structure and using a timer inside the <i>bgp_channel</i>.</div><div><br></div><div>When a new <i>prefix</i> arrives to <i>bgp_rt_notify</i> function I'll do this checks before the <i>add_tail(buck->prefixes, px->bucket_node)</i></div><div><br></div><div>I check if there is an actual MRAI timer active on the channel <i>c</i> if there is no timer I append the prefix to the prefixes of the <i>buket_queue</i> and I set a new timer equal to MRAI.</div><div>If the timer was set before I have to append this prefix to a different queue, "<i>pending_buket_queue</i>", before the append I'll do the correct checks if it already exists with an hash-table in the channel for the pending buckets.</div><div><br></div><div>When the <i>timer expires</i> pending buckets will be transferred to the <i>bucket_queue</i>, and now I need to send the updated bucket_queue.</div><div>After the transmission, the timer will be updated with the MRAI value.</div><div><br></div><div>If at the timer expiration there are no pending buckets the timer will not be rebooted.<br></div><div><br></div><div>My doubts are for the most on the triggered send at the timer expiration, how can I trigger a "<i>bgp_update_process</i>"? <br></div><div>And what do you think about this way to implement a peer-based MRAI?</div><div><br></div><div>Obviously, the MRAI timer will be set with a parameter in the conf file.<br></div><div><br></div><div>Thanks all, best regards<br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Mattia Milani<br></div></div></div></div>