package es.tid.bgp.bgp4Peer.updateTEDB;
import java.net.Inet4Address;
import java.util.ArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import es.tid.bgp.bgp4.update.fields.LinkNLRI;
import es.tid.bgp.bgp4.update.tlv.linkstate_attribute_tlvs.MaxReservableBandwidthLinkAttribTLV;
import es.tid.bgp.bgp4.update.tlv.linkstate_attribute_tlvs.MaximumLinkBandwidthLinkAttribTLV;
import es.tid.bgp.bgp4.update.tlv.linkstate_attribute_tlvs.UnreservedBandwidthLinkAttribTLV;
import es.tid.bgp.bgp4.update.tlv.node_link_prefix_descriptor_subTLVs.AutonomousSystemNodeDescriptorSubTLV;
import es.tid.bgp.bgp4.update.tlv.node_link_prefix_descriptor_subTLVs.NodeDescriptorsSubTLV;
import es.tid.bgp.bgp4.update.tlv.node_link_prefix_descriptor_subTLVs.NodeDescriptorsSubTLVTypes;
import es.tid.ospf.ospfv2.lsa.LSA;
/**
* This class is used to control BGP updates (not changing database when is a 'refresh BGP message')
*
* WARNING: we only control when adding new link or when bitmap changes.
* @author baam
*
*/
public class UpdateLink {
private MaximumLinkBandwidthLinkAttribTLV maximumLinkBandwidthTLV;
private MaxReservableBandwidthLinkAttribTLV maxReservableBandwidthTLV;
private UnreservedBandwidthLinkAttribTLV unreservedBandwidthTLV;
private LinkNLRI linkNLRI;
private Inet4Address localDomainID;
private Inet4Address localRouterASBR;
private Inet4Address remoteDomainID;
private Inet4Address remoteRouterASBR;
private byte[] bitmap;
private byte[] bitmapReserved;
public UpdateLink(Inet4Address remote, Inet4Address local, byte[] bitMap, byte[] bitmapRes) {
this.bitmap=new byte[bitMap.length];
for(int i=0; i<bitMap.length; i++){
this.bitmap[i]=bitMap[i];
}
if (bitmapRes!=null){
this.bitmapReserved=new byte[bitmapRes.length];
for(int i=0; i<bitmapRes.length; i++){
this.bitmapReserved[i]=bitmapRes[i];
}
}
this.remoteRouterASBR=remote;
this.localRouterASBR=local;
}
public byte[] getBitmap(){
return bitmap;
}
public byte[] getBitmapRserved(){
return bitmapReserved;
}
@Override
public boolean equals(Object updateLink){
if (updateLink == null) {
return false;
}
try {
final UpdateLink other = (UpdateLink) updateLink;
if (!(other.localRouterASBR.equals(this.localRouterASBR)))
return false;
if (!(other.remoteRouterASBR.equals(this.remoteRouterASBR)))
return false;
}catch (Exception e){
return false;
}
return true;
}
}