On Monday 08 July 2013 13:28:29 Johannes Stezenbach wrote: > ifplugd exits with error on newer kernels: > > [ 1264.692730] libphy: eth0 - Link is Down > ifplugd(eth0): netlink packet too small or truncated > ifplugd(eth0): exiting > > I found a fix for a similar issue here, it increases > buffer size from 2048 to 4096: > https://bugs.launchpad.net/ubuntu/+source/ifmetric/+bug/896584 > > > --- busybox-1.21.0/networking/ifplugd.c.orig 2012-12-22 23:39:01.000000000 > +0100 > +++ busybox-1.21.0/networking/ifplugd.c 2013-07-08 13:12:54.372062361 > +0200 > @@ -451,7 +451,7 @@ static smallint detect_link(void) > static NOINLINE int check_existence_through_netlink(void) > { > int iface_len; > - char replybuf[1024]; > + char replybuf[4096]; > > iface_len = strlen(G.iface); > while (1) {
Hi, can you try if the attached patch fixes your problem. Compiled and tested on my box where it works (as before): debian:~/Desktop/SourceCode/busybox$ ./busybox ifplugd -naIM eth0 ifplugd(eth0): started: BusyBox v1.22.0.git (2013-06-30 11:08:29 CEST) ifplugd(eth0): using IFF_RUNNING detection mode ifplugd(eth0): interface exists ifplugd(eth0): link is up ifplugd(eth0): executing '/etc/ifplugd/ifplugd.action eth0 up' ifplugd(eth0): exit code: 255 ifplugd(eth0): link is down ifplugd(eth0): executing '/etc/ifplugd/ifplugd.action eth0 down' ifplugd(eth0): exit code: 255 ifplugd(eth0): link is up ifplugd(eth0): executing '/etc/ifplugd/ifplugd.action eth0 up' ifplugd(eth0): exit code: 255 ^Cifplugd(eth0): executing '/etc/ifplugd/ifplugd.action eth0 down' ifplugd(eth0): exit code: 255 ifplugd(eth0): exiting Hope this helps. Ciao, Tito diff -uNp networking/ifplugd.c.orig networking/ifplugd.c --- networking/ifplugd.c.orig 2013-07-08 22:51:22.748468426 +0200 +++ networking/ifplugd.c 2013-07-08 22:52:45.687231145 +0200 @@ -448,10 +448,12 @@ static smallint detect_link(void) return status; } +#define MAX_PAYLOAD 1024 /* maximum payload size*/ + static NOINLINE int check_existence_through_netlink(void) { int iface_len; - char replybuf[1024]; + char replybuf[NLMSG_SPACE(MAX_PAYLOAD)]; iface_len = strlen(G.iface); while (1) {
Fix size of buffer to fit aligned header and payload of netlink message. Signed-off-by: Tito Ragusa <farmat...@tiscali.it> --- networking/ifplugd.c.orig 2013-07-08 22:51:22.748468426 +0200 +++ networking/ifplugd.c 2013-07-08 22:52:45.687231145 +0200 @@ -448,10 +448,12 @@ static smallint detect_link(void) return status; } +#define MAX_PAYLOAD 1024 /* maximum payload size*/ + static NOINLINE int check_existence_through_netlink(void) { int iface_len; - char replybuf[1024]; + char replybuf[NLMSG_SPACE(MAX_PAYLOAD)]; iface_len = strlen(G.iface); while (1) {
_______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox