-/* size of current + ignore message should be n*sumlen bytes (w/o mac) */
-void
-packet_inject_ignore(int sumlen)
-{
- int blocksize, padlen, have, need, nb, mini, nbytes;
- Enc *enc = NULL;
-
- if (compat20 == 0)
- return;
-
- have = buffer_len(&outgoing_packet);
- debug2("packet_inject_ignore: current %d", have);
- if (newkeys[MODE_OUT] != NULL)
- enc = &newkeys[MODE_OUT]->enc;
- blocksize = enc ? enc->cipher->block_size : 8;
- padlen = blocksize - (have % blocksize);
- if (padlen < 4)
- padlen += blocksize;
- have += padlen;
- have /= blocksize; /* # of blocks for current message */
-
- nb = roundup(sumlen, blocksize) / blocksize; /* blocks for both */
- mini = roundup(5+1+4+4, blocksize) / blocksize; /* minsize ignore msg */
- need = nb - (have % nb); /* blocks for ignore */
- if (need <= mini)
- need += nb;
- nbytes = (need - mini) * blocksize; /* size of ignore payload */
- debug2("packet_inject_ignore: block %d have %d nb %d mini %d need %d",
- blocksize, have, nb, mini, need);
-
- /* enqueue current message and append a ignore message */
- packet_send();
- packet_send_ignore(nbytes);
-}
-