<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>