Я пишу приложение для Linux на C, оно будет получать тысячи UDP-сообщений, которые могут иметь переменный размер. Почему-то мне нужно получить размер сообщения, прежде чем читать его в буфер с помощью svcall recvfrom (). Я не могу выделить память для максимально возможного сообщения, потому что, поскольку я использую MTU 9000 и получаю тысячи сообщений, много памяти будет потрачено впустую.
Я проверил в Google, можно узнать, каков размер сообщения с параметром SO_NREAD для syscall getsockopt, однако это работает только на BSD. Я знаю, что сообщение находится где-то в ядре Linux, потому что мои сокеты работают в неблокирующем режиме, и события ядра сообщают мне, что данные доступны, поэтому где-то должно храниться длина сообщения, но как я могу получить это?
Заранее спасибо