/*
 * Interface implemented by routing process interested in configuration
 * changes in the Forwarding Engine Abstraction process.
 */

#include <xorp_config.h>

interface fea_ifmgr_mirror/0.1 {
	interface_add ? ifname:txt;
	interface_remove ? ifname:txt;
	interface_set_enabled ? ifname:txt & enabled:bool;
	interface_set_discard ? ifname:txt & discard:bool;
	interface_set_unreachable ? ifname:txt & unreachable:bool;
	interface_set_management ? ifname:txt & management:bool;
	interface_set_mtu ? ifname:txt & mtu:u32;
	interface_set_mac ? ifname:txt & mac:mac;
	interface_set_pif_index ? ifname:txt & pif_index:u32;
	interface_set_no_carrier ? ifname:txt & no_carrier:bool;
	interface_set_baudrate ? ifname:txt & baudrate:u64;

	interface_set_parent_ifname ? ifname:txt & parent_ifname:txt;
	interface_set_iface_type ? ifname:txt & iface_type:txt;
	interface_set_vid ? ifname:txt & vid:txt;

	vif_add ? ifname:txt & vifname:txt;
	vif_remove ? ifname:txt & vifname:txt;
	vif_set_enabled ? ifname:txt & vifname:txt & enabled:bool;
	vif_set_multicast_capable ? ifname:txt & vifname:txt & capable:bool;
	vif_set_broadcast_capable ? ifname:txt & vifname:txt & capable:bool;
	vif_set_p2p_capable ? ifname:txt & vifname:txt & capable:bool;
	vif_set_loopback ? ifname:txt & vifname:txt & loopback:bool;
	vif_set_pim_register ? ifname:txt & vifname:txt & pim_register:bool;
	vif_set_pif_index ? ifname:txt & vifname:txt & pif_index:u32;
	vif_set_vif_index ? ifname:txt & vifname:txt & vif_index:u32;


	ipv4_add ? ifname:txt & vifname:txt & addr:ipv4;
	ipv4_remove ? ifname:txt & vifname:txt & addr:ipv4;
	ipv4_set_prefix ? ifname:txt & vifname:txt & addr:ipv4 & prefix_len:u32;
	ipv4_set_enabled ? ifname:txt & vifname:txt & addr:ipv4 & enabled:bool;
	ipv4_set_multicast_capable ? ifname:txt & vifname:txt & addr:ipv4     \
				   & capable:bool;
	ipv4_set_loopback ? ifname:txt & vifname:txt & addr:ipv4	      \
			  & loopback:bool;
	ipv4_set_broadcast ? ifname:txt & vifname:txt & addr:ipv4	\
			   & broadcast_addr:ipv4;
	ipv4_set_endpoint ? ifname:txt & vifname:txt & addr:ipv4	\
			  & endpoint_addr:ipv4;


#ifdef HAVE_IPV6

	ipv6_add ? ifname:txt & vifname:txt & addr:ipv6;
	ipv6_remove ? ifname:txt & vifname:txt & addr:ipv6;
	ipv6_set_prefix ? ifname:txt & vifname:txt & addr:ipv6 & prefix_len:u32;
	ipv6_set_enabled ? ifname:txt & vifname:txt & addr:ipv6 & enabled:bool;
	ipv6_set_loopback ? ifname:txt & vifname:txt & addr:ipv6	      \
			  & loopback:bool;
	ipv6_set_multicast_capable ? ifname:txt & vifname:txt & addr:ipv6     \
				   & capable:bool;
	ipv6_set_endpoint ? ifname:txt & vifname:txt & addr:ipv6	\
			  & endpoint_addr:ipv6;

#endif //ipv6

	hint_tree_complete;
	hint_updates_made;
}
