| 824 | } |
| 825 | |
| 826 | struct addrinfo *wireaddr_to_addrinfo(const tal_t *ctx, |
| 827 | const struct wireaddr *wireaddr) |
| 828 | { |
| 829 | struct addrinfo *ai = talz(ctx, struct addrinfo); |
| 830 | struct sockaddr_in *sin; |
| 831 | struct sockaddr_in6 *sin6; |
| 832 | |
| 833 | ai->ai_socktype = SOCK_STREAM; |
| 834 | |
| 835 | switch (wireaddr->type) { |
| 836 | case ADDR_TYPE_IPV4: |
| 837 | sin = tal(ai, struct sockaddr_in); |
| 838 | wireaddr_to_ipv4(wireaddr, sin); |
| 839 | ai->ai_family = sin->sin_family; |
| 840 | ai->ai_addrlen = sizeof(*sin); |
| 841 | ai->ai_addr = (struct sockaddr *)sin; |
| 842 | return ai; |
| 843 | case ADDR_TYPE_IPV6: |
| 844 | sin6 = tal(ai, struct sockaddr_in6); |
| 845 | wireaddr_to_ipv6(wireaddr, sin6); |
| 846 | ai->ai_family = sin6->sin6_family; |
| 847 | ai->ai_addrlen = sizeof(*sin6); |
| 848 | ai->ai_addr = (struct sockaddr *)sin6; |
| 849 | return ai; |
| 850 | case ADDR_TYPE_TOR_V2_REMOVED: |
| 851 | case ADDR_TYPE_TOR_V3: |
| 852 | case ADDR_TYPE_DNS: |
| 853 | break; |
| 854 | } |
| 855 | abort(); |
| 856 | } |
| 857 | |
| 858 | struct wireaddr *fromwire_wireaddr_array(const tal_t *ctx, const u8 *ser) |
| 859 | { |
no test coverage detected