<div>I am intrigued by the following bit of code in BIRD 1.3.7 proto/ospf/iface.c</div><div><br></div><div><div>void</div><div>ospf_ifa_notify(struct proto *p, unsigned flags, struct ifa *a)</div><div>{</div></div><div>[...]</div>
<div>if (flags & IF_CHANGE_UP)</div><div> {</div><div> int done0 = 0;</div><div> struct ospf_area *oa;</div><div><br></div><div> WALK_LIST(oa, po->area_list)</div><div> {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>int iid = 0;</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>struct ospf_iface_patt *ip;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>while (ip = ospf_iface_patt_find(oa->ac, a->iface, iid))</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> ospf_iface_new(oa, a, ip);</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> if (ip->instance_id == 0)</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> done0++;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> iid = ip->instance_id + 1;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
<div> }</div><div><br></div><div>I might be wrong here, but if I understand correctly, the code expects the set of instance IDs configured on each interface to be of the form [| 0, n |].</div><div>In addition, I haven't seen any option to manually set Instance IDs.</div>
<div><br></div><div>Is there any reason why this should be the case? I would like to manually set the instance ID to something other than 0, without necessarily having other protocol instances running on the same interface.</div>
<div><br></div><div>Thanks</div><div><br></div><div>- Benjamin</div>