Message ID | 1405040522-29868-1-git-send-email-Joakim.Tjernlund@transmode.se |
---|---|
State | New |
Headers | show |
Joakim Tjernlund <Joakim.Tjernlund@transmode.se> wrote on 2014/07/11 03:02:02: > > Wrong type was used in ioctl definition. > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> > --- > > However, this does not fix my dhcp problem: > > jocke-ppc ~ # busybox udhcpc -v > Adapter index 24 > MAC fe:22:44:22:55:77 > udhcpc (v1.21.0) started > Executing /usr/share/udhcpc/default.script deconfig > Setting IP address 0.0.0.0 on eth0 > Entering listen mode: raw > Opening raw socket on ifindex 24 > Got raw socket fd > udhcpc: bind: No such device > jocke-ppc ~ # cat /sys/class/net/eth0/ifindex > 24 I may have found the error, in target_to_host_sockaddr() we only have sa_family = tswap16(target_saddr->sa_family); w.r.t endian. However a AF_INET also have: stSockAddr.sin_port = htons(1100); stSockAddr.sin_addr.s_addr = htonl(INADDR_ANY); There is no endian conversion for these(there may be other cases too?) Jocke
Joakim Tjernlund/Transmode wrote on 2014/07/11 03:45:27: > > Joakim Tjernlund <Joakim.Tjernlund@transmode.se> wrote on 2014/07/11 03:02:02: > > > > Wrong type was used in ioctl definition. > > > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> > > --- > > > > However, this does not fix my dhcp problem: > > > > jocke-ppc ~ # busybox udhcpc -v > > Adapter index 24 > > MAC fe:22:44:22:55:77 > > udhcpc (v1.21.0) started > > Executing /usr/share/udhcpc/default.script deconfig > > Setting IP address 0.0.0.0 on eth0 > > Entering listen mode: raw > > Opening raw socket on ifindex 24 > > Got raw socket fd > > udhcpc: bind: No such device > > jocke-ppc ~ # cat /sys/class/net/eth0/ifindex > > 24 > I may have found the error, in target_to_host_sockaddr() we only have > sa_family = tswap16(target_saddr->sa_family); w.r.t endian. > However a AF_INET also have: > stSockAddr.sin_port = htons(1100); > stSockAddr.sin_addr.s_addr = htonl(INADDR_ANY); > There is no endian conversion for these(there may be other cases too?) That was premature but there is PF_PACKET/AF_PACKET: struct sockaddr_ll { unsigned short sll_family; /* Always AF_PACKET */ unsigned short sll_protocol; /* Physical layer protocol */ int sll_ifindex; /* Interface number */ unsigned short sll_hatype; /* ARP hardware type */ unsigned char sll_pkttype; /* Packet type */ unsigned char sll_halen; /* Length of address */ unsigned char sll_addr[8]; /* Physical layer address */ }; BINDTODEVICE seems unimpl. too? Both are used by busybox dhcp. Jocke
On 11 July 2014 02:02, Joakim Tjernlund <Joakim.Tjernlund@transmode.se> wrote: > Wrong type was used in ioctl definition. > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> > --- > > However, this does not fix my dhcp problem: > > jocke-ppc ~ # busybox udhcpc -v > Adapter index 24 > MAC fe:22:44:22:55:77 > udhcpc (v1.21.0) started > Executing /usr/share/udhcpc/default.script deconfig > Setting IP address 0.0.0.0 on eth0 > Entering listen mode: raw > Opening raw socket on ifindex 24 > Got raw socket fd > udhcpc: bind: No such device > jocke-ppc ~ # cat /sys/class/net/eth0/ifindex > 24 > linux-user/ioctls.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h > index 07a00da..609b27c 100644 > --- a/linux-user/ioctls.h > +++ b/linux-user/ioctls.h > @@ -118,7 +118,7 @@ > IOCTL(SIOCSIFMEM, IOC_W, MK_PTR(MK_STRUCT(STRUCT_ptr_ifreq))) > IOCTL(SIOCADDMULTI, IOC_W, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) > IOCTL(SIOCDELMULTI, IOC_W, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) > - IOCTL(SIOCGIFINDEX, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) > + IOCTL(SIOCGIFINDEX, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_int_ifreq))) > IOCTL(SIOCSIFLINK, 0, TYPE_NULL) > IOCTL_SPECIAL(SIOCGIFCONF, IOC_W | IOC_R, do_ioctl_ifconf, > MK_PTR(MK_STRUCT(STRUCT_ifconf))) > -- Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -- PMM
On Fri, Jul 11, 2014 at 03:02:02AM +0200, Joakim Tjernlund wrote: > Wrong type was used in ioctl definition. Thanks, Applied to linux-user > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> > --- > > However, this does not fix my dhcp problem: > > jocke-ppc ~ # busybox udhcpc -v > Adapter index 24 > MAC fe:22:44:22:55:77 > udhcpc (v1.21.0) started > Executing /usr/share/udhcpc/default.script deconfig > Setting IP address 0.0.0.0 on eth0 > Entering listen mode: raw > Opening raw socket on ifindex 24 > Got raw socket fd > udhcpc: bind: No such device > jocke-ppc ~ # cat /sys/class/net/eth0/ifindex > 24 > linux-user/ioctls.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h > index 07a00da..609b27c 100644 > --- a/linux-user/ioctls.h > +++ b/linux-user/ioctls.h > @@ -118,7 +118,7 @@ > IOCTL(SIOCSIFMEM, IOC_W, MK_PTR(MK_STRUCT(STRUCT_ptr_ifreq))) > IOCTL(SIOCADDMULTI, IOC_W, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) > IOCTL(SIOCDELMULTI, IOC_W, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) > - IOCTL(SIOCGIFINDEX, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) > + IOCTL(SIOCGIFINDEX, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_int_ifreq))) > IOCTL(SIOCSIFLINK, 0, TYPE_NULL) > IOCTL_SPECIAL(SIOCGIFCONF, IOC_W | IOC_R, do_ioctl_ifconf, > MK_PTR(MK_STRUCT(STRUCT_ifconf))) > -- > 1.8.5.5 >
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 07a00da..609b27c 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -118,7 +118,7 @@ IOCTL(SIOCSIFMEM, IOC_W, MK_PTR(MK_STRUCT(STRUCT_ptr_ifreq))) IOCTL(SIOCADDMULTI, IOC_W, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) IOCTL(SIOCDELMULTI, IOC_W, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) - IOCTL(SIOCGIFINDEX, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_sockaddr_ifreq))) + IOCTL(SIOCGIFINDEX, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_int_ifreq))) IOCTL(SIOCSIFLINK, 0, TYPE_NULL) IOCTL_SPECIAL(SIOCGIFCONF, IOC_W | IOC_R, do_ioctl_ifconf, MK_PTR(MK_STRUCT(STRUCT_ifconf)))
Wrong type was used in ioctl definition. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> --- However, this does not fix my dhcp problem: jocke-ppc ~ # busybox udhcpc -v Adapter index 24 MAC fe:22:44:22:55:77 udhcpc (v1.21.0) started Executing /usr/share/udhcpc/default.script deconfig Setting IP address 0.0.0.0 on eth0 Entering listen mode: raw Opening raw socket on ifindex 24 Got raw socket fd udhcpc: bind: No such device jocke-ppc ~ # cat /sys/class/net/eth0/ifindex 24 linux-user/ioctls.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)