gossip_store: add "dying" flag to indicate not to gossip dying channels.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2023-07-19 16:04:07 +09:30
parent c0bb7f0721
commit 8178b7389f
2 changed files with 10 additions and 3 deletions

View file

@ -44,6 +44,11 @@ struct gossip_rcvd_filter;
*/ */
#define GOSSIP_STORE_ZOMBIE_BIT 0x1000U #define GOSSIP_STORE_ZOMBIE_BIT 0x1000U
/**
* Bit of flags used to mark a channel announcement closed (not deleted for 12 blocks)
*/
#define GOSSIP_STORE_DYING_BIT 0x0800U
/** /**
* gossip_hdr -- On-disk format header. * gossip_hdr -- On-disk format header.

View file

@ -68,13 +68,14 @@ int main(int argc, char *argv[])
u16 flags = be16_to_cpu(hdr.flags); u16 flags = be16_to_cpu(hdr.flags);
u16 msglen = be16_to_cpu(hdr.len); u16 msglen = be16_to_cpu(hdr.len);
u8 *msg, *inner; u8 *msg, *inner;
bool deleted, push, ratelimit, zombie; bool deleted, push, ratelimit, zombie, dying;
u32 blockheight; u32 blockheight;
deleted = (flags & GOSSIP_STORE_DELETED_BIT); deleted = (flags & GOSSIP_STORE_DELETED_BIT);
push = (flags & GOSSIP_STORE_PUSH_BIT); push = (flags & GOSSIP_STORE_PUSH_BIT);
ratelimit = (flags & GOSSIP_STORE_RATELIMIT_BIT); ratelimit = (flags & GOSSIP_STORE_RATELIMIT_BIT);
zombie = (flags & GOSSIP_STORE_ZOMBIE_BIT); zombie = (flags & GOSSIP_STORE_ZOMBIE_BIT);
dying = (flags & GOSSIP_STORE_DYING_BIT);
msg = tal_arr(NULL, u8, msglen); msg = tal_arr(NULL, u8, msglen);
if (read(fd, msg, msglen) != msglen) if (read(fd, msg, msglen) != msglen)
@ -84,11 +85,12 @@ int main(int argc, char *argv[])
!= crc32c(be32_to_cpu(hdr.timestamp), msg, msglen)) != crc32c(be32_to_cpu(hdr.timestamp), msg, msglen))
warnx("Checksum verification failed"); warnx("Checksum verification failed");
printf("%zu: %s%s%s%s", off, printf("%zu: %s%s%s%s%s", off,
deleted ? "DELETED " : "", deleted ? "DELETED " : "",
push ? "PUSH " : "", push ? "PUSH " : "",
ratelimit ? "RATE-LIMITED " : "", ratelimit ? "RATE-LIMITED " : "",
zombie ? "ZOMBIE " : ""); zombie ? "ZOMBIE " : "",
dying ? "DYING " : "");
if (print_timestamp) if (print_timestamp)
printf("T=%u ", be32_to_cpu(hdr.timestamp)); printf("T=%u ", be32_to_cpu(hdr.timestamp));
if (deleted && !print_deleted) { if (deleted && !print_deleted) {