You're right; changing this line to the following seems to compile at least (still untested):
scratch_buffer.ipq = *(ctx->ipq_packet);
Copying the ipq struct may not even be necessary at all: perhaps it suffices to reset the payload pointer and overwrite the old struct, since it seems to get reconstructed for every packet anyway.
You're right; changing this line to the following seems to compile at least (still untested):
scratch_buffer.ipq = *(ctx->ipq_packet);
Copying the ipq struct may not even be necessary at all: perhaps it suffices to reset the payload pointer and overwrite the old struct, since it seems to get reconstructed for every packet anyway.