mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
ee9e300da0
1. The code to skip over padding didn't take into account max. 2. It also didn't use symbolic names. 3. We are not supposed to fail on unknown addresses, just stop parsing. 4. We don't use the read_ip/write_ip code, so get rid of it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
76 lines
2.4 KiB
C
76 lines
2.4 KiB
C
#include <lightningd/gossip_msg.h>
|
|
#include <wire/wire.h>
|
|
|
|
void fromwire_gossip_getnodes_entry(const tal_t *ctx, const u8 **pptr, size_t *max, struct gossip_getnodes_entry *entry)
|
|
{
|
|
u8 numaddresses, i;
|
|
fromwire_pubkey(pptr, max, &entry->nodeid);
|
|
numaddresses = fromwire_u8(pptr, max);
|
|
|
|
entry->addresses = tal_arr(ctx, struct ipaddr, numaddresses);
|
|
for (i=0; i<numaddresses; i++) {
|
|
/* Gossipd doesn't hand us addresses we can't understand. */
|
|
if (!fromwire_ipaddr(pptr, max, entry->addresses)) {
|
|
fromwire_fail(pptr, max);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
void towire_gossip_getnodes_entry(u8 **pptr, const struct gossip_getnodes_entry *entry)
|
|
{
|
|
u8 i, numaddresses = tal_count(entry->addresses);
|
|
towire_pubkey(pptr, &entry->nodeid);
|
|
towire_u8(pptr, numaddresses);
|
|
|
|
for (i=0; i<numaddresses; i++) {
|
|
towire_ipaddr(pptr, &entry->addresses[i]);
|
|
}
|
|
}
|
|
|
|
void fromwire_route_hop(const u8 **pptr, size_t *max, struct route_hop *entry)
|
|
{
|
|
fromwire_pubkey(pptr, max, &entry->nodeid);
|
|
fromwire_short_channel_id(pptr, max, &entry->channel_id);
|
|
entry->amount = fromwire_u32(pptr, max);
|
|
entry->delay = fromwire_u32(pptr, max);
|
|
}
|
|
void towire_route_hop(u8 **pptr, const struct route_hop *entry)
|
|
{
|
|
towire_pubkey(pptr, &entry->nodeid);
|
|
towire_short_channel_id(pptr, &entry->channel_id);
|
|
towire_u32(pptr, entry->amount);
|
|
towire_u32(pptr, entry->delay);
|
|
}
|
|
|
|
void fromwire_gossip_getchannels_entry(const u8 **pptr, size_t *max,
|
|
struct gossip_getchannels_entry *entry)
|
|
{
|
|
fromwire_short_channel_id(pptr, max, &entry->short_channel_id);
|
|
fromwire_pubkey(pptr, max, &entry->source);
|
|
fromwire_pubkey(pptr, max, &entry->destination);
|
|
entry->active = fromwire_bool(pptr, max);
|
|
entry->flags = fromwire_u16(pptr, max);
|
|
entry->last_update_timestamp = fromwire_u64(pptr, max);
|
|
if (entry->last_update_timestamp >= 0) {
|
|
entry->base_fee_msat = fromwire_u32(pptr, max);
|
|
entry->fee_per_millionth = fromwire_u32(pptr, max);
|
|
entry->delay = fromwire_u32(pptr, max);
|
|
}
|
|
}
|
|
|
|
void towire_gossip_getchannels_entry(
|
|
u8 **pptr, const struct gossip_getchannels_entry *entry)
|
|
{
|
|
towire_short_channel_id(pptr, &entry->short_channel_id);
|
|
towire_pubkey(pptr, &entry->source);
|
|
towire_pubkey(pptr, &entry->destination);
|
|
towire_bool(pptr, entry->active);
|
|
towire_u16(pptr, entry->flags);
|
|
towire_u64(pptr, entry->last_update_timestamp);
|
|
if (entry->last_update_timestamp >= 0) {
|
|
towire_u32(pptr, entry->base_fee_msat);
|
|
towire_u32(pptr, entry->fee_per_millionth);
|
|
towire_u32(pptr, entry->delay);
|
|
}
|
|
}
|