What warning are you actually getting, here?  Can you not just `pi = (int *)CMSG_DATA(cmsg);` ?