From cbafc0fa33419551a159c6b9be92cabc983ce01f Mon Sep 17 00:00:00 2001 From: Alex Myers Date: Tue, 3 May 2022 12:42:31 -0500 Subject: [PATCH] gossip_store: add flag for spam gossip, update to v10 This will be used to decouple internal use of gossip from what is passed to gossip peers. Updates GOSSIP_STORE_VERION to 10. Changelog-Changed: gossip_store updated to version 10. --- common/gossip_store.c | 6 +++++- common/gossip_store.h | 11 +++++++++-- common/test/run-gossmap_local.c | 2 +- connectd/multiplex.c | 2 ++ contrib/pyln-client/pyln/client/gossmap.py | 8 ++++---- .../tests/data/gossip_store-part1.xz | Bin 18460 -> 18460 bytes .../tests/data/gossip_store.simple.xz | Bin 424 -> 424 bytes gossipd/gossip_store.c | 2 +- tests/test_gossip.py | 10 +++++----- 9 files changed, 27 insertions(+), 14 deletions(-) diff --git a/common/gossip_store.c b/common/gossip_store.c index 4fdcde1e4..2a0ade5ab 100644 --- a/common/gossip_store.c +++ b/common/gossip_store.c @@ -53,6 +53,7 @@ u8 *gossip_store_next(const tal_t *ctx, int *gossip_store_fd, u32 timestamp_min, u32 timestamp_max, bool push_only, + bool with_spam, size_t *off, size_t *end) { u8 *msg = NULL; @@ -60,7 +61,7 @@ u8 *gossip_store_next(const tal_t *ctx, while (!msg) { struct gossip_hdr hdr; u32 msglen, checksum, timestamp; - bool push; + bool push, ratelimited; int type, r; r = pread(*gossip_store_fd, &hdr, sizeof(hdr), *off); @@ -69,6 +70,7 @@ u8 *gossip_store_next(const tal_t *ctx, msglen = be32_to_cpu(hdr.len); push = (msglen & GOSSIP_STORE_LEN_PUSH_BIT); + ratelimited = (msglen & GOSSIP_STORE_LEN_RATELIMIT_BIT); msglen &= GOSSIP_STORE_LEN_MASK; /* Skip any deleted entries. */ @@ -115,6 +117,8 @@ u8 *gossip_store_next(const tal_t *ctx, msg = tal_free(msg); } else if (!push && push_only) { msg = tal_free(msg); + } else if (!with_spam && ratelimited) { + msg = tal_free(msg); } } diff --git a/common/gossip_store.h b/common/gossip_store.h index 8fa6ee145..136186e8e 100644 --- a/common/gossip_store.h +++ b/common/gossip_store.h @@ -11,7 +11,7 @@ struct gossip_rcvd_filter; /** * gossip_store -- On-disk storage related information */ -#define GOSSIP_STORE_VERSION 9 +#define GOSSIP_STORE_VERSION 10 /** * Bit of length we use to mark a deleted record. @@ -23,9 +23,15 @@ struct gossip_rcvd_filter; */ #define GOSSIP_STORE_LEN_PUSH_BIT 0x40000000U +/** + * Bit of length used to define a rate-limited record (do not rebroadcast) + */ + #define GOSSIP_STORE_LEN_RATELIMIT_BIT 0x20000000U + /* Mask for extracting just the length part of len field */ #define GOSSIP_STORE_LEN_MASK \ - (~(GOSSIP_STORE_LEN_PUSH_BIT | GOSSIP_STORE_LEN_DELETED_BIT)) + (~(GOSSIP_STORE_LEN_PUSH_BIT | GOSSIP_STORE_LEN_DELETED_BIT | \ + GOSSIP_STORE_LEN_RATELIMIT_BIT)) /** * gossip_hdr -- On-disk format header. @@ -47,6 +53,7 @@ u8 *gossip_store_next(const tal_t *ctx, int *gossip_store_fd, u32 timestamp_min, u32 timestamp_max, bool push_only, + bool with_spam, size_t *off, size_t *end); /** diff --git a/common/test/run-gossmap_local.c b/common/test/run-gossmap_local.c index 6f1b4b724..84c97d5ab 100644 --- a/common/test/run-gossmap_local.c +++ b/common/test/run-gossmap_local.c @@ -31,7 +31,7 @@ void towire_channel_id(u8 **pptr UNNEEDED, const struct channel_id *channel_id U * setup_gossip_store_test via od -v -Anone -tx1 < /tmp/ltests-kaf30pn0/test_gossip_store_compact_noappend_1/lightning-2/regtest/gossip_store */ static u8 canned_map[] = { - 0x09, 0x80, 0x00, 0x01, 0xbc, 0x09, 0x8b, 0x67, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00 + 0x0a, 0x80, 0x00, 0x01, 0xbc, 0x09, 0x8b, 0x67, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x01, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/connectd/multiplex.c b/connectd/multiplex.c index e99c78e6e..d3d189a4a 100644 --- a/connectd/multiplex.c +++ b/connectd/multiplex.c @@ -375,6 +375,7 @@ static u8 *maybe_from_gossip_store(const tal_t *ctx, struct peer *peer) return gossip_store_next(ctx, &peer->daemon->gossip_store_fd, 0, 0xFFFFFFFF, true, + false, &peer->gs.off, &peer->daemon->gossip_store_end); } @@ -391,6 +392,7 @@ again: peer->gs.timestamp_min, peer->gs.timestamp_max, false, + false, &peer->gs.off, &peer->daemon->gossip_store_end); /* Don't send back gossip they sent to us! */ diff --git a/contrib/pyln-client/pyln/client/gossmap.py b/contrib/pyln-client/pyln/client/gossmap.py index 71379d438..ed0c76500 100755 --- a/contrib/pyln-client/pyln/client/gossmap.py +++ b/contrib/pyln-client/pyln/client/gossmap.py @@ -9,7 +9,7 @@ import io import struct # These duplicate constants in lightning/common/gossip_store.h -GOSSIP_STORE_VERSION = 9 +GOSSIP_STORE_VERSIONS = [0x09, 0x0a] GOSSIP_STORE_LEN_DELETED_BIT = 0x80000000 GOSSIP_STORE_LEN_PUSH_BIT = 0x40000000 GOSSIP_STORE_LEN_MASK = (~(GOSSIP_STORE_LEN_PUSH_BIT @@ -171,9 +171,9 @@ class Gossmap(object): self.nodes: Dict[GossmapNodeId, GossmapNode] = {} self.channels: Dict[ShortChannelId, GossmapChannel] = {} self._last_scid: Optional[str] = None - version = self.store_file.read(1) - if version[0] != GOSSIP_STORE_VERSION: - raise ValueError("Invalid gossip store version {}".format(int(version))) + version = self.store_file.read(1)[0] + if version not in GOSSIP_STORE_VERSIONS: + raise ValueError("Invalid gossip store version {}".format(version)) self.bytes_read = 1 self.refresh() diff --git a/contrib/pyln-client/tests/data/gossip_store-part1.xz b/contrib/pyln-client/tests/data/gossip_store-part1.xz index 73bd769f96bfde61131426456b42a658dbe2ce87..f63971a8671a56a750e7d2bef5e383c97b5fba92 100644 GIT binary patch delta 18270 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 delta 18270 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 h2w0f=!r~#2cqzSRaXZr#G00004Sz0txaxnk^ diff --git a/contrib/pyln-client/tests/data/gossip_store.simple.xz b/contrib/pyln-client/tests/data/gossip_store.simple.xz index a8be99deb6ed2737804d807e416b43c7ccce62f2..23981fad988eb9c9473dd84b7a49fe3c9e633a62 100644 GIT binary patch delta 394 zcmV;50d@YU1E>R#AAbb^Fqwm+yt+G>w&oF&7!lb&g6hafG8}z#xIU;_d0Dv>H2S5} zM@)(v!eg)%B_CWbjuLr~1OKoS#On|)&?3DzrMo7{F{AmYyBX-s>EgGT&ORzSF0tKZ zjlEq+w{ET4wgswz`asn%alVrhI#N1**BgxkM*W4aqQ~C(=70RmZSz!iIIFeo0k(&c ze7C7`RH|!GmX}z7Hwn3JV1tF>Uv~7Y^qo|$BtbEcC8x653Ea|MmGIl%4fjKM2>P*I zV-m!!z)&G}4PCPzutoeemg&>#wjGTWg+i|iht}8gO|!oWL!eXq9T=%hw_*- zO>$n7iH>)X^?&?88ZQQ2*04z5a8$c|-pL0nPy&saVt!7Sbi)!Y(1Z_gjFk1B73y3B z6tpET3 delta 394 zcmV;50d@YU1E>R#AAbaZFqwm+yt+G>w&oF&7$22>-U7$nUM<^)^08$7<2nPbX7|7sXHXJ00DsN}k+BC1#@W`lPC*rt z-#Qd}^9oIQGTEuoi{!j$KK~|BH6~A*Af|1;5CcSv+{ZSYzq8O$j%eP|zfP*qQ}knb zPN&}!m}hv6f_9qYP)+2Di1jo=Y1GUVb(N%1%F!zvRFa;DciV7C?wR8xSr-i?+I=b- zS-Z%(PYJZyYk$X4%67F(dI+st<#xa%;|!k~-wCT1>#I=O?fj{~P-~sF95xM_Dc{nK zn@lduqH*(IgFJgMS(EFsK*rhzyQB|FxOUkI1xQ