From 385f6de3cb641002ef8663c1a0ab5c0defdd06a5 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 22 Dec 2023 11:08:19 -0500 Subject: [PATCH] I2CP: Add router rates to bandwidth limits message --- .../i2p/data/i2cp/BandwidthLimitsMessage.java | 22 +++++++++++++++++++ .../client/ClientMessageEventListener.java | 8 ++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java b/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java index 0d09dabd6..64a75514c 100644 --- a/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java +++ b/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java @@ -46,6 +46,28 @@ public class BandwidthLimitsMessage extends I2CPMessageImpl { data[1] = out; } + /** + * @param in Client inbound limit (KBps) + * @param out Client outbound limit (KBps) + * @param rin Router inbound limit (KBps) + * @param rinb Router inbound burst limit (KBps) + * @param rout Router outbound limit (KBps) + * @param routb Router outbound burst limit (KBps) + * @param sec Router burst time (seconds) + * + * @since 0.9.62 + */ + public BandwidthLimitsMessage(int in, int out, int rin, int rinb, int rout, int routb, int sec) { + this(); + data[0] = in; + data[1] = out; + data[2] = rin; + data[3] = rinb; + data[4] = rout; + data[5] = routb; + data[6] = sec; + } + public int[] getLimits() { return data; } diff --git a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java index b80a8d62d..8065dbd2b 100644 --- a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java +++ b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java @@ -829,9 +829,11 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi protected void handleGetBWLimits(GetBandwidthLimitsMessage message) { if (_log.shouldLog(Log.INFO)) _log.info("Got BW Limits request"); - int in = _context.bandwidthLimiter().getInboundKBytesPerSecond() * 4 / 7; - int out = _context.bandwidthLimiter().getOutboundKBytesPerSecond() * 4 / 7; - BandwidthLimitsMessage msg = new BandwidthLimitsMessage(in, out); + int in = _context.bandwidthLimiter().getInboundKBytesPerSecond(); + int out = _context.bandwidthLimiter().getOutboundKBytesPerSecond(); + int inb = _context.bandwidthLimiter().getInboundBurstKBytesPerSecond(); + int outb = _context.bandwidthLimiter().getOutboundBurstKBytesPerSecond(); + BandwidthLimitsMessage msg = new BandwidthLimitsMessage(in * 4 / 7, out * 4 / 7, in, inb, out, outb, 1); try { _runner.doSend(msg); } catch (I2CPMessageException ime) {