package org.kne.cloud.network.ipv6;

import java.io.IOException;
import java.net.Inet6Address;
import java.util.*;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;

import org.kne.cloud.network.ipv6.IPv6Packet;
import org.kne.cloud.network.klalb.KLALBPacket;
import org.kne.cloud.network.monitor.MonitorData;
import org.kne.cloud.network.monitor.SpeedAndTrafficAndDelayMonitorDataImpl;
import org.kne.cloud.network.srv6.SRv6Router;

public interface IPv6NetworkLink {
	public SRv6Router getSrv6Router() ;

	public void setSRv6Router(SRv6Router srv6Router) ;
	public boolean isLoopBack();
	public List<IPv6AddressGroup> getAddressGroups();
	public List<Neighbor> getNeighborsInfo();
	public List<RouteItem> getRouteItems();
	public void sendPacket(IPv6Packet pack, IPv6Address inet6Address) throws IOException;
	public String getName();
	public boolean isUp();
	public void setReceiveConsumer(BiConsumer<IPv6NetworkLink, Supplier<IPv6Packet>> srhReceive);
	public void addIPv6LinkStateListener(IPv6LinkStateListener listener);
	public void removeIPv6LinkStateListener(IPv6LinkStateListener listener);
	
}
