[PATCH alternative] ifplugd: fix netlink recv
Tito
farmatito at tiscali.it
Mon Jul 8 21:20:34 UTC 2013
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) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ifplugd.patch
Type: text/x-patch
Size: 577 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20130708/98e5baf6/attachment.bin>
More information about the busybox
mailing list