/* $XORP: xorp/xrl/interfaces/fea_fib_client.xif,v 1.5 2007/01/13 04:20:04 pavlin Exp $ */

#include <xorp_config.h>

/*
 * FEA Forwarding Information Base Client XRL interface.
 */

interface fea_fib_client/0.1 {
	/**
	 * Notification of a route being added.
	 *
	 * @param network the network address prefix of the route to add.
	 * @param nexthop the address of the next-hop router toward the
	 * destination.
	 * @param ifname the name of the physical interface toward the
	 * destination.
	 * @param vifname the name of the virtual interface toward the
	 * destination.
	 * @param metric the routing metric toward the destination.
	 * @param admin_distance the administratively defined distance
	 * toward the destination.
	 * @param protocol_origin the name of the protocol that originated
	 * this route.
	 * @param xorp_route true if this route was installed by XORP.
	 */
	add_route4	? network:ipv4net & nexthop:ipv4 & ifname:txt	\
			& vifname:txt & metric:u32 & admin_distance:u32	\
			& protocol_origin:txt & xorp_route:bool;

	/**
	 * Notification of a route being replaced.
	 *
	 * @param network the network address prefix of the route to replace.
	 * @param nexthop the address of the next-hop router toward the
	 * destination.
	 * @param ifname the name of the physical interface toward the
	 * destination.
	 * @param vifname the name of the virtual interface toward the
	 * destination.
	 * @param metric the routing metric toward the destination.
	 * @param admin_distance the administratively defined distance
	 * toward the destination.
	 * @param protocol_origin the name of the protocol that originated
	 * this route.
	 * @param xorp_route true if this route was installed by XORP.
	 */
	replace_route4	? network:ipv4net & nexthop:ipv4 & ifname:txt	\
			& vifname:txt & metric:u32 & admin_distance:u32	\
			& protocol_origin:txt & xorp_route:bool;

	/**
	 * Notification of a route being deleted.
	 *
	 * @param network the network address prefix of the route to delete.
	 * @param ifname the name of the physical interface toward the
	 * destination.
	 * @param vifname the name of the virtual interface toward the
	 * destination.
	 */
	delete_route4	? network:ipv4net & ifname:txt & vifname: txt;

	/**
	 * Notification of a route resolution request. This is issued
	 * when the forwarding plane cannot find any route to a given
	 * destination, even a candidate default.
	 *
	 * @param network the address of the destination.
	 * forwarding plane requires a route to be resolved by the
	 * upper layer.
	 */
	resolve_route4	? network:ipv4net;

#ifdef HAVE_IPV6
	add_route6	? network:ipv6net & nexthop:ipv6 & ifname:txt	\
			& vifname:txt & metric:u32 & admin_distance:u32	\
			& protocol_origin:txt & xorp_route:bool;
	resolve_route6	? network:ipv6net;
	replace_route6	? network:ipv6net & nexthop:ipv6 & ifname:txt	\
			& vifname:txt & metric:u32 & admin_distance:u32	\
			& protocol_origin:txt & xorp_route:bool;
	delete_route6	? network:ipv6net & ifname:txt & vifname: txt;

#endif
}
