diff --git a/common/type_to_string.h b/common/type_to_string.h index 02f63e14a..87b929105 100644 --- a/common/type_to_string.h +++ b/common/type_to_string.h @@ -18,7 +18,6 @@ union printable_types { const struct preimage *preimage; const struct channel_state *channel_state; const struct channel_oneside *channel_oneside; - const struct netaddr *netaddr; const secp256k1_pubkey *secp256k1_pubkey; const struct channel_id *channel_id; const struct short_channel_id *short_channel_id; diff --git a/gossipd/Makefile b/gossipd/Makefile index 7f91f0407..26b8e60e7 100644 --- a/gossipd/Makefile +++ b/gossipd/Makefile @@ -52,8 +52,7 @@ GOSSIPD_COMMON_OBJS := \ common/wire_error.o \ hsmd/client.o \ hsmd/gen_hsm_client_wire.o \ - lightningd/gossip_msg.o \ - lightningd/netaddr.o + lightningd/gossip_msg.o $(LIGHTNINGD_GOSSIP_OBJS) $(LIGHTNINGD_GOSSIP_CLIENT_OBJS): $(LIGHTNINGD_HEADERS) diff --git a/lightningd/Makefile b/lightningd/Makefile index 5668a3729..e4401f53d 100644 --- a/lightningd/Makefile +++ b/lightningd/Makefile @@ -49,7 +49,6 @@ LIGHTNINGD_SRC := \ lightningd/jsonrpc.c \ lightningd/lightningd.c \ lightningd/log.c \ - lightningd/netaddr.c \ lightningd/opt_time.c \ lightningd/options.c \ lightningd/pay.c \ diff --git a/lightningd/jsonrpc.c b/lightningd/jsonrpc.c index 596c495c2..ef7c718d2 100644 --- a/lightningd/jsonrpc.c +++ b/lightningd/jsonrpc.c @@ -248,7 +248,7 @@ static void json_getinfo(struct command *cmd, json_object_start(response, NULL); json_add_pubkey(response, "id", &cmd->ld->id); - /* FIXME: Keep netaddrs and list them all. */ + /* FIXME: Keep ipaddr and list them all. */ if (cmd->ld->portnum) json_add_num(response, "port", cmd->ld->portnum); json_add_string(response, "network", diff --git a/lightningd/netaddr.c b/lightningd/netaddr.c deleted file mode 100644 index 9ce429dfd..000000000 --- a/lightningd/netaddr.c +++ /dev/null @@ -1,90 +0,0 @@ -#include "bitcoin/pullpush.h" -#include "netaddr.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void netaddr_to_addrinfo(struct addrinfo *ai, const struct netaddr *a) -{ - ai->ai_flags = 0; - ai->ai_family = a->saddr.s.sa_family; - ai->ai_socktype = a->type; - ai->ai_protocol = a->protocol; - ai->ai_addrlen = a->addrlen; - ai->ai_addr = cast_const(struct sockaddr *, &a->saddr.s); - ai->ai_canonname = NULL; - ai->ai_next = NULL; -} - -char *netaddr_name(const tal_t *ctx, const struct netaddr *a) -{ - char name[INET6_ADDRSTRLEN]; - const void *sockaddr; - uint16_t port; - - switch (a->saddr.s.sa_family) { - case AF_INET: - sockaddr = &a->saddr.ipv4.sin_addr; - port = ntohs(a->saddr.ipv4.sin_port); - break; - case AF_INET6: - sockaddr = &a->saddr.ipv6.sin6_addr; - port = ntohs(a->saddr.ipv6.sin6_port); - break; - default: - return tal_fmt(ctx, "Unknown protocol %u", a->saddr.s.sa_family); - } - - if (!inet_ntop(a->saddr.s.sa_family, sockaddr, name, sizeof(name))) - sprintf(name, "Unprintable-%u-address", a->saddr.s.sa_family); - - return tal_fmt(ctx, "%s:%u", name, port); -} - -char *netaddr_to_hex(const tal_t *ctx, const struct netaddr *a) -{ - u8 *blob = tal_arr(ctx, u8, 0); - char *hex; - - push_le32(a->type, push, &blob); - push_le32(a->protocol, push, &blob); - push_le32(a->addrlen, push, &blob); - assert(a->addrlen <= sizeof(a->saddr)); - push(&a->saddr, a->addrlen, &blob); - - hex = tal_hex(ctx, blob); - tal_free(blob); - return hex; -} - -bool netaddr_from_blob(const void *linear, size_t len, struct netaddr *a) -{ - const u8 *p = linear; - - a->type = pull_le32(&p, &len); - a->protocol = pull_le32(&p, &len); - a->addrlen = pull_le32(&p, &len); - if (a->addrlen > sizeof(a->saddr)) - return false; - pull(&p, &len, &a->saddr, a->addrlen); - return p != NULL && len == 0; -} - -bool netaddr_from_fd(int fd, int type, int protocol, struct netaddr *a) -{ - a->type = type; - a->protocol = protocol; - a->addrlen = sizeof(a->saddr); - return getpeername(fd, &a->saddr.s, &a->addrlen) == 0; -} - -REGISTER_TYPE_TO_STRING(netaddr, netaddr_name); diff --git a/lightningd/netaddr.h b/lightningd/netaddr.h deleted file mode 100644 index 342bbe132..000000000 --- a/lightningd/netaddr.h +++ /dev/null @@ -1,35 +0,0 @@ -/* FIXME: We should deprecate this in favor of BOLT7 address descriptor */ -#ifndef LIGHTNING_LIGHTNINGD_NETADDR_H -#define LIGHTNING_LIGHTNINGD_NETADDR_H -#include "config.h" -#include -#include -#include -#include - -struct addrinfo; - -/* This can be extended to support other protocols in future. */ -struct netaddr { - int type; /* See socket(2): SOCK_STREAM currently */ - int protocol; /* See socket(2): 0 currently */ - socklen_t addrlen; - union { - struct sockaddr s; - struct sockaddr_in ipv4; - struct sockaddr_in6 ipv6; - } saddr; -}; - -/* Get the name for this netaddr. */ -char *netaddr_name(const tal_t *ctx, const struct netaddr *a); - -/* Create a addrinfo (as wanted by io_connect) for this address. */ -void netaddr_to_addrinfo(struct addrinfo *ai, const struct netaddr *a); - -bool netaddr_from_fd(int fd, int type, int protocol, struct netaddr *a); - -bool netaddr_from_blob(const void *linear, size_t len, struct netaddr *a); -char *netaddr_to_hex(const tal_t *ctx, const struct netaddr *a); - -#endif /* LIGHTNING_LIGHTNINGD_NETADDR_H */ diff --git a/lightningd/peer_control.c b/lightningd/peer_control.c index ad1b2dffa..566b26444 100644 --- a/lightningd/peer_control.c +++ b/lightningd/peer_control.c @@ -1,6 +1,7 @@ #include "lightningd.h" #include "peer_control.h" #include "subd.h" +#include #include #include #include @@ -347,12 +348,6 @@ static struct peer *new_peer(struct lightningd *ld, /* peer->channel gets populated as soon as we start opening a channel */ peer->channel = NULL; - /* FIXME: Don't assume protocol here! */ - if (!netaddr_from_fd(peer_fd, SOCK_STREAM, IPPROTO_TCP, &peer->netaddr)) { - log_unusual(ld->log, "Failed to get netaddr for outgoing: %s", - strerror(errno)); - return tal_free(peer); - } list_add_tail(&ld->peers, &peer->list); populate_peer(ld, peer); @@ -790,6 +785,28 @@ static void log_to_json(unsigned int skipped, json_add_string(info->response, NULL, log); } +static const char *ipaddr_name(const tal_t *ctx, const struct ipaddr *a) +{ + char name[INET6_ADDRSTRLEN]; + int af; + + switch (a->type) { + case ADDR_TYPE_IPV4: + af = AF_INET; + break; + case ADDR_TYPE_IPV6: + af = AF_INET6; + break; + default: + return tal_fmt(ctx, "Unknown type %u", a->type); + } + + if (!inet_ntop(af, a->addr, name, sizeof(name))) + sprintf(name, "Unprintable-%u-address", a->type); + + return tal_fmt(ctx, "%s:%u", name, a->port); +} + static void json_getpeers(struct command *cmd, const char *buffer, const jsmntok_t *params) { @@ -821,7 +838,7 @@ static void json_getpeers(struct command *cmd, json_object_start(response, NULL); json_add_string(response, "state", peer_state_name(p->state)); json_add_string(response, "netaddr", - netaddr_name(response, &p->netaddr)); + ipaddr_name(response, &p->addr)); json_add_pubkey(response, "peerid", &p->id); json_add_bool(response, "connected", p->owner != NULL); if (p->owner) @@ -2221,7 +2238,6 @@ static void peer_accept_channel(struct lightningd *ld, { u32 max_to_self_delay, max_minimum_depth; u64 min_effective_htlc_capacity_msat; - u8 *errmsg; u8 *msg; struct peer *peer; @@ -2229,13 +2245,6 @@ static void peer_accept_channel(struct lightningd *ld, /* We make a new peer. */ peer = new_peer(ld, peer_id, addr, gfeatures, lfeatures, peer_fd); - - /* FIXME: Only happens due to netaddr fail. */ - if (!peer) { - errmsg = towire_errorfmt(ld, NULL, "Can't resolve your address"); - goto peer_to_gossipd; - } - peer_set_condition(peer, UNINITIALIZED, OPENINGD); peer_set_owner(peer, new_peer_subd(ld, "lightning_openingd", peer, @@ -2285,17 +2294,6 @@ static void peer_accept_channel(struct lightningd *ld, subd_req(peer, peer->owner, take(msg), -1, 2, opening_fundee_finished, peer); - return; - -peer_to_gossipd: - /* Return to gossipd, with optional error msg to send. */ - msg = towire_gossipctl_handle_peer(ld, peer_id, addr, cs, - gfeatures, lfeatures, errmsg); - subd_send_msg(ld->gossip, take(msg)); - subd_send_fd(ld->gossip, peer_fd); - close(gossip_fd); - tal_free(errmsg); - return; } static void peer_offer_channel(struct lightningd *ld, @@ -2313,16 +2311,6 @@ static void peer_offer_channel(struct lightningd *ld, /* We make a new peer. */ fc->peer = new_peer(ld, &fc->peerid, addr, gfeatures, lfeatures, peer_fd); - - /* FIXME: Only happens due to netaddr fail. */ - if (!fc->peer) { - command_fail(fc->cmd, - "Failed to make peer: Can't resolve address: %s", - strerror(errno)); - close(peer_fd); - close(gossip_fd); - return; - } fc->peer->funding_satoshi = fc->funding_satoshi; fc->peer->push_msat = fc->push_msat; diff --git a/lightningd/peer_control.h b/lightningd/peer_control.h index 6c1971b29..6eb00ae13 100644 --- a/lightningd/peer_control.h +++ b/lightningd/peer_control.h @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include @@ -55,7 +54,6 @@ struct peer { u8 channel_flags; /* Where we connected to, or it connected from. */ - struct netaddr netaddr; struct ipaddr addr; /* Our channel config. */