mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 06:32:33 +00:00
pimd: When receiving the register packet, create the mroute
When a RP receives the register packet, move the (*,G) to a (S,G) route and send the pim message upstream to the source. With this change the multicast packets are sent from the source to the interested parties. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
8a67a996bc
commit
2ca35b3d73
@ -524,7 +524,7 @@ int pim_mroute_del_vif(int vif_index)
|
||||
int pim_mroute_add(struct mfcctl *mc)
|
||||
{
|
||||
int err;
|
||||
int orig;
|
||||
int orig = 0;
|
||||
|
||||
qpim_mroute_add_last = pim_time_monotonic_sec();
|
||||
++qpim_mroute_add_events;
|
||||
|
@ -35,6 +35,10 @@
|
||||
#include "pim_register.h"
|
||||
#include "pim_upstream.h"
|
||||
#include "pim_br.h"
|
||||
#include "pim_rpf.h"
|
||||
#include "pim_oil.h"
|
||||
#include "pim_zebra.h"
|
||||
#include "pim_join.h"
|
||||
|
||||
struct thread *send_test_packet_timer = NULL;
|
||||
|
||||
@ -250,10 +254,25 @@ pim_register_recv (struct interface *ifp,
|
||||
}
|
||||
|
||||
if (!(upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) &&
|
||||
!(*bits & PIM_REGISTER_NR_BIT)) {
|
||||
//decapsulate and forward the iner packet to
|
||||
//inherited_olist(S,G,rpt)
|
||||
}
|
||||
!(*bits & PIM_REGISTER_NR_BIT))
|
||||
{
|
||||
pim_rp_set_upstream_addr (&upstream->upstream_addr, source);
|
||||
pim_nexthop_lookup (&upstream->rpf.source_nexthop,
|
||||
upstream->upstream_addr, NULL);
|
||||
upstream->rpf.source_nexthop.interface = ifp;
|
||||
upstream->source_addr.s_addr = source.s_addr;
|
||||
upstream->rpf.rpf_addr.s_addr = source.s_addr;
|
||||
upstream->channel_oil->oil.mfcc_origin = source;
|
||||
pim_scan_individual_oil (upstream->channel_oil);
|
||||
pim_joinprune_send(upstream->rpf.source_nexthop.interface,
|
||||
upstream->rpf.source_nexthop.mrib_nexthop_addr,
|
||||
upstream->source_addr,
|
||||
upstream->group_addr,
|
||||
1);
|
||||
|
||||
//decapsulate and forward the iner packet to
|
||||
//inherited_olist(S,G,rpt)
|
||||
}
|
||||
} else {
|
||||
pim_register_stop_send(src_addr);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user