diff --git a/pom.xml b/pom.xml
index 363efb6..f11761b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
io.netty
netty-all
- 4.1.68.Final
+ 4.1.110.Final
org.projectlombok
diff --git a/src/main/java/cn/x47/config/Config.java b/src/main/java/cn/x47/config/Config.java
index 91d71e8..e3cddf1 100644
--- a/src/main/java/cn/x47/config/Config.java
+++ b/src/main/java/cn/x47/config/Config.java
@@ -2,7 +2,7 @@ package cn.x47.config;
public class Config {
// 设置协议版本,1 表示 RIP v1,2 表示 RIP v2
- public static final byte RIP_VERSION = 2;
+ public static final byte RIP_VERSION = 1;
public static final boolean startServer = true;
public static final boolean startClient = false;
}
diff --git a/src/main/java/cn/x47/handle/RIPPacketDecoder.java b/src/main/java/cn/x47/handle/RIPPacketDecoder.java
index 6163f48..0d73c6a 100644
--- a/src/main/java/cn/x47/handle/RIPPacketDecoder.java
+++ b/src/main/java/cn/x47/handle/RIPPacketDecoder.java
@@ -29,26 +29,22 @@ public class RIPPacketDecoder extends MessageToMessageDecoder {
while (buf.readableBytes() >= 20) {
RIPEntry entry = new RIPEntry();
entry.setAddressFamily(buf.readShort());
- if (ripPacket.getVersion() == 2) {
- entry.setRouteTag(buf.readShort());
- } else {
- entry.setRouteTag((short) 0);
- }
+ entry.setRouteTag(buf.readShort());
+
byte[] ipBytes = new byte[4];
buf.readBytes(ipBytes);
entry.setIpAddress(InetAddress.getByAddress(ipBytes));
- if (ripPacket.getVersion() == 2) {
- buf.readBytes(ipBytes);
- entry.setSubnetMask(InetAddress.getByAddress(ipBytes));
- buf.readBytes(ipBytes);
- entry.setNextHop(InetAddress.getByAddress(ipBytes));
- } else {
+ buf.readBytes(ipBytes);
+ entry.setSubnetMask(InetAddress.getByAddress(ipBytes));
+ buf.readBytes(ipBytes);
+ entry.setNextHop(InetAddress.getByAddress(ipBytes));
+ if (ripPacket.getVersion() == 1) {
// 对于 RIP v1,子网掩码和下一跳需要推断或设为默认值
entry.setSubnetMask(InetAddress.getByName("255.255.255.0")); // 示例,实际应根据 IP 类推断
entry.setNextHop(packet.sender().getAddress());
}
- entry.setMetric(buf.readInt());
+ entry.setMetric((int) buf.readUnsignedInt());
entries.add(entry);
}
ripPacket.setEntries(entries);
diff --git a/src/main/java/cn/x47/service/RIPClient.java b/src/main/java/cn/x47/service/RIPClient.java
index 8ae02c1..c3a1a19 100644
--- a/src/main/java/cn/x47/service/RIPClient.java
+++ b/src/main/java/cn/x47/service/RIPClient.java
@@ -11,9 +11,6 @@ import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.DatagramChannel;
import io.netty.channel.socket.nio.NioDatagramChannel;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
public class RIPClient {
@@ -36,8 +33,7 @@ public class RIPClient {
public void sendRipPacket(RIPPacket packet) {
try {
- ChannelFuture future = bootstrap.bind(0)
- .sync();
+ ChannelFuture future = bootstrap.bind(0).sync();
future.channel().writeAndFlush(packet).sync();
future.channel().close();
} catch (InterruptedException e) {
diff --git a/src/main/java/cn/x47/service/RIPServer.java b/src/main/java/cn/x47/service/RIPServer.java
index 1feec9d..ccab745 100644
--- a/src/main/java/cn/x47/service/RIPServer.java
+++ b/src/main/java/cn/x47/service/RIPServer.java
@@ -4,7 +4,9 @@ package cn.x47.service;
import cn.x47.handle.RIPPacketDecoder;
import cn.x47.handle.RIPServerHandler;
import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.*;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.ChannelOption;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.DatagramChannel;
import io.netty.channel.socket.nio.NioDatagramChannel;