From 29a12c28c9ac02563a12ddd4077ea2b7245913e0 Mon Sep 17 00:00:00 2001 From: ffranr Date: Thu, 20 Jun 2024 22:28:58 +0100 Subject: [PATCH] routing: pass link bandwidth to traffic shaper's bandwidth query This commit updates the traffic shaper's bandwidth query method to accept the link bandwidth as a parameter. This allows an external traffic shaper to optionally return the link bandwidth as the payment bandwidth. --- routing/bandwidth.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/routing/bandwidth.go b/routing/bandwidth.go index e2ec45e840..1fb96e8efc 100644 --- a/routing/bandwidth.go +++ b/routing/bandwidth.go @@ -43,8 +43,8 @@ type TlvTrafficShaper interface { // of 0 means there is no bandwidth available. To find out if a channel // is a custom channel that should be handled by the traffic shaper, the // HandleTraffic method should be called first. - PaymentBandwidth(htlcBlob, - commitmentBlob fn.Option[tlv.Blob]) (lnwire.MilliSatoshi, error) + PaymentBandwidth(htlcBlob, commitmentBlob fn.Option[tlv.Blob], + linkBandwidth lnwire.MilliSatoshi) (lnwire.MilliSatoshi, error) } // AuxHtlcModifier is an interface that allows the sender to modify the outgoing @@ -131,6 +131,11 @@ func (b *bandwidthManager) getBandwidth(cid lnwire.ShortChannelID, } var ( + // We will pass the link bandwidth to the external traffic + // shaper. This is the current best estimate for the available + // bandwidth for the link. + linkBandwidth = link.Bandwidth() + auxBandwidth lnwire.MilliSatoshi auxBandwidthDetermined bool ) @@ -154,7 +159,7 @@ func (b *bandwidthManager) getBandwidth(cid lnwire.ShortChannelID, // Ask for a specific bandwidth to be used for the channel. commitmentBlob := link.CommitmentCustomBlob() auxBandwidth, err = ts.PaymentBandwidth( - htlcBlob, commitmentBlob, + htlcBlob, commitmentBlob, linkBandwidth, ) if err != nil { return fmt.Errorf("failed to get bandwidth from "+ @@ -192,7 +197,7 @@ func (b *bandwidthManager) getBandwidth(cid lnwire.ShortChannelID, // Otherwise, we'll return the current best estimate for the // available bandwidth for the link. - return link.Bandwidth() + return linkBandwidth } // availableChanBandwidth returns the total available bandwidth for a channel