Quería compartir algunos conocimientos que aprendí cuando me encontré con problemas al usar libpcap y resoplar para detectar un enlace de red de alta capacidad (1 GB full duplex; 2 GB máximo agregado). Las aplicaciones detectarían todo el tráfico con éxito, pero se bloquearían cuando el tamaño del archivo alcanzara los 2 GB capturados.
Si tiene problemas para crear archivos de 2 GB, a pesar de que tiene un sistema de archivos que lo admite y / o sabe que el núcleo lo admite, esto es para usted.
Respuestas:
La compatibilidad con archivos grandes (> 2 GB) para Linux debe abordarse en tres ubicaciones separadas para garantizar que no se encuentre con el límite de tamaño máximo de archivo de 2 GB:
Soporte de archivos grandes habilitado en el kernel
Un sistema de archivos que admite archivos de gran tamaño (muchos sistemas de archivos basados en Linux lo hacen (ext3, reiserfs> = 3.6, etc.))
Soporte de archivos grandes dentro de las bibliotecas o aplicaciones utilizadas
El soporte del kernel para archivos grandes ha existido desde 2.4.0-test7; Si utiliza un núcleo personalizado, asegúrese de haber incluido las opciones de archivos grandes.
La mayoría de los sistemas de archivos de Linux admiten archivos de gran tamaño, pero puede tener problemas al usar un sistema de archivos de red.
Por último, las bibliotecas (es decir, libpcap) y las aplicaciones deben compilarse con las opciones gcc -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64. Verifique para asegurarse de que los paquetes que está utilizando vienen precompilados con estas opciones o enrolle los suyos.
Ver aquí para más detalles.
fuente
_FILE_OFFSET_BITS
pasaO_LARGEFILE
a laopen
llamada al sistema en el arco correcto, pero_FILE_OFFSET_BITS
se prefiere para la portabilidad: stackoverflow.com/questions/2888425/…Parece que este es un problema con libpcap ... Como se indicó en la primera respuesta.
Vuelva a compilar libpcap o busque otra versión.
fuente