С https://linux.die.net/man/2/recvmsg:
Когда вызывается recvmsg (), msg_controllen должен содержать длину доступного буфера в msg_control;после возврата из успешного вызова он будет содержать длину последовательности управляющих сообщений. Сообщения имеют форму: struct cmsghdr {socklen_t cmsg_len;/ * количество байтов данных, включая hdr / int cmsg_level;/ исходящий протокол / int cmsg_type;/ тип протокола / / , за которым следует unsigned char cmsg_data [];* /};
1) Учитывая, что msg_control является указателем на первый байт, это «длина последовательности управляющего сообщения» размер в байтах всех структур cmsghdr в последовательности, вместе взятыхили число структур cmsghdr в последовательности?
2) Допустимо ли делать побайтную копию структуры msghdr (которая содержит все структуры cmsghdr) и иметь соответствующие макросы (например,CMSG_FIRSTHDR ()) получить доступ к копии так же, как оригинал?