Update to match spec: "BOLT7: Reorder feature bitmaps in order to allow future changes"

aka. a257554456cda98afd1532c302c0e5e84de0455e

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2017-08-03 11:15:04 +09:30 committed by Christian Decker
parent 2b7c091e70
commit 40895e4550
6 changed files with 41 additions and 38 deletions

View File

@ -75,16 +75,16 @@ static void broadcast_node_announcement(struct lightningd_state *dstate)
address = write_ip(tmpctx, dstate->external_ip, dstate->portnum);
serialized = towire_node_announcement(tmpctx, &signature,
NULL,
timestamp,
&dstate->id, rgb_color, alias,
NULL,
address);
privkey_sign(dstate, serialized + 66, tal_count(serialized) - 66,
&signature);
serialized = towire_node_announcement(tmpctx, &signature,
NULL,
timestamp,
&dstate->id, rgb_color, alias,
NULL,
address);
u8 *tag = tal_arr(tmpctx, u8, 0);
towire_pubkey(&tag, &dstate->id);
@ -147,24 +147,24 @@ static void broadcast_channel_announcement(struct lightningd_state *dstate, stru
&node_signature[1],
&bitcoin_signature[0],
&bitcoin_signature[1],
NULL,
&short_channel_id,
node_id[0],
node_id[1],
bitcoin_key[0],
bitcoin_key[1],
NULL);
bitcoin_key[1]);
privkey_sign(dstate, serialized + 256, tal_count(serialized) - 256, my_node_signature);
serialized = towire_channel_announcement(tmpctx, &node_signature[0],
&node_signature[1],
&bitcoin_signature[0],
&bitcoin_signature[1],
NULL,
&short_channel_id,
node_id[0],
node_id[1],
bitcoin_key[0],
bitcoin_key[1],
NULL);
bitcoin_key[1]);
u8 *tag = tal_arr(tmpctx, u8, 0);
towire_short_channel_id(&tag, &short_channel_id);
queue_broadcast(dstate->rstate->broadcasts, WIRE_CHANNEL_ANNOUNCEMENT,

View File

@ -706,10 +706,10 @@ void handle_channel_announcement(
&node_signature_1, &node_signature_2,
&bitcoin_signature_1,
&bitcoin_signature_2,
&features,
&short_channel_id,
&node_id_1, &node_id_2,
&bitcoin_key_1, &bitcoin_key_2,
&features)) {
&bitcoin_key_1, &bitcoin_key_2)) {
tal_free(tmpctx);
return;
}
@ -866,8 +866,8 @@ void handle_node_announcement(
serialized = tal_dup_arr(tmpctx, u8, node_ann, len, 0);
if (!fromwire_node_announcement(tmpctx, serialized, NULL,
&signature, &timestamp,
&node_id, rgb_color, alias, &features,
&signature, &features, &timestamp,
&node_id, rgb_color, alias,
&addresses)) {
tal_free(tmpctx);
return;

View File

@ -265,9 +265,10 @@ static u8 *create_channel_announcement(const tal_t *ctx, struct peer *peer)
&peer->announcement_node_sigs[second],
&peer->announcement_bitcoin_sigs[first],
&peer->announcement_bitcoin_sigs[second],
features,
&peer->short_channel_ids[LOCAL], &peer->node_ids[first],
&peer->node_ids[second], &peer->channel->funding_pubkey[first],
&peer->channel->funding_pubkey[second], features);
&peer->channel->funding_pubkey[second]);
tal_free(features);
return cannounce;
}

View File

@ -988,8 +988,8 @@ static u8 *create_node_announcement(const tal_t *ctx, struct lightningd *ld,
}
memset(alias, 0, sizeof(alias));
announcement =
towire_node_announcement(ctx, sig, timestamp, &ld->dstate.id, rgb,
alias, features, addresses);
towire_node_announcement(ctx, sig, features, timestamp,
&ld->dstate.id, rgb, alias, addresses);
return announcement;
}

View File

@ -112,21 +112,21 @@ channel_announcement,0,node_signature_1,64
channel_announcement,64,node_signature_2,64
channel_announcement,128,bitcoin_signature_1,64
channel_announcement,192,bitcoin_signature_2,64
channel_announcement,256,short_channel_id,8
channel_announcement,264,node_id_1,33
channel_announcement,297,node_id_2,33
channel_announcement,330,bitcoin_key_1,33
channel_announcement,363,bitcoin_key_2,33
channel_announcement,396,len,2
channel_announcement,398,features,len
channel_announcement,256,len,2
channel_announcement,258,features,len
channel_announcement,258+len,short_channel_id,8
channel_announcement,266+len,node_id_1,33
channel_announcement,299+len,node_id_2,33
channel_announcement,332+len,bitcoin_key_1,33
channel_announcement,365+len,bitcoin_key_2,33
node_announcement,257
node_announcement,0,signature,64
node_announcement,64,timestamp,4
node_announcement,68,node_id,33
node_announcement,101,rgb_color,3
node_announcement,104,alias,32
node_announcement,136,flen,2
node_announcement,138,features,flen
node_announcement,64,flen,2
node_announcement,66,features,flen
node_announcement,66+flen,timestamp,4
node_announcement,70+flen,node_id,33
node_announcement,103+flen,rgb_color,3
node_announcement,106+flen,alias,32
node_announcement,138+flen,addrlen,2
node_announcement,140+flen,addresses,addrlen
channel_update,258

View File

@ -192,12 +192,12 @@ struct msg_channel_announcement {
secp256k1_ecdsa_signature node_signature_2;
secp256k1_ecdsa_signature bitcoin_signature_1;
secp256k1_ecdsa_signature bitcoin_signature_2;
u8 *features;
struct short_channel_id short_channel_id;
struct pubkey node_id_1;
struct pubkey node_id_2;
struct pubkey bitcoin_key_1;
struct pubkey bitcoin_key_2;
struct short_channel_id short_channel_id;
u8 *features;
};
struct msg_init {
u8 *globalfeatures;
@ -224,12 +224,12 @@ static void *towire_struct_channel_announcement(const tal_t *ctx,
&s->node_signature_2,
&s->bitcoin_signature_1,
&s->bitcoin_signature_2,
s->features,
&s->short_channel_id,
&s->node_id_1,
&s->node_id_2,
&s->bitcoin_key_1,
&s->bitcoin_key_2,
s->features);
&s->bitcoin_key_2);
}
static struct msg_channel_announcement *fromwire_struct_channel_announcement(const tal_t *ctx, const void *p, size_t *plen)
@ -240,12 +240,12 @@ static struct msg_channel_announcement *fromwire_struct_channel_announcement(con
&s->node_signature_2,
&s->bitcoin_signature_1,
&s->bitcoin_signature_2,
&s->features,
&s->short_channel_id,
&s->node_id_1,
&s->node_id_2,
&s->bitcoin_key_1,
&s->bitcoin_key_2,
&s->features))
&s->bitcoin_key_2))
return tal_free(s);
return s;
}
@ -345,24 +345,25 @@ static void *towire_struct_node_announcement(const tal_t *ctx,
{
return towire_node_announcement(ctx,
&s->signature,
s->features,
s->timestamp,
&s->node_id,
s->rgb_color,
s->alias,
s->features,
s->addresses);
}
static struct msg_node_announcement *fromwire_struct_node_announcement(const tal_t *ctx, const void *p, size_t *plen)
{
struct msg_node_announcement *s = tal(ctx, struct msg_node_announcement);
if (!fromwire_node_announcement(s, p, plen,
if (!fromwire_node_announcement(s, p, plen,
&s->signature,
&s->features,
&s->timestamp,
&s->node_id,
s->rgb_color,
s->alias,
&s->features, &s->addresses))
&s->addresses))
return tal_free(s);
return s;
}
@ -697,9 +698,10 @@ static struct msg_init *fromwire_struct_init(const tal_t *ctx, const void *p, si
static bool channel_announcement_eq(const struct msg_channel_announcement *a,
const struct msg_channel_announcement *b)
{
return eq_upto(a, b, short_channel_id) &&
short_channel_id_eq(&a->short_channel_id, &b->short_channel_id)
&& eq_var(a, b, features);
return eq_upto(a, b, features)
&& eq_var(a, b, features)
&& short_channel_id_eq(&a->short_channel_id, &b->short_channel_id)
&& eq_between(a, b, node_id_1, bitcoin_key_2);
}
static bool funding_locked_eq(const struct msg_funding_locked *a,