Date: Tue, 05 May 2009 16:08:27 +0200 From: Alexander Leidinger <Alexander@Leidinger.net> To: Boris Samorodov <bsam@ipt.ru> Cc: freebsd-emulation@FreeBSD.org Subject: Re: [linux-f10] linux_socketcall... ERR#43 'Protocol not supported' Message-ID: <20090505160827.1359651x47bqmxc8@webmail.leidinger.net> In-Reply-To: <47993241@bb.ipt.ru> References: <81924694@bb.ipt.ru> <20090505144955.16373k1b32dpaxo0@webmail.leidinger.net> <47993241@bb.ipt.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Boris Samorodov <bsam@ipt.ru> (from Tue, 05 May 2009 17:44:54 +0400): > On Tue, 05 May 2009 14:49:55 +0200 Alexander Leidinger wrote: >> Quoting Boris Samorodov <bsam@ipt.ru> (from Tue, 05 May 2009 >> 09:51:21 +0400): > >> > I'm working on Fedora 10 ports and almost all is fine (even >> > google-earth seems to work)... But there is no resolving. >> > I managed to find the culprit. Here it is: > >> > Ktrace/linux_kdump gives this: >> > ----- >> > 48833 ping CALL linux_socketcall(0x1,0xbfbfd218) >> > 48833 ping RET linux_socketcall -1 errno 93 Unknown error: 93 >> > 48833 ping CALL gettimeofday(0xbfbfd2e0,0) >> > 48833 ping RET gettimeofday 0 >> > 48833 ping CALL linux_socketcall(0x1,0xbfbfd218) >> > 48833 ping RET linux_socketcall -1 errno 93 Unknown error: 93 >> > 48833 ping CALL write(0x2,0xbfbfbf48,0x1a) >> > 48833 ping GIO fd 2 wrote 26 bytes >> > "ping: unknown host www.ru >> > " >> > 48833 ping RET write 26/0x1a >> > 48833 ping CALL linux_exit_group(0x2) >> > ---- > >> There was a commit after April 30 about linux socket stuff. I don't >> know if it is related or not. You can either update and test, or > > Thanks for the info, I'm updating now. > >> instrument the current code to print out the parameters to >> linux_socketcall in a human readable way. > > Can you give a tiny example? orig: ---snip--- switch (args->what) { case LINUX_SOCKET: return (linux_socket(td, arg)); case LINUX_BIND: return (linux_bind(td, arg)); ---snip--- modified (ugly): ---snip--- switch (args->what) { case LINUX_SOCKET: int ret = linux_socket(td, arg); printf("LINUX_SOCKET: %d\n", ret); return (ret); case LINUX_BIND: return (linux_bind(td, arg)); ---snip--- After this you should see in ktrace which one it tries to call. Revert to the orig one and instrument the corresponding function, for linux_socket thish would be: ---snip--- linux_socket(struct thread *td, struct linux_socket_args *args) { #ifdef INET6 INIT_VNET_INET6(curvnet); #endif struct socket_args /* { int domain; int type; int protocol; } */ bsd_args; int retval_socket; /* debug for bsam */ printf("linux_socket (LINUX): domain: %d, type: %d, protocol: %d\n", args->domain, args->type, args->protocol); bsd_args.protocol = args->protocol; bsd_args.type = args->type; bsd_args.domain = linux_to_bsd_domain(args->domain); /* debug for bsam */ printf("linux_socket (FreeBSD): domain: %d\n", bsd_args.domain); if (bsd_args.domain == -1) return (EINVAL); ---snip--- Bye, Alexander. -- The six great gifts of an Irish girl are beauty, soft voice, sweet speech, wisdom, needlework, and chastity. -- Theodore Roosevelt, 1907 http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090505160827.1359651x47bqmxc8>