41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
/*
|
||
|
* PIM for FRR - J/P Aggregation
|
||
|
* Copyright (C) 2017 Cumulus Networks, Inc.
|
||
|
* Donald Sharp
|
||
|
*/
|
||
|
#ifndef __PIM_JP_AGG_H__
|
||
|
#define __PIM_JP_AGG_H__
|
||
|
|
||
|
#include "pim_rpf.h"
|
||
|
|
||
|
struct pim_jp_sources {
|
||
|
struct pim_upstream *up;
|
||
|
int is_join;
|
||
|
};
|
||
|
|
||
|
struct pim_jp_agg_group {
|
||
|
pim_addr group;
|
||
|
struct list *sources;
|
||
|
};
|
||
|
|
||
|
void pim_jp_agg_upstream_verification(struct pim_upstream *up, bool ignore);
|
||
|
int pim_jp_agg_is_in_list(struct list *group, struct pim_upstream *up);
|
||
|
|
||
|
void pim_jp_agg_group_list_free(struct pim_jp_agg_group *jag);
|
||
|
int pim_jp_agg_group_list_cmp(void *arg1, void *arg2);
|
||
|
|
||
|
void pim_jp_agg_clear_group(struct list *group);
|
||
|
void pim_jp_agg_remove_group(struct list *group, struct pim_upstream *up,
|
||
|
struct pim_neighbor *nbr);
|
||
|
|
||
|
void pim_jp_agg_add_group(struct list *group, struct pim_upstream *up,
|
||
|
bool is_join, struct pim_neighbor *nbr);
|
||
|
|
||
|
void pim_jp_agg_switch_interface(struct pim_rpf *orpf, struct pim_rpf *nrpf,
|
||
|
struct pim_upstream *up);
|
||
|
|
||
|
void pim_jp_agg_single_upstream_send(struct pim_rpf *rpf,
|
||
|
struct pim_upstream *up, bool is_join);
|
||
|
#endif
|