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 *
| 125 | * htlc 4 payment_preimage: 0404040404040404040404040404040404040404040404040404040404040404 |
| 126 | */ |
| 127 | static const struct htlc **include_htlcs(struct channel *channel, enum side side) |
| 128 | { |
| 129 | int i; |
| 130 | const struct htlc **htlcs = tal_arr(channel, const struct htlc *, 5); |
| 131 | const struct htlc **changed_htlcs; |
| 132 | u8 *dummy_routing = tal_arr(htlcs, u8, TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)); |
| 133 | bool ret; |
| 134 | |
| 135 | for (i = 0; i < 5; i++) { |
| 136 | struct preimage preimage; |
| 137 | struct sha256 hash; |
| 138 | enum channel_add_err e; |
| 139 | enum side sender; |
| 140 | struct amount_msat msatoshi = AMOUNT_MSAT(0); |
| 141 | |
| 142 | switch (i) { |
| 143 | case 0: |
| 144 | sender = !side; |
| 145 | msatoshi = AMOUNT_MSAT(1000000); |
| 146 | break; |
| 147 | case 1: |
| 148 | sender = !side; |
| 149 | msatoshi = AMOUNT_MSAT(2000000); |
| 150 | break; |
| 151 | case 2: |
| 152 | sender = side; |
| 153 | msatoshi = AMOUNT_MSAT(2000000); |
| 154 | break; |
| 155 | case 3: |
| 156 | sender = side; |
| 157 | msatoshi = AMOUNT_MSAT(3000000); |
| 158 | break; |
| 159 | case 4: |
| 160 | sender = !side; |
| 161 | msatoshi = AMOUNT_MSAT(4000000); |
| 162 | break; |
| 163 | default: |
| 164 | abort(); |
| 165 | } |
| 166 | assert(msatoshi.millisatoshis != 0); |
| 167 | |
| 168 | memset(&preimage, i, sizeof(preimage)); |
| 169 | sha256(&hash, &preimage, sizeof(preimage)); |
| 170 | e = channel_add_htlc(channel, sender, i, msatoshi, 500+i, &hash, |
| 171 | dummy_routing, NULL, NULL, NULL, true); |
| 172 | assert(e == CHANNEL_ERR_ADD_OK); |
| 173 | htlcs[i] = channel_get_htlc(channel, sender, i); |
| 174 | } |
| 175 | tal_free(dummy_routing); |
| 176 | |
| 177 | /* Now make HTLCs fully committed. */ |
| 178 | changed_htlcs = tal_arr(htlcs, const struct htlc *, 0); |
| 179 | ret = channel_sending_commit(channel, &changed_htlcs); |
| 180 | assert(ret); |
| 181 | ret = channel_rcvd_revoke_and_ack(channel, &changed_htlcs); |
| 182 | assert(ret); |
| 183 | ret = channel_rcvd_commit(channel, &changed_htlcs); |
| 184 | assert(ret); |
no test coverage detected