/* $XORP: xorp/xrl/interfaces/redist_transaction4.xif,v 1.9 2006/03/30 02:21:16 pavlin Exp $ */

/*
 * RIB routes redistribution transaction-based XRL interface.
 */


interface redist_transaction4/0.1 {

	/**
	 * Start transaction.
	 * 
	 * @param tid the transaction ID to use for this transaction.
	 */
	start_transaction -> tid:u32;

	/**
	 * Commit transaction.
	 * 
	 * @param tid the transaction ID of this transaction.
	 */
	commit_transaction ? tid:u32;

	/**
	 * Abort transaction.
	 * 
	 * @param tid the transaction ID of this transaction.
	 */
	abort_transaction ? tid:u32;

	/**
	 * Add/delete a routing entry.
	 *
	 * @param tid the transaction ID of this transaction.
	 * @param dst destination network.
	 * @param nexthop nexthop router address.
	 * @param ifname interface name associated with nexthop.
	 * @param vifname virtual interface name with nexthop.
	 * @param metric origin routing protocol metric for route.
	 * @param admin_distance administrative distance of origin routing
	 *        protocol.
	 * @param cookie value set by the requestor to identify
	 *        redistribution source.  Typical value is the originating
	 *        protocol name.
	 * @param protocol_origin the name of the protocol that originated
	 * this routing entry.
	 */
	add_route	? tid:u32					\
			& dst:ipv4net					\
			& nexthop:ipv4					\
			& ifname:txt					\
			& vifname:txt					\
			& metric:u32					\
			& admin_distance:u32				\
			& cookie:txt					\
			& protocol_origin:txt;

	delete_route	? tid:u32					\
			& dst:ipv4net					\
			& nexthop:ipv4					\
			& ifname:txt					\
			& vifname:txt					\
			& metric:u32					\
			& admin_distance:u32				\
			& cookie:txt					\
			& protocol_origin:txt;

	/**
	 * Delete all routing entries.
	 *
	 * @param tid the transaction ID of this transaction.
	 * @param cookie value set by the requestor to identify
	 *        redistribution source.  Typical value is the originating
	 *        protocol name.
	 */
	delete_all_routes ? tid:u32 & cookie:txt;
}
