I have finally get the .config of the kernel, and you are absolutely right, CONFIG_NETDEVICES is not set.
Then, setting it on would solve this udhcpd problem, would it? Do you think that it could affect any other kernel behaviour? As I have seen it is only found in this function and in some isdn issues, so setting it on would always be avisable... 2009/10/16 Denys Vlasenko <vda.li...@googlemail.com> > On Friday 16 October 2009 14:03, Ruben Lagar wrote: > > Thank you for helping with this issue. > > > > I am attaching the init script: > > > > mount -a > > modprobe g_ether > > sleep 1 > > ifconfig usb0 10.0.1.83 netmask 255.255.255.0 > > /usr/sbin/inetd -f& > > sleep 1 > > /usr/sbin/udhcpd > > > > the dmesg output after boot, and the configuration of busybox. > > > > I am working with a device made by another people, so I have not compiled > > the kernel. I have requested them the kernel .config file, so as soon as > I > > receive it, I will be able to email it. > > > > I am really lost with this problem, I have no idea on what may be > > happening.... > > Comparing your dmesg with mine: > > # grep 'Registered protocol family' dmesg.txt dmesg > dmesg.txt:<6>NET: Registered protocol family 16 > dmesg.txt:<6>NET: Registered protocol family 2 > dmesg.txt:<6>NET: Registered protocol family 1 > dmesg.txt:<6>NET: Registered protocol family 17 > dmesg:NET: Registered protocol family 16 > dmesg:NET: Registered protocol family 2 > dmesg:NET: Registered protocol family 1 > dmesg:NET: Registered protocol family 10 > dmesg:NET: Registered protocol family 17 > dmesg:NET: Registered protocol family 15 > > mine only has PF_INET6 and PF_KEY added - > > #define PF_LOCAL 1 /* Local to host (pipes and file-domain). > */ > #define PF_INET 2 /* IP protocol family. */ > #define PF_INET6 10 /* IP version 6. */ > #define PF_KEY 15 /* PF_KEY key management API. */ > #define PF_NETLINK 16 > #define PF_PACKET 17 /* Packet family. */ > > which should not be causing this. > > > Here is the kernel source releavnt to SO_BINDTODEVICE: > > if (optname == SO_BINDTODEVICE) > return sock_bindtodevice(sk, optval, optlen); > ... > ... > static int sock_bindtodevice(struct sock *sk, char __user *optval, int > optlen) > { > int ret = -ENOPROTOOPT; > #ifdef CONFIG_NETDEVICES > struct net *net = sock_net(sk); > char devname[IFNAMSIZ]; > int index; > > /* Sorry... */ > ret = -EPERM; > if (!capable(CAP_NET_RAW)) > goto out; > > ret = -EINVAL; > if (optlen < 0) > goto out; > > /* Bind this socket to a particular device like "eth0", > * as specified in the passed interface name. If the > * name is "" or the option length is zero the socket > * is not bound. > */ > if (optlen > IFNAMSIZ - 1) > optlen = IFNAMSIZ - 1; > memset(devname, 0, sizeof(devname)); > > ret = -EFAULT; > if (copy_from_user(devname, optval, optlen)) > goto out; > > if (devname[0] == '\0') { > index = 0; > } else { > struct net_device *dev = dev_get_by_name(net, devname); > > ret = -ENODEV; > if (!dev) > goto out; > > index = dev->ifindex; > dev_put(dev); > } > > lock_sock(sk); > sk->sk_bound_dev_if = index; > sk_dst_reset(sk); > release_sock(sk); > > ret = 0; > > out: > #endif > > return ret; > } > > > Looks like your kernel has NETDEVICES off. This is the only way > this function can return -ENOPROTOOPT. > > -- > vda > >
kernel.config
Description: Binary data
_______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox