#include "pim_rpf.h"
#include "pim_register.h"
#include "pim_jp_agg.h"
+#include "pim_oil.h"
void pim_msg_build_header(uint8_t *pim_msg, size_t pim_msg_size,
uint8_t pim_msg_type)
struct pim_jp_sources *js;
size_t size = 0;
+ if (!sources)
+ return 0;
+
size += sizeof(struct pim_encoded_group_ipv4);
size += 4; // Joined sources (2) + Pruned Sources (2)
size += sizeof(struct pim_encoded_source_ipv4) * sources->count;
js = listgetdata(listhead(sources));
- if (js && js->up->sg.src.s_addr == INADDR_ANY) {
+ if (js && js->up->sg.src.s_addr == INADDR_ANY && js->is_join) {
struct pim_upstream *child, *up;
struct listnode *up_node;
grp->prunes++;
if (source->up->sg.src.s_addr == INADDR_ANY) {
- struct pim_rpf *rpf = pim_rp_g(source->up->sg.grp);
+ struct pim_instance *pim = source->up->channel_oil->pim;
+ struct pim_rpf *rpf = pim_rp_g(pim, source->up->sg.grp);
bits = PIM_ENCODE_SPARSE_BIT | PIM_ENCODE_WC_BIT
| PIM_ENCODE_RPT_BIT;
stosend = rpf->rpf_addr.u.prefix4;