Hi Steffen - I actually think that code did change quite a bit
from s10 to nv.

I'm not sure what you need to do, but you may want to grab
Brendan's DTraceToolKit and have a look at tcptop and
tcpsnoop, and have a look at how Brendan did it for s10.

Thanks,
/jim

On May 5, 2010, at 8:21 AM, Steffen Weiberle wrote:

> Using Solaris 10, so no IP provider, I am trying to figure out when a
> connection attempt is failing in a client. The connect() statement takes
> a file descriptor, which is an integer and has no connection details.
> Since I don't know if the connect is closely preceded with a bind() or a new 
> connection may be attempted with the same socket, and thus I won't be 
> capturing the bin, I can't rely on it to get the sockaddr structure.
> 
> (The event happens very infrequently, maybe once a day)
> 
> So I am trying tcp_connect FBT probe.
> 
> fbt::tcp_connect:entry
> {
>       printf("execname: %s \n", execname);
>       self->sockaddr = args[1];
> 
>       printf("family: %x \n", self->sockaddr->sa_family);
> }
> 
> However, I get
> 
> # /var/tmp/connect.d
> dtrace: failed to compile script /var/tmp/connect.d: line 32: sa_family
> is not a member of struct msgb
> 
> Note is says 'msgb', not 'sockaddr'.
> 
> I got the args[1] from the OpenSolaris source code (and maybe that is my
> problem, since I am running on Solaris 10--did the code change that
> much?--seems unlikely)
> 
> http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/inet/tcp/tcp_socket.c#232
> 
> Any good way to grab the IPv4 address and port number on an entry so I
> can have it in the situation the connect() fails?
> 
> Thanks
> Steffen
> 
> 
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss@opensolaris.org

_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to