The destination is a bit easier since all the appropriate values will be sent in the incoming message from the process manager's task call:
struct vir_addr dst;
dst.proc_nr_e = (extract this from the message)
dst.segment = D;
dst.offset = (vir_bytes) (extract this from the message)
Note: vir_bytes is defined as unsigned int in my Minix 3.