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
>
>

Attachment: kernel.config
Description: Binary data

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to