Skip site navigation (1)Skip section navigation (2)
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>