Hi,

On Wed, Sep 9, 2009 at 11:28 AM, <[email protected]> wrote:
>
> -> Each interface which is known as interface in pimd has pim_interface
> and they have ifindex(interface's) and vifindex(pim_interface's)
> respectively.  Every interface as well as pim_inteface has primary
> address.
>
>  if i am correct then can anyone tell me why are we duplicating same
> information in both interface and pim_interface? Is it due to dependance
> of quagga on other moduels or is it standarda way of defining inteface
> for each daemon?

Zebra lib creates an "struct interface" instance for *every* interface seen
by the operation system (even for those not running PIM). Those
interfaces are assigned an ifindex by the operating system. The
struct "interface" keeps a whole list of connected addresses (not just
one primary address), see the "connected" member.

pimd creates an "struct pim_interface" only for interfaces running
multicast (either PIM or IGMP). pimd needs to detect change in
the primary address of the interface, then it saves the current
primary address in "primary_address" under "struct pim_interface".

Also, in order to program the MFC, pimd needs to assign an unique
vif_index to an interface. Currently, such an unique vif_index is easily
allocated by copying the same value as interface->ifindex, but ifindex
and vif_index are not exactly the same thing, hence the apparent
duplication.

Everton


Reply via email to