diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2022-01-30 14:47:49 +0100 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-11-12 23:50:07 +0100 |
commit | 45143e7d7ad17e149d4df8f5502a15c3222691e4 (patch) | |
tree | 57ad7add033e572dc0bdde65cf6021d290e060d1 | |
parent | ebec82011e1f83bd40f5bb94ea72c2552306e940 (diff) |
WIP build with ByteBuffer
14 files changed, 46 insertions, 27 deletions
diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4AggregatorAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4AggregatorAttribute.java index c579210..24a175e 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4AggregatorAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4AggregatorAttribute.java @@ -3,6 +3,8 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @Getter @Setter public class AS4AggregatorAttribute implements PathAttribute { @@ -23,8 +25,9 @@ public class AS4AggregatorAttribute implements PathAttribute { return 18; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { + b.putInt(as); + b.put(origin); } } diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4PathAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4PathAttribute.java index 796fbea..c41f07a 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4PathAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/AS4PathAttribute.java @@ -3,6 +3,7 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -33,8 +34,7 @@ public class AS4PathAttribute implements PathAttribute { return 17; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } @Getter diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathAttribute.java index 6405924..b39e473 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathAttribute.java @@ -3,6 +3,7 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -28,8 +29,7 @@ public class ASPathAttribute implements PathAttribute { return 2; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } @Getter diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathLimitAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathLimitAttribute.java index 732b018..f4fb0ef 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathLimitAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/ASPathLimitAttribute.java @@ -3,6 +3,8 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @Setter @Getter public class ASPathLimitAttribute implements PathAttribute { @@ -22,8 +24,7 @@ public class ASPathLimitAttribute implements PathAttribute { return 21; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } } diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/AggregatorAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/AggregatorAttribute.java index 25f3e70..4c73476 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/AggregatorAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/AggregatorAttribute.java @@ -3,6 +3,8 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @Getter @Setter public class AggregatorAttribute implements PathAttribute { @@ -20,8 +22,9 @@ public class AggregatorAttribute implements PathAttribute { return 7; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { + b.putInt(as); + b.put(origin); } } diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/AtomicAggregateAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/AtomicAggregateAttribute.java index 6f7e479..7cc3aa5 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/AtomicAggregateAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/AtomicAggregateAttribute.java @@ -1,5 +1,7 @@ package com.lumaserv.bgp.protocol.attribute; +import java.nio.ByteBuffer; + public class AtomicAggregateAttribute implements PathAttribute { public AtomicAggregateAttribute(byte typeCode, byte[] data) { @@ -10,8 +12,7 @@ public class AtomicAggregateAttribute implements PathAttribute { return 6; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } } diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/CommunitiesAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/CommunitiesAttribute.java index 7c7f060..1c1c791 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/CommunitiesAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/CommunitiesAttribute.java @@ -3,6 +3,7 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -27,8 +28,7 @@ public class CommunitiesAttribute implements PathAttribute { return 8; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } @Setter diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/DevelopmentAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/DevelopmentAttribute.java index 453f934..b4cf213 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/DevelopmentAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/DevelopmentAttribute.java @@ -3,6 +3,8 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @Getter @Setter public class DevelopmentAttribute implements PathAttribute { @@ -13,8 +15,8 @@ public class DevelopmentAttribute implements PathAttribute { this.data = data; } - public byte[] build() { - return data; + public void build(ByteBuffer b) { + b.put(data); } public byte getTypeCode() { diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/ExtendedCommuntiesAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/ExtendedCommuntiesAttribute.java index 6909277..0765b3b 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/ExtendedCommuntiesAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/ExtendedCommuntiesAttribute.java @@ -3,6 +3,8 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @Getter @Setter public class ExtendedCommuntiesAttribute implements PathAttribute { @@ -26,8 +28,7 @@ public class ExtendedCommuntiesAttribute implements PathAttribute { return 16; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } public String toString() { diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/LargeCommunityAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/LargeCommunityAttribute.java index 921d5a5..3f10c42 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/LargeCommunityAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/LargeCommunityAttribute.java @@ -3,6 +3,7 @@ package com.lumaserv.bgp.protocol.attribute; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -41,8 +42,7 @@ public class LargeCommunityAttribute implements PathAttribute { return 32; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { } @Setter diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/NextHopAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/NextHopAttribute.java index 2146364..c579295 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/NextHopAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/NextHopAttribute.java @@ -6,6 +6,8 @@ import java.net.UnknownHostException; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @Getter @Setter public class NextHopAttribute implements PathAttribute { @@ -27,8 +29,8 @@ public class NextHopAttribute implements PathAttribute { return 3; } - public byte[] build() { - return address; + public void build(ByteBuffer b) { + b.put(address); } public String toString() { diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/OriginAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/OriginAttribute.java index 9827bae..b8c996d 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/OriginAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/OriginAttribute.java @@ -1,5 +1,7 @@ package com.lumaserv.bgp.protocol.attribute; +import java.nio.ByteBuffer; + import lombok.Getter; import lombok.Setter; @@ -40,8 +42,8 @@ public class OriginAttribute implements PathAttribute { return 1; } - public byte[] build() { - return new byte[0]; + public void build(ByteBuffer b) { + b.put(origin); } public String toString() { diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/PathAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/PathAttribute.java index 4a10daa..95156ed 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/PathAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/PathAttribute.java @@ -1,9 +1,11 @@ package com.lumaserv.bgp.protocol.attribute; +import java.nio.ByteBuffer; + public interface PathAttribute { byte getTypeCode(); - byte[] build(); + void build(ByteBuffer b); static PathAttribute from(byte typeCode, byte[] data) { switch (typeCode & 0xFF) { diff --git a/src/main/java/com/lumaserv/bgp/protocol/attribute/UnknownAttribute.java b/src/main/java/com/lumaserv/bgp/protocol/attribute/UnknownAttribute.java index 69dae2d..222c9bf 100644 --- a/src/main/java/com/lumaserv/bgp/protocol/attribute/UnknownAttribute.java +++ b/src/main/java/com/lumaserv/bgp/protocol/attribute/UnknownAttribute.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import java.nio.ByteBuffer; + @AllArgsConstructor @Getter @Setter @@ -12,8 +14,8 @@ public class UnknownAttribute implements PathAttribute { byte typeCode; byte[] data; - public byte[] build() { - return data; + public void build(ByteBuffer b) { + b.put(b); } public byte getTypeCode() { |