2009-10-05 21 views
6

Estoy intentando el código dado en la Programación de Red Unix por Richard Stevens. pero no puedo obtener el código para compilar.¿Qué paquete necesito instalar para usar los sockets de enrutamiento?

aquí está el código fuente. http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/

no tengo el archivo de cabecera neta/if_dl.h y el archivo de cabecera de red/route.h no incluye las constantes y estructuras que utiliza el código.

+0

¿Has grepped para ver si las constantes están en un archivo de encabezado diferente? Es posible que se haya movido en los últimos 8 años. –

Respuesta

4

Esa es una API específica de BSD, y linux no la admite. La funcionalidad equivalente (no compatible con el origen) la proporciona la familia de sockets de enlace de red . "man 7 netlink" debería comenzar, pero es probable que necesite hacer algún trabajo de transferencia.

3

No estoy en una máquina en la que pueda hacer esto ahora, pero quizás aún pueda ayudar. Si su distribución utiliza yum (por ejemplo RHEL):

yum provides if_dl.h 

O si utiliza apt (por ejemplo Ubuntu/Debian):

sudo apt-get install apt-file 
sudo apt-file update 
apt-file search if_dl.h 

Si apt-file ya está instalado, no será necesario el primer paso , y no puedo recordar con certeza si el segundo es. Además, creo que ambos gestores de paquetes trabajan tanto con nombre de archivo como con ruta completa.

Esperamos que esto funcione para usted u otra persona que lea esto, ¡y obtendrá su respuesta!

+0

Estoy suse 11 –

5

Tenga en cuenta, no es necesario hacer en esa carpeta "libroute"

Ver el documento:

cd ../libroute # only if your system supports 4.4BSD style routing sockets 
make   # only if your system supports 4.4BSD style routing sockets 

cd ../libxti # only if your system supports XTI 
make   # only if your system supports XTI 

Linux no es el enrutamiento de tipo BSD, basta con ir a ../intro y construir ejemplos ~!

0

intente copiar un if_dl.h de la red y póngalo en/usr/include/net. puede ser que funcione y tal vez necesite otras librerías. Quizás mi inglés no sea tan bueno. Perdóname.

+2

Primero debe reproducir el problema en su entorno y proporcionar una solución concreta, en lugar de respuestas "intente/quizás". StackOverflow no es un foro de discusión. Es un sitio de preguntas/respuestas, por lo que su respuesta debe verificarse completamente antes de publicarla. –

Cuestiones relacionadas