02 febrero 2009

solucion para compilar ipx en Slackware

Hola,
tengo GNU/Linux Slackware 12.1 con el kernel 2.6.28, y quise compilar unos programas para poder hacer funcionar IPX, estos programas son

ipx_interface.c
ipx_internal_net.c
ipx_route.c
ipx_configure.c

y al aprecer todo eso forma el "ipx-1.0" (digo esto porque no me acuerdo de donde lo baje y no lo encontre de nuevo, aunque al aprecer forma parte de caldera o algo asi) y todos esos los uso para poner en marcha el ipx en la red

bueno, pero resulta que al hacer
$ make
me salian errores como

/usr/include/linux/ipx.h:9: error: expected specifier-qualifier-list before 'sa
_family_t'

/usr/include/linux/ipx.h:26: error: expected specifier-qualifier-list before '_
_be32'

/usr/include/linux/ipx.h:32: error: expected specifier-qualifier-list before '_
_be32'

/usr/include/linux/ipx.h:58: error: expected specifier-qualifier-list before '_
_be32'

ipx_configure.c: In function 'main':

ipx_configure.c:63: error: 'ipx_config_data' undeclared (first use in this func
tion)

quisa hay otra solucion para esto, pero yo le encontre una, hay que modificar dos archivos para que esto ande

antes que nada aviso que pongo
#include asd/cabecera.h
sin los <> (cabecera.h va en el medio de
<>), porque sino desaparece esa linea, asique le quite los <>, ustedes los tienen que agregar

el primer archivo es

/usr/include/linux/ipx.h

en las primeras lineas, tenemos esto (acuerdense de agregar los <>):

#include linux/socket.h


le cambiamos linux por sys, nos queda:

#include sys/socket.h

y justo abajo de esa linea, AGREGAMOS


#include linux/types.h

osea, las primeras lineas de /usr/include/linux/ipx.h son asi:

#ifndef _IPX_H_

#define _IPX_H_

#include linux/sockios.h

#include sys/socket.h

#include linux/types.h

#define IPX_NODE_LEN 6

#define IPX_MTU 576


muy bien, ahora modificamos el archivo ipx_configure.c que esta en la carpeta ipx-1.0
en la linea 64 (o una mas o una menos, dsp de que modifique tanto el ipx_configure.c no estoy seguro de que sea la linea 64, pero esta por ahi) aparece

int got_auto_pri = 0;

int got_auto_itf = 0;

ipx_config_data data;



progname = argv[0];

tenemos que cambiar ipx_config_data data; le agregamos "struct" al principio:

struct ipx_config_data data;

osea, nos queda asi el principio de la funcion main

int s;

int result;

char errmsg[80];

char val;

int option_index = 0;

int got_auto_pri = 0;

int got_auto_itf = 0;

struct ipx_config_data data;


y despues de eso ya pueden compilar y hacer todo lo que quieran con su IPX
espero que a alguien le sirva y no haberme olvidado de nada

salu2!