| 788 | } |
| 789 | |
| 790 | struct addrinfo *wireaddr_to_addrinfo(const tal_t *ctx, |
| 791 | const struct wireaddr *wireaddr) |
| 792 | { |
| 793 | struct addrinfo *ai = talz(ctx, struct addrinfo); |
| 794 | struct sockaddr_in *sin; |
| 795 | struct sockaddr_in6 *sin6; |
| 796 | |
| 797 | ai->ai_socktype = SOCK_STREAM; |
| 798 | |
| 799 | switch (wireaddr->type) { |
| 800 | case ADDR_TYPE_IPV4: |
| 801 | sin = tal(ai, struct sockaddr_in); |
| 802 | wireaddr_to_ipv4(wireaddr, sin); |
| 803 | ai->ai_family = sin->sin_family; |
| 804 | ai->ai_addrlen = sizeof(*sin); |
| 805 | ai->ai_addr = (struct sockaddr *)sin; |
| 806 | return ai; |
| 807 | case ADDR_TYPE_IPV6: |
| 808 | sin6 = tal(ai, struct sockaddr_in6); |
| 809 | wireaddr_to_ipv6(wireaddr, sin6); |
| 810 | ai->ai_family = sin6->sin6_family; |
| 811 | ai->ai_addrlen = sizeof(*sin6); |
| 812 | ai->ai_addr = (struct sockaddr *)sin6; |
| 813 | return ai; |
| 814 | case ADDR_TYPE_TOR_V2_REMOVED: |
| 815 | case ADDR_TYPE_TOR_V3: |
| 816 | case ADDR_TYPE_DNS: |
| 817 | case ADDR_TYPE_WEBSOCKET: |
| 818 | break; |
| 819 | } |
| 820 | abort(); |
| 821 | } |
| 822 | |
| 823 | struct wireaddr *fromwire_wireaddr_array(const tal_t *ctx, const u8 *ser) |
| 824 | { |
no test coverage detected