#ifndef __PIM_INSTANCE_H__
#define __PIM_INSTANCE_H__
+#include "pim_str.h"
+#include "pim_msdp.h"
+
+#if defined(HAVE_LINUX_MROUTE_H)
+#include <linux/mroute.h>
+#else
+/*
+ Below: from <linux/mroute.h>
+*/
+
+#ifndef MAXVIFS
+#define MAXVIFS (256)
+#endif
+#endif
extern struct pim_instance *pimg; // Pim Global Instance
enum pim_spt_switchover {
// List of static routes;
struct list *static_routes;
+
+ // Upstream vrf specific information
+ struct list *upstream_list;
+ struct hash *upstream_hash;
+ struct timer_wheel *upstream_sg_wheel;
+
+ /*
+ * RP information
+ */
+ struct list *rp_list;
+ struct route_table *rp_table;
+
+ int iface_vif_index[MAXVIFS];
+
+ struct list *channel_oil_list;
+ struct hash *channel_oil_hash;
+
+ struct pim_msdp msdp;
+
+ struct list *ssmpingd_list;
+ struct in_addr ssmpingd_group_addr;
+
+ unsigned int keep_alive_time;
+ unsigned int rp_keep_alive_time;
+
+ bool ecmp_enable;
+ bool ecmp_rebalance_enable;
+
+ /* If we need to rescan all our upstreams */
+ struct thread *rpf_cache_refresher;
+ int64_t rpf_cache_refresh_requests;
+ int64_t rpf_cache_refresh_events;
+ int64_t rpf_cache_refresh_last;
+ int64_t scan_oil_events;
+ int64_t scan_oil_last;
+
+ int64_t nexthop_lookups;
+ int64_t nexthop_lookups_avoided;
+ int64_t last_route_change_time;
};
void pim_vrf_init(void);