// Header file for multicast plugin
//
// Forwards packets it receives to multiple VOQs.
//

#define multicast_ID	101

//
// Structure that defines an instance of the plugin class.
// Include declarations for per instance data.
//
struct multicast_instance {
	struct rp_instance rootinstance;	// do not touch

	// add declarations for per instance data here
	int destVec;		// bit vector of destinations
};


//
// Standard function declarations for the plugin. Change ONLY the names.
//
void multicast_init_class();
struct rp_class *multicast_get_class();
struct rp_instance *multicast_create_instance(struct rp_class *, u_int32_t);
void multicast_handle_packet(struct rp_instance *, void *);
void multicast_free_instance(struct rp_instance *);
void multicast_bind_instance(struct rp_instance *);
void multicast_unbind_instance(struct rp_instance *);
int  multicast_handle_msg(struct rp_instance *, 
				void *, u_int8_t, u_int8_t, u_int8_t *);
int multicast (struct lkm_table *, int, int, struct kernel_plugin_fct_struct *);
int multicast_load(struct lkm_table *, int);
int multicast_unload(struct lkm_table *, int);
