BOLT #3: * * htlc 0 direction: remote->local * htlc 0 amount_msat: 1000000 * htlc 0 expiry: 500 * htlc 0 payment_preimage: 0000000000000000000000000000000000000000000000000000000000000000 * htlc 1 direction: remote->local * htlc 1 amount_msat: 2000000 * htlc 1 expiry: 501 * htlc 1 payment_preimage: 0101010101010101010101010101010101010101010101010101010101010101 *
| 139 | * htlc 4 payment_preimage: 0404040404040404040404040404040404040404040404040404040404040404 |
| 140 | */ |
| 141 | static const struct htlc **include_htlcs(struct channel *channel, enum side side) |
| 142 | { |
| 143 | int i; |
| 144 | const struct htlc **htlcs = tal_arr(channel, const struct htlc *, 5); |
| 145 | const struct htlc **changed_htlcs; |
| 146 | u8 *dummy_routing = tal_arr(htlcs, u8, TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)); |
| 147 | bool ret; |
| 148 | |
| 149 | for (i = 0; i < 5; i++) { |
| 150 | struct preimage preimage; |
| 151 | struct sha256 hash; |
| 152 | enum channel_add_err e; |
| 153 | enum side sender; |
| 154 | struct amount_msat msatoshi = AMOUNT_MSAT(0); |
| 155 | |
| 156 | switch (i) { |
| 157 | case 0: |
| 158 | sender = !side; |
| 159 | msatoshi = AMOUNT_MSAT(1000000); |
| 160 | break; |
| 161 | case 1: |
| 162 | sender = !side; |
| 163 | msatoshi = AMOUNT_MSAT(2000000); |
| 164 | break; |
| 165 | case 2: |
| 166 | sender = side; |
| 167 | msatoshi = AMOUNT_MSAT(2000000); |
| 168 | break; |
| 169 | case 3: |
| 170 | sender = side; |
| 171 | msatoshi = AMOUNT_MSAT(3000000); |
| 172 | break; |
| 173 | case 4: |
| 174 | sender = !side; |
| 175 | msatoshi = AMOUNT_MSAT(4000000); |
| 176 | break; |
| 177 | default: |
| 178 | abort(); |
| 179 | } |
| 180 | assert(msatoshi.millisatoshis != 0); |
| 181 | |
| 182 | memset(&preimage, i, sizeof(preimage)); |
| 183 | sha256(&hash, &preimage, sizeof(preimage)); |
| 184 | e = channel_add_htlc(channel, sender, i, msatoshi, 500+i, &hash, |
| 185 | dummy_routing, NULL, NULL, NULL, NULL, true); |
| 186 | assert(e == CHANNEL_ERR_ADD_OK); |
| 187 | htlcs[i] = channel_get_htlc(channel, sender, i); |
| 188 | } |
| 189 | tal_free(dummy_routing); |
| 190 | |
| 191 | /* Now make HTLCs fully committed. */ |
| 192 | changed_htlcs = tal_arr(htlcs, const struct htlc *, 0); |
| 193 | ret = channel_sending_commit(channel, &changed_htlcs); |
| 194 | assert(ret); |
| 195 | ret = channel_rcvd_revoke_and_ack(channel, &changed_htlcs); |
| 196 | assert(ret); |
| 197 | ret = channel_rcvd_commit(channel, &changed_htlcs); |
| 198 | assert(ret); |
no test coverage detected