Files
KLALB/src/org/kne/cloud/network/srv6/RouterInfoPacket.java
T

80 lines
1.9 KiB
Java

package org.kne.cloud.network.srv6;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.net.Inet6Address;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.kne.cloud.network.NetworkPacket;
import org.kne.cloud.network.ipv6.IPv6AddressGroup;
public class RouterInfoPacket extends KLALBRoutingProtocolPacket implements Serializable{
public RouterInfoPacket(RouterInfo routerInfo, boolean flood,long asn) {
super(RINFO);
getHeader().put(1,(byte) (flood?1:0));
getHeader().putLong(2,asn);
this.rinfo=routerInfo;
}
protected RouterInfoPacket(ByteBuffer bb) {
super(bb);
}
private RouterInfo rinfo;
public boolean isFlood() {
return (getHeader().get(1)&1)==1;
}
public long getASN() {
return getHeader().getLong(2);
}
public RouterInfo getRinfo() {
return rinfo;
}
@Override
protected long getHeaderSize() {
return super.getHeaderSize()+9;
}
@Override
public long getTotalLength() {
return super.getTotalLength();
}
public void setRinfo(RouterInfo rinfo) {
this.rinfo = rinfo;
}
@Override
public String toString() {
return rinfo.toString();
}
@Override
public void writeToChannel(WritableByteChannel dto) throws IOException {
super.writeToChannel(dto);
rinfo.writeToChannel(dto);
}
@Override
public void readFromChannel(ReadableByteChannel din, long length) throws IOException {
super.readFromChannel(din, length);
rinfo=new RouterInfo();
rinfo.readFromChannel(din, length);
}
}