class PimNode

The PIM node class. More...

Contains pure virtuals
Definition#include <pim_node.hh>
InheritsProtoNode (libproto) [public ]
Inherited byXrlPimNode
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Methods


Detailed Description

There should be one node per PIM instance. There should be one instance per address family.

 PimNode (int family, x_module_id module_id, EventLoop& event_loop)

PimNode

Constructor for a given address family, module ID, and event loop.

Parameters:
familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
module_idthe module ID (x_module_id). Should be X_MODULE_PIMSM Note: if/after PIM-DM is implemented, X_MODULE_PIMDM would be allowed as well.
event_loopthe event loop to use.

 ~PimNode ()

~PimNode

[virtual]

Destructor

int  set_proto_version (int proto_version)

set_proto_version

Set the current protocol version.

The protocol version must be in the interval [PIM_VERSION_MIN, PIM_VERSION_MAX].

Parameters:
proto_versionthe protocol version to set.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  start ()

start

Start the node operation.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  stop ()

stop

Stop the node operation.

Gracefully stop the PIM protocol. The graceful stop will attempt to send Join/Prune, Assert, etc. messages for all multicast routing entries to gracefully clean-up state with neighbors. After the multicast routing entries cleanup is completed, PimNode::final_stop() is called to complete the job. If this method is called one-after-another, the second one will force calling immediately PimNode::final_stop() to quickly finish the job. This function, unlike start(), will stop the protocol operation on all interfaces.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  final_stop ()

final_stop

Completely stop the node operation.

This method should be called after PimNode::stop() to complete the job.

Returns: XORP_OK on success, otherwise XORP_ERROR.

bool  has_pending_down_units ()

has_pending_down_units

Test if there is an unit that is in PENDING_DOWN state.

Returns: true if there is an unit that is in PENDING_DOWN state, otherwise false.

int  add_vif (const Vif& vif)

add_vif

Install a new PIM vif.

Parameters:
vifvif information about new PimVif to install.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  add_vif (const char *vif_name, uint16_t vif_index)

add_vif

Install a new PIM vif.

Parameters:
vif_namethe name of the new vif.
vif_indexthe vif index of the new vif.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  delete_vif (const char *vif_name)

delete_vif

Delete an existing PIM vif.

Parameters:
vif_namethe name of the vif to delete.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  set_vif_flags (const char *vif_name, bool is_pim_register, bool is_p2p, bool is_loopback, bool is_multicast, bool is_broadcast, bool is_up)

set_vif_flags

Set flags to a vif.

Parameters:
vif_namethe name of the vif.
is_pim_registertrue if this is a PIM Register vif.
is_p2ptrue if this is a point-to-point vif.
is_loopbacktrue if this is a loopback interface.
is_multicastrue if the vif is multicast-capable.
is_broadcasttrue if the vif is broadcast-capable.
is_uptrue if the vif is UP and running.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_vif_addr (const char *vif_name, const IPvX& addr, const IPvXNet& subnet_addr, const IPvX& broadcast_addr, const IPvX& peer_addr)

add_vif_addr

Add an address to a vif.

Parameters:
vif_namethe name of the vif.
addrthe unicast address to add.
subnet_addrthe subnet address to add.
broadcast_addrthe broadcast address (when applicable).
peer_addrthe peer address (when applicable).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_vif_addr (const char *vif_name, const IPvX& addr)

delete_vif_addr

Delete an address from a vif.

Parameters:
vif_namethe name of the vif.
addrthe unicast address to delete.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  start_all_vifs ()

start_all_vifs

Start PIM on all enabled interfaces.

Returns: the number of virtual interfaces PIM was started on, or XORP_ERROR if error occured.

int  stop_all_vifs ()

stop_all_vifs

Stop PIM on all interfaces it was running on.

Returns: he number of virtual interfaces PIM was stopped on, or XORP_ERROR if error occured.

int  enable_all_vifs ()

enable_all_vifs

Enable PIM on all interfaces.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  disable_all_vifs ()

disable_all_vifs

Disable PIM on all interfaces.

Returns: XORP_OK on success, otherwise XORP_ERROR.

void  delete_all_vifs ()

delete_all_vifs

Delete all PIM vifs.

int  proto_recv (const string& src_module_instance_name, x_module_id src_module_id, uint16_t vif_index, const IPvX& src, const IPvX& dst, int ip_ttl, int ip_tos, bool router_alert_bool, const uint8_t *rcvbuf, size_t rcvlen)

proto_recv

Receive a protocol message.

Parameters:
src_module_instance_namethe module instance name of the module-origin of the message.
src_module_idthe module ID (x_module_id) of the module-origin of the message.
vif_indexthe vif index of the interface used to receive this message.
srcthe source address of the message.
dstthe destination address of the message.
ip_ttlthe IP TTL of the message. If it has a negative value, it should be ignored.
ip_tosthe IP TOS of the message. If it has a negative value, it should be ignored.
router_alert_boolif true, the IP Router Alert option in the IP packet was set (when applicable).
rcvbufthe data buffer with the received message.
rcvlenthe data length in rcvbuf.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  pim_send (uint16_t vif_index, const IPvX& src, const IPvX& dst, int ip_ttl, int ip_tos, bool router_alert_bool, buffer_t *buffer)

pim_send

Send a protocol message.

Note: this method uses the pure virtual ProtoNode::proto_send() method that is implemented somewhere else (in a class that inherits this one).

Parameters:
vif_indexthe vif index of the vif to send the message.
srcthe source address of the message.
dstthe destination address of the message.
ip_ttlthe TTL of the IP packet to send. If it has a negative value, the TTL will be set by the lower layers.
ip_tosthe TOS of the IP packet to send. If it has a negative value, the TOS will be set by the lower layers.
router_alert_boolif true, set the IP Router Alert option in the IP packet to send (when applicable).
bufferthe data buffer with the message to send.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  signal_message_recv (const string& src_module_instance_name, x_module_id src_module_id, int message_type, uint16_t vif_index, const IPvX& src, const IPvX& dst, const uint8_t *rcvbuf, size_t rcvlen)

signal_message_recv

Receive a signal message from the kernel.


#define MFEA_UNIX_KERNEL_MESSAGE_NOCACHE        1
#define MFEA_UNIX_KERNEL_MESSAGE_WRONGVIF       2
#define MFEA_UNIX_KERNEL_MESSAGE_WHOLEPKT       3

Parameters:
src_module_instance_namethe module instance name of the module-origin of the message.
src_module_idthe module ID (x_module_id) of the module-origin of the message.
message_typethe message type. Currently, the type of messages received from the kernel are:
vif_indexthe vif index of the related interface (message-specific relation).
srcthe source address in the message.
dstthe destination address in the message.
rcvbufthe data buffer with the additional information in the message.
rcvlenthe data length in rcvbuf.

Returns: XORP_OK on success, otherwise XORP_ERROR.

Reimplemented from ProtoNode.

int  signal_message_send (const string&, x_module_id , int , uint16_t , const IPvX& , const IPvX& , const uint8_t * , size_t )

signal_message_send

Send signal message: not used by PIM.

Reimplemented from ProtoNode.

int  start_protocol_kernel ()

start_protocol_kernel

[pure virtual]

Start the protocol with the kernel.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  stop_protocol_kernel ()

stop_protocol_kernel

[pure virtual]

Stop the protocol with the kernel.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  start_protocol_kernel_vif (uint16_t vif_index)

start_protocol_kernel_vif

[pure virtual]

Start a protocol vif with the kernel.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
vif_indexthe vif index of the interface to start.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  stop_protocol_kernel_vif (uint16_t vif_index)

stop_protocol_kernel_vif

[pure virtual]

Stop a protocol vif with the kernel.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
vif_indexthe vif index of the interface to stop.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  join_multicast_group (uint16_t vif_index, const IPvX& multicast_group)

join_multicast_group

[pure virtual]

Join a multicast group on an interface.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

TODO: add a source address as well!!

Parameters:
vif_indexthe vif index of the interface to join.
multicast_groupthe multicast group address.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  leave_multicast_group (uint16_t vif_index, const IPvX& multicast_group)

leave_multicast_group

[pure virtual]

Leave a multicast group on an interface.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

TODO: add a source address as well!!

Parameters:
vif_indexthe vif index of the interface to leave.
multicast_groupthe multicast group address.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_mfc_to_kernel (const PimMfc& pim_mfc)

add_mfc_to_kernel

[pure virtual]

Add a Multicast Forwarding Cache to the kernel.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
pim_mfcthe PimMfc entry to add.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_mfc_from_kernel (const PimMfc& pim_mfc)

delete_mfc_from_kernel

[pure virtual]

Delete a Multicast Forwarding Cache to the kernel.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
pim_mfcthe PimMfc entry to delete.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_dataflow_monitor (const IPvX& source_addr, const IPvX& group_addr, uint32_t threshold_interval_sec, uint32_t threshold_interval_usec, uint32_t threshold_packets, uint32_t threshold_bytes, bool is_threshold_in_packets, bool is_threshold_in_bytes, bool is_geq_upcall, bool is_leq_upcall)

add_dataflow_monitor

[pure virtual]

Add a dataflow monitor to the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Note: either is_threshold_in_packets or is_threshold_in_bytes (or both) must be true. Note: either is_geq_upcall or is_leq_upcall (but not both) must be true.

Parameters:
sourcethe source address.
groupthe group address.
threshold_interval_secthe dataflow threshold interval (seconds).
threshold_interval_usecthe dataflow threshold interval (microseconds).
threshold_packetsthe threshold (in number of packets) to compare against.
threshold_bytesthe threshold (in number of bytes) to compare against.
is_threshold_in_packetsif true, threshold_packets is valid.
is_threshold_in_bytesif true, threshold_bytes is valid.
is_geq_upcallif true, the operation for comparison is ">=".
is_leq_upcallif true, the operation for comparison is "<=".

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_dataflow_monitor (const IPvX& source_addr, const IPvX& group_addr, uint32_t threshold_interval_sec, uint32_t threshold_interval_usec, uint32_t threshold_packets, uint32_t threshold_bytes, bool is_threshold_in_packets, bool is_threshold_in_bytes, bool is_geq_upcall, bool is_leq_upcall)

delete_dataflow_monitor

[pure virtual]

Delete a dataflow monitor from the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Note: either is_threshold_in_packets or is_threshold_in_bytes (or both) must be true. Note: either is_geq_upcall or is_leq_upcall (but not both) must be true.

Parameters:
sourcethe source address.
groupthe group address.
threshold_interval_secthe dataflow threshold interval (seconds).
threshold_interval_usecthe dataflow threshold interval (microseconds).
threshold_packetsthe threshold (in number of packets) to compare against.
threshold_bytesthe threshold (in number of bytes) to compare against.
is_threshold_in_packetsif true, threshold_packets is valid.
is_threshold_in_bytesif true, threshold_bytes is valid.
is_geq_upcallif true, the operation for comparison is ">=".
is_leq_upcallif true, the operation for comparison is "<=".

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_all_dataflow_monitor (const IPvX& source_addr, const IPvX& group_addr)

delete_all_dataflow_monitor

[pure virtual]

Delete all dataflow monitors for a given source and group address from the MFEA.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
source_addrthe source address.
group_addrthe group address.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_protocol_mld6igmp (uint16_t vif_index)

add_protocol_mld6igmp

[pure virtual]

Register this protocol with the MLD/IGMP module.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

By registering this protocol with the MLD/IGMP module, it will be notified about multicast group membership events.

Parameters:
vif_indexthe vif index of the interface to register with the MLD/IGMP module.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_protocol_mld6igmp (uint16_t vif_index)

delete_protocol_mld6igmp

[pure virtual]

Deregister this protocol with the MLD/IGMP module.

This is a pure virtual function, and it must be implemented by the communication-wrapper class that inherits this base class.

Parameters:
vif_indexthe vif index of the interface to deregister with the MLD/IGMP module.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_membership (uint16_t vif_index, const IPvX& source, const IPvX& group)

add_membership

Receive "add membership" from the MLD/IGMP module.

Parameters:
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO().
groupthe group address.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_membership (uint16_t vif_index, const IPvX& source, const IPvX& group)

delete_membership

Receive "delete membership" from the MLD/IGMP module.

Parameters:
vif_indexthe vif index of the interface with membership change.
sourcethe source address of the (S,G) or (*,G) entry that has changed membership. In case of Any-Source Multicast, it is IPvX::ZERO().
groupthe group address.

Returns: XORP_OK on success, otherwise XORP_ERROR.

void  add_mrib_entry (const Mrib& mrib)

add_mrib_entry

Add an entry to the MRIB table (MribTable).

Parameters:
mribthe Mrib entry to add.

void  delete_mrib_entry (const Mrib& mrib)

delete_mrib_entry

Delete an entry from the MRIB table (MribTable).

Parameters:
mribthe Mrib entry to delete.

PimVifvif_find_pim_register ()

vif_find_pim_register

[const]

Get the PIM-Register virtual interface.

Returns: the PIM-Register virtual interface if exists, otherwise NULL.

uint16_t  pim_register_vif_index ()

pim_register_vif_index

[const]

Get the vif index of the PIM-Register virtual interface.

Returns: the vif index of the PIM-Register virtual interface if exists, otherwise Vif::VIF_INDEX_INVALID.

PimMrt&  pim_mrt ()

pim_mrt

Get the PIM Multicast Routing Table.

Returns: a reference to the PIM Multicast Routing Table (PimMrt).

PimMribTable&  pim_mrib_table ()

pim_mrib_table

Get the table with the Multicast Routing Information Base used by PIM.

Returns: a reference to the table with the Multicast Routing Information Base used by PIM (PimMribTable).

PimBsr&  pim_bsr ()

pim_bsr

Get the PIM Bootstrap entity.

Returns: a reference to the PIM Bootstrap entity (PimBsr).

RpTable&  rp_table ()

rp_table

Get the PIM RP table.

Returns: a reference to the PIM RP table (RpTable).

PimScopeZoneTable&  pim_scope_zone_table ()

pim_scope_zone_table

Get the PIM Scope-Zone table.

Returns: a reference to the PIM Scope-Zone table.

Mifset&  pim_vifs_dr ()

pim_vifs_dr

Get the set of vifs for which this PIM note is a Designated Router.

Returns: the Mifset indicating the vifs for which this PIM node is a Designated Router.

void  set_pim_vifs_dr (uint16_t vif_index, bool v)

set_pim_vifs_dr

Set/reset a virtual interface as a Designated Router.

Parameters:
vif_indexthe vif index of the virtual interface to set/reset as a Designated Router.
vif true, set the virtual interface as a Designated Router, otherwise reset it.

PimNbrpim_nbr_rpf_find (const IPvX& dst_addr)

pim_nbr_rpf_find

Find the RPF PIM neighbor for a given destination address.

Parameters:
dst_addrthe destination address to lookup.

Returns: the RPF PIM neighbor (PimNbr) toward dst_addr if found, otherwise NULL.

PimNbrpim_nbr_rpf_find (const IPvX& dst_addr, const Mrib *mrib)

pim_nbr_rpf_find

Find the RPF PIM neighbor for a given destination address, and already known Mrib entry.

Parameters:
dst_addrthe destination address to lookup.
mribthe already known Mrib entry.

Returns: the RPF PIM neighbor (PimNbr) toward dst_addr if found, otherwise NULL.

PimNbrpim_nbr_find (const IPvX& nbr_addr)

pim_nbr_find

Find a PIM neighbor.

Parameters:
nbr_addrthe address of the PIM neighbor.

Returns: the PIM neighbor (PimNbr) if found, otherwise NULL.

void  enable_bsr ()

enable_bsr

Enable the PIM Bootstrap mechanism.

void  disable_bsr ()

disable_bsr

Disable the PIM Bootstrap mechanism.

int  start_bsr ()

start_bsr

Start the Bootstrap mechanism.

Returns: XORP_OK if a new address, otherwise XORP_ERROR.

int  stop_bsr ()

stop_bsr

Stop the Bootstrap mechanism.

Returns: XORP_OK if a new address, otherwise XORP_ERROR.

int  set_vif_proto_version (const string& vif_name, int proto_version)

set_vif_proto_version

int  reset_vif_proto_version (const string& vif_name)

reset_vif_proto_version

int  set_vif_hello_triggered_delay (const string& vif_name, uint16_t hello_triggered_delay)

set_vif_hello_triggered_delay

int  reset_vif_hello_triggered_delay (const string vif_name)

reset_vif_hello_triggered_delay

int  set_vif_hello_period (const string& vif_name, uint16_t hello_period)

set_vif_hello_period

int  reset_vif_hello_period (const string& vif_name)

reset_vif_hello_period

int  set_vif_hello_holdtime (const string& vif_name, uint16_t hello_holdtime)

set_vif_hello_holdtime

int  reset_vif_hello_holdtime (const string& vif_name)

reset_vif_hello_holdtime

int  set_vif_dr_priority (const string& vif_name, uint32_t dr_priority)

set_vif_dr_priority

int  reset_vif_dr_priority (const string& vif_name)

reset_vif_dr_priority

int  set_vif_lan_delay (const string& vif_name, uint16_t lan_delay)

set_vif_lan_delay

int  reset_vif_lan_delay (const string& vif_name)

reset_vif_lan_delay

int  set_vif_override_interval (const string& vif_name, uint16_t override_interval)

set_vif_override_interval

int  reset_vif_override_interval (const string& vif_name)

reset_vif_override_interval

int  set_vif_accept_nohello_neighbors (const string& vif_name, bool accept_nohello_neighbors)

set_vif_accept_nohello_neighbors

int  reset_vif_accept_nohello_neighbors (const string& vif_name)

reset_vif_accept_nohello_neighbors

int  set_vif_join_prune_period (const string& vif_name, uint16_t join_prune_period)

set_vif_join_prune_period

int  reset_vif_join_prune_period (const string& vif_name)

reset_vif_join_prune_period

int  add_config_cand_bsr_by_vif_name (bool is_admin_scope_zone, const IPvXNet& admin_scope_zone_id, const string& vif_name, uint8_t bsr_priority, uint8_t hash_masklen)

add_config_cand_bsr_by_vif_name

int  add_config_cand_bsr_by_addr (bool is_admin_scope_zone, const IPvXNet& admin_scope_zone_id, const IPvX& my_cand_bsr_addr, uint8_t bsr_priority, uint8_t hash_masklen)

add_config_cand_bsr_by_addr

int  delete_config_cand_bsr (bool is_admin_scope_zone, const IPvXNet& admin_scope_zone_id)

delete_config_cand_bsr

int  add_config_cand_rp_by_vif_name (bool is_admin_scope_zone, const IPvXNet& group_prefix, const string& vif_name, uint8_t rp_priority, uint16_t rp_holdtime)

add_config_cand_rp_by_vif_name

int  add_config_cand_rp_by_addr (bool is_admin_scope_zone, const IPvXNet& group_prefix, const IPvX& my_cand_rp_addr, uint8_t rp_priority, uint16_t rp_holdtime)

add_config_cand_rp_by_addr

int  delete_config_cand_rp_by_vif_name (bool is_admin_scope_zone, const IPvXNet& group_prefix, const string& vif_name)

delete_config_cand_rp_by_vif_name

int  delete_config_cand_rp_by_addr (bool is_admin_scope_zone, const IPvXNet& group_prefix, const IPvX& my_cand_rp_addr)

delete_config_cand_rp_by_addr

int  add_config_rp (const IPvXNet& group_prefix, const IPvX& rp_addr, uint8_t rp_priority, uint8_t hash_masklen)

add_config_rp

int  delete_config_rp (const IPvXNet& group_prefix, const IPvX& rp_addr)

delete_config_rp

int  config_rp_done ()

config_rp_done

bool  is_log_trace ()

is_log_trace

[const]

void  set_log_trace (bool is_enabled)

set_log_trace

int  add_test_jp_entry (const IPvX& source_addr, const IPvX& group_addr, uint32_t group_masklen, mrt_entry_type_t mrt_entry_type, action_jp_t action_jp, uint16_t holdtime, bool new_group_bool)

add_test_jp_entry

int  send_test_jp_entry (const IPvX& nbr_addr)

send_test_jp_entry

void  add_pim_mre_no_pim_nbr (PimMre *pim_mre)

add_pim_mre_no_pim_nbr

void  delete_pim_mre_no_pim_nbr (PimMre *pim_mre)

delete_pim_mre_no_pim_nbr

list<PimNbr *>&  processing_pim_nbr_list ()

processing_pim_nbr_list

void  init_processing_pim_mre_rp (uint16_t vif_index, const IPvX& pim_nbr_addr)

init_processing_pim_mre_rp

void  init_processing_pim_mre_wc (uint16_t vif_index, const IPvX& pim_nbr_addr)

init_processing_pim_mre_wc

void  init_processing_pim_mre_sg (uint16_t vif_index, const IPvX& pim_nbr_addr)

init_processing_pim_mre_sg

void  init_processing_pim_mre_sg_rpt (uint16_t vif_index, const IPvX& pim_nbr_addr)

init_processing_pim_mre_sg_rpt

PimNbrfind_processing_pim_mre_rp (uint16_t vif_index, const IPvX& pim_nbr_addr)

find_processing_pim_mre_rp

PimNbrfind_processing_pim_mre_wc (uint16_t vif_index, const IPvX& pim_nbr_addr)

find_processing_pim_mre_wc

PimNbrfind_processing_pim_mre_sg (uint16_t vif_index, const IPvX& pim_nbr_addr)

find_processing_pim_mre_sg

PimNbrfind_processing_pim_mre_sg_rpt (uint16_t vif_index, const IPvX& pim_nbr_addr)

find_processing_pim_mre_sg_rpt


Generated by: pavlin on possum.icir.org on Wed Dec 11 16:50:53 2002, using kdoc 2.0a54+XORP.