summaryrefslogtreecommitdiff
path: root/src/main/java/com/lumaserv/bgp/protocol/message
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/lumaserv/bgp/protocol/message')
-rw-r--r--src/main/java/com/lumaserv/bgp/protocol/message/BGPOpen.java19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/com/lumaserv/bgp/protocol/message/BGPOpen.java b/src/main/java/com/lumaserv/bgp/protocol/message/BGPOpen.java
index 875f7bc..e83b751 100644
--- a/src/main/java/com/lumaserv/bgp/protocol/message/BGPOpen.java
+++ b/src/main/java/com/lumaserv/bgp/protocol/message/BGPOpen.java
@@ -22,13 +22,30 @@ public class BGPOpen {
}
public byte[] build() {
- byte[] message = new byte[6 + identifier.length];
+ byte[] message = new byte[5 + identifier.length + 1 + 2 + 2 * 6];
message[0] = version;
message[1] = (byte) (asn >> 8);
message[2] = (byte) (asn & 0xFF);
message[3] = (byte) (holdTime >> 8);
message[4] = (byte) (holdTime & 0xFF);
System.arraycopy(identifier, 0, message, 5, identifier.length);
+ message[5 + identifier.length + 0] = 14; // Length (0E)
+ message[5 + identifier.length + 1] = 2; // Parameter Type: capability (02)
+ message[5 + identifier.length + 2] = 12; // Length (0C)
+
+ message[5 + identifier.length + 3] = 1; // Type: multiprotocol (01)
+ message[5 + identifier.length + 4] = 4; // Length (04)
+ message[5 + identifier.length + 5] = 0; // IPv6 (0002)
+ message[5 + identifier.length + 6] = 2; //
+ message[5 + identifier.length + 7] = 0; // Reserved
+ message[5 + identifier.length + 8] = 1; // Unicast (01)
+
+ message[5 + identifier.length + 9] = 1; // Type: multiprotocol (01)
+ message[5 + identifier.length +10] = 4; // Length (04)
+ message[5 + identifier.length +11] = 0; // IPv4 (0001)
+ message[5 + identifier.length +12] = 1; //
+ message[5 + identifier.length +13] = 0; // Reserved
+ message[5 + identifier.length +14] = 1; // Unicast (01)
return message;
}