From 6da915c96ae718284351417579949b290b529cf7 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sun, 11 Jul 2021 16:29:42 +0930 Subject: [PATCH] lease_rates: lease_rates_eq. We don't actually use the NULL-is-equal in the one caller, so ignore that. Signed-off-by: Rusty Russell --- common/lease_rates.c | 29 ++++------------------------- common/lease_rates.h | 12 +++++++++--- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/common/lease_rates.c b/common/lease_rates.c index 118269ad5..fb05d454e 100644 --- a/common/lease_rates.c +++ b/common/lease_rates.c @@ -7,36 +7,15 @@ #include #include #include -#include -/* FIXME: Is there a better way to do this ? */ -bool lease_rates_eq(struct lease_rates *l1, - struct lease_rates *l2) -{ - if (!l1 != !l2) - return false; - - if (!l1) - return true; - - return l1->funding_weight == l2->funding_weight - && l1->channel_fee_max_base_msat == l2->channel_fee_max_base_msat - && l1->channel_fee_max_proportional_thousandths == l2->channel_fee_max_proportional_thousandths - && l1->lease_fee_base_sat == l2->lease_fee_base_sat - && l1->lease_fee_basis == l2->lease_fee_basis; -} - -bool lease_rates_empty(struct lease_rates *rates) +bool lease_rates_empty(const struct lease_rates *rates) { + /* static means it's zero initialized */ + static const struct lease_rates zero; if (!rates) return true; - /* FIXME: why can't i do memeqzero? */ - return rates->funding_weight == 0 - && rates->channel_fee_max_base_msat == 0 - && rates->channel_fee_max_proportional_thousandths == 0 - && rates->lease_fee_base_sat == 0 - && rates->lease_fee_basis == 0; + return lease_rates_eq(rates, &zero); } void lease_rates_get_commitment(struct pubkey *pubkey, diff --git a/common/lease_rates.h b/common/lease_rates.h index d6e8b5afb..3b70a8342 100644 --- a/common/lease_rates.h +++ b/common/lease_rates.h @@ -2,6 +2,7 @@ #define LIGHTNING_COMMON_LEASE_RATES_H #include "config.h" #include +#include struct amount_msat; struct amount_sat; @@ -11,7 +12,7 @@ struct sha256; #define LEASE_RATE_DURATION 4032 -bool lease_rates_empty(struct lease_rates *rates); +bool lease_rates_empty(const struct lease_rates *rates); void lease_rates_get_commitment(struct pubkey *pubkey, u32 lease_expiry, @@ -19,8 +20,13 @@ void lease_rates_get_commitment(struct pubkey *pubkey, u16 chan_fee_ppt, struct sha256 *sha); -bool lease_rates_eq(struct lease_rates *l1, - struct lease_rates *l2); +/* lease_rates_eq: has 2 padding bytes after third field */ +STRUCTEQ_DEF(lease_rates, 2, + funding_weight, + lease_fee_basis, + channel_fee_max_proportional_thousandths, + lease_fee_base_sat, + channel_fee_max_base_msat); bool lease_rates_calc_fee(struct lease_rates *rates, struct amount_sat accept_funding_sats,