package com.lumaserv.bgp.protocol.message; import com.lumaserv.bgp.protocol.DataBuilder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.nio.ByteBuffer; @Getter @Setter @NoArgsConstructor public class BGPOpen implements DataBuilder { byte version; int asn; int holdTime; byte[] identifier; public BGPOpen(ByteBuffer message) { System.out.println("BGPOpen pos:" + message.position()); version = message.get(); asn = message.getShort() & 0xFFFF; holdTime = message.getShort() & 0xFFFF; identifier = new byte[4]; System.out.println("BGPOpen asn:" + asn); message.get(identifier); } public void build(ByteBuffer b) { b.put(version); b.put((byte) (asn >> 8)); b.put((byte) (asn & 0xFF)); b.put((byte) (holdTime >> 8)); b.put((byte) (holdTime & 0xFF)); b.put(identifier); b.put((byte)14); // Length (0E) b.put((byte)2); // Parameter Type: capability (02) b.put((byte)12); // Length (0C) b.put((byte)1); // Type: multiprotocol (01) b.put((byte)4); // Length (04) b.putShort((short)2); // IPv6 (0002) b.put((byte)0); // Reserved b.put((byte)1); // Unicast (01) b.put((byte)1); // Type: multiprotocol (01) b.put((byte)4); // Length (04) b.putShort((short)1); // IPv4 (0001) b.put((byte)0); // Reserved b.put((byte)1); // Unicast (01) } }