I'm building BusyBox using a development kit for MontaVista Hardhat Linux
(PPC) -- which, at least in this instance, is based around kernel 2.2.14.
I've had to massage a few files in networking/libiproute/ to make it
compile. Specifically:
(1) Added a #include <sys/uio.h> for the iovec structure in
libnetlink.c,
(2) Put ifdefs in ll_types.c and ll_proto.c around various
constants (ETH_P_xxx and ARPHRD_xxx) that weren't defined,
(3) Make do_changename() in iplink.c require a kernel >=
2.4.0 -- the ifr structure in my environment doesn't
have the ifr_name attribute. I've assumed this is
a kernel dependency -- let me know if I ought to be
checking something else.
In the absence of the correct kernel, do_changename()
always returns 0.
Attached is a patch against the current CVS that will make these changes.
-- Lars
#include <sys/ioctl.h>
#include <sys/socket.h>
+#include <linux/version.h>
#include <errno.h>
#include <stdlib.h>
static int do_changename(char *dev, char *newdev)
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
struct ifreq ifr;
int fd;
int err;
}
close(fd);
return err;
+#endif
+ return 0;
}
static int set_qlen(char *dev, int qlen)
#include <time.h>
#include <unistd.h>
+#include <sys/uio.h>
+
#include "libnetlink.h"
#include "libbb.h"
__PF(AARP,aarp)
__PF(IPX,ipx)
__PF(IPV6,ipv6)
+#ifdef ETH_P_PPP_DISC
__PF(PPP_DISC,ppp_disc)
+#endif
+#ifdef ETH_P_PPP_SES
__PF(PPP_SES,ppp_ses)
+#endif
+#ifdef ETH_P_ATMMPOA
__PF(ATMMPOA,atmmpoa)
+#endif
+#ifdef ETH_P_ATMFATE
__PF(ATMFATE,atmfate)
+#endif
__PF(802_3,802_3)
__PF(AX25,ax25)
__PF(MOBITEX,mobitex)
__PF(CONTROL,control)
__PF(IRDA,irda)
+#ifdef ETH_P_ECONET
__PF(ECONET,econet)
+#endif
{ 0x8100, "802.1Q" },
{ ETH_P_IP, "ipv4" },
__PF(ARCNET,arcnet)
__PF(APPLETLK,atalk)
__PF(DLCI,dlci)
+#ifdef ARPHRD_ATM
__PF(ATM,atm)
+#endif
__PF(METRICOM,metricom)
#ifdef ARPHRD_IEEE1394
__PF(IEEE1394,ieee1394)
__PF(ADAPT,adapt)
__PF(ROSE,rose)
__PF(X25,x25)
+#ifdef ARPHRD_HWX25
__PF(HWX25,hwx25)
+#endif
__PF(PPP,ppp)
__PF(HDLC,hdlc)
__PF(LAPB,lapb)
+#ifdef ARPHRD_DDCMP
__PF(DDCMP,ddcmp)
__PF(RAWHDLC,rawhdlc)
+#endif
__PF(TUNNEL,ipip)
__PF(TUNNEL6,tunnel6)