blob: 37b791be8f4370a532bc2377927198e896cdb5c9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
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)
}
}
|