File ipxripd-0.7-2.6kernel-fix.diff of Package ipxrip
--- ipxkern.c
+++ ipxkern.c
@@ -31,6 +31,7 @@
#endif
#include <netinet/in.h>
#include "ipxkern.h"
+#include <sys/utsname.h>
#define MAX_IFC (256)
@@ -54,8 +55,16 @@
{
FILE *ipx_route;
char buf[512];
+ struct utsname u;
- ipx_route = fopen("/proc/net/ipx_route", "r");
+ if (uname(&u) != 0) {
+ sprintf(ipx_err_string, "call uname: %s",
+ strerror(errno));
+ return -1;
+ }
+
+ ipx_route = fopen(strncmp(u.version, "2.4", 3) == 0 ?
+ "/proc/net/ipx_route" : "/proc/net/ipx/route", "r");
if (ipx_route == NULL)
{
@@ -112,8 +121,16 @@
{
FILE *ipx_ifc;
char buf[512];
+ struct utsname u;
+
+ if (uname(&u) != 0) {
+ sprintf(ipx_err_string, "call uname: %s",
+ strerror(errno));
+ return -1;
+ }
- ipx_ifc = fopen("/proc/net/ipx_interface", "r");
+ ipx_ifc = fopen(strncmp(u.version, "2.4", 3) == 0 ?
+ "/proc/net/ipx_interface" : "/proc/net/ipx/interface", "r");
if (ipx_ifc == NULL)
{