Qual é o tamanho máximo da mensagem de datagrama AF_UNIX que pode ser enviada no linux?

Atualmente, estou atingindo um limite rígido de 130688 bytes. Se eu tentar enviar algo maior em uma mensagem, recebo um erro ENOBUFS.

Verifiquei as opções net.core.rmem_default, net.core.wmem_default, net.core.rmem_max, net.core.wmem_max e net.unix.max_dgram_qlen sysctl e as ampliei todas, mas elas não têm efeito, pois elas lidam com o tamanho total do buffer, não o tamanho da mensagem.

Também defini as opções de soquete SO_SNDBUF e SO_RCVBUF, mas isso tem o mesmo problema que acima. O tamanho padrão do buffer de soquete é definido com base nas opções de soquete _default de qualquer maneira.

Eu olhei para a fonte do kernel onde ENOBUFS é retornado na pilha de soquetes, mas não estava claro para mim de onde vinha. Os únicos lugares que parecem retornar esse erro têm a ver com não poder alocar memória.

O tamanho máximo é realmente 130688? Caso contrário, isso pode ser alterado sem recompilar o kernel?

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion