package net.onrc.onos.ofcontroller.bgproute;

import net.floodlightcontroller.core.module.IFloodlightService;

public interface IBgpRouteService extends IFloodlightService {

	public Rib lookupRib(byte[] dest);

	public Ptree getPtree();

	public String getBGPdRestIp();

	public String getRouterId();

	public void clearPtree();
	
	/**
	 * Pass a RIB update to the {@link IBgpRouteService}
	 * @param update
	 */
	public void newRibUpdate(RibUpdate update);
	
	//TODO This functionality should be provided by some sort of Ptree listener framework
	//public void prefixAdded(PtreeNode node);
	//public void prefixDeleted(PtreeNode node);
}
