#include #include #include #include bool short_channel_id_from_str(const char *str, size_t strlen, struct short_channel_id *dst) { u32 blocknum, txnum; u16 outnum; int matches; char buf[strlen + 1]; memcpy(buf, str, strlen); buf[strlen] = 0; matches = sscanf(buf, "%u:%u:%hu", &blocknum, &txnum, &outnum); dst->blocknum = blocknum; dst->txnum = txnum; dst->outnum = outnum; return matches == 3; } char *short_channel_id_to_str(const tal_t *ctx, const struct short_channel_id *scid) { return tal_fmt(ctx, "%d:%d:%d", scid->blocknum, scid->txnum, scid->outnum); } bool short_channel_id_eq(const struct short_channel_id *a, const struct short_channel_id *b) { return a->blocknum == b->blocknum && a->txnum == b->txnum && a->outnum == b->outnum; } u64 short_channel_id_to_uint(const struct short_channel_id *scid) { return ((u64)scid->blocknum & 0xFFFFFF) << 40 | ((u64)scid->txnum & 0xFFFFFF) << 16 | (scid->outnum & 0xFFFF); }