¿Cuál es el tamaño máximo del mensaje de datagrama AF_UNIX que se puede enviar en Linux?
Actualmente estoy alcanzando un límite estricto de 130688 bytes. Si trato de enviar algo más grande en un mensaje, obtengo un error ENOBUFS.
Verifiqué las opciones sysctl net.core.rmem_default, net.core.wmem_default, net.core.rmem_max, net.core.wmem_max y net.unix.max_dgram_qlen y las aumenté todas, pero no tienen ningún efecto porque tienen que ver con las opciones El tamaño total del búfer no es el tamaño del mensaje.
También he configurado las opciones de socket SO_SNDBUF y SO_RCVBUF, pero esto tiene el mismo problema que el anterior. El tamaño del búfer de socket predeterminado se establece en función de las opciones de socket _default de todos modos.
Miré la fuente del kernel donde se devuelve ENOBUFS en la pila de sockets, pero no estaba claro de dónde provenía. Los únicos lugares que parecen devolver este error tienen que ver con no poder asignar memoria.
¿El tamaño máximo es en realidad 130688? Si no, ¿se puede cambiar esto sin recompilar el núcleo?
¡Gracias!