| 116 | } |
| 117 | |
| 118 | bool fromwire_wireaddr_internal(const u8 **cursor, size_t *max, |
| 119 | struct wireaddr_internal *addr) |
| 120 | { |
| 121 | addr->itype = fromwire_u8(cursor, max); |
| 122 | switch (addr->itype) { |
| 123 | case ADDR_INTERNAL_SOCKNAME: |
| 124 | fromwire_u8_array(cursor, max, (u8 *)addr->u.sockname, |
| 125 | sizeof(addr->u.sockname)); |
| 126 | /* Must be NUL terminated */ |
| 127 | if (!memchr(addr->u.sockname, 0, sizeof(addr->u.sockname))) |
| 128 | fromwire_fail(cursor, max); |
| 129 | return *cursor != NULL; |
| 130 | case ADDR_INTERNAL_ALLPROTO: |
| 131 | addr->u.port = fromwire_u16(cursor, max); |
| 132 | return *cursor != NULL; |
| 133 | case ADDR_INTERNAL_AUTOTOR: |
| 134 | fromwire_wireaddr(cursor, max, &addr->u.torservice.address); |
| 135 | addr->u.torservice.port = fromwire_u16(cursor, max); |
| 136 | return *cursor != NULL; |
| 137 | case ADDR_INTERNAL_STATICTOR: |
| 138 | fromwire_wireaddr(cursor, max, &addr->u.torservice.address); |
| 139 | fromwire_u8_array(cursor, max, (u8 *)addr->u.torservice.blob, |
| 140 | sizeof(addr->u.torservice.blob)); |
| 141 | addr->u.torservice.port = fromwire_u16(cursor, max); |
| 142 | return *cursor != NULL; |
| 143 | case ADDR_INTERNAL_WIREADDR: |
| 144 | return fromwire_wireaddr(cursor, max, &addr->u.wireaddr); |
| 145 | case ADDR_INTERNAL_FORPROXY: |
| 146 | fromwire_u8_array(cursor, max, (u8 *)addr->u.unresolved.name, |
| 147 | sizeof(addr->u.unresolved.name)); |
| 148 | /* Must be NUL terminated */ |
| 149 | if (!memchr(addr->u.unresolved.name, 0, |
| 150 | sizeof(addr->u.unresolved.name))) |
| 151 | fromwire_fail(cursor, max); |
| 152 | addr->u.unresolved.port = fromwire_u16(cursor, max); |
| 153 | return *cursor != NULL; |
| 154 | } |
| 155 | fromwire_fail(cursor, max); |
| 156 | return false; |
| 157 | } |
| 158 | |
| 159 | void wireaddr_from_ipv4(struct wireaddr *addr, |
| 160 | const struct in_addr *ip4, |
nothing calls this directly
no test coverage detected