Subject: how is dest addr handled by connect() or sendto() code ?
To: None <tech-kern@netbsd.org>
From: =?iso-8859-1?q?Philip=20Christian?= <philipchristian2003@yahoo.co.uk>
List: tech-kern
Date: 01/29/2003 17:53:13
--0-250542274-1043862793=:48589
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit


I have spent now about six weeks trying to get a SOCK_RAW send() or sendto() call to work with an ISO socket and came to the conclusion that it is broken.

Basically I have figured out that the send() or sendto() calls results in rclnp_output function in clnp_raw.c being called which calls function clnp_output in clnp_output.c

send() or sendto() seem to fail because 
rp->risop_isop.isop_faddr->siso_addr.isoa_len
and
rp->risop_isop.isop_faddr->siso_addr.isoa_genaddr[]
do not get populated properly with the destination address before function rclnp_output is executed.

In fact I have manually forced an address into this structure inside the rclnp_output function and recompiled the kernel, and a packet is then actually transmitted.

I cannot figure out what the kernel does when send() or sendto() are executed.
There are various tables of system calls in places like /sys/syscall.h but I can't get from there to the actual code.

I have also had a look at the Design and Implementation of the 4.4 BSD Operating System book and I still couldn't figure it out.

Can someone point me in the right direction so that I can figure out why the address is not getting from the connect() or sendto() dest address arguments into rp->risop_isop.isop_faddr please ?

Really I just want a pointer to the code that gets executed, so it almost isn't even an OSI specific question...

Thanks, Philip





---------------------------------
With Yahoo! Mail you can get a bigger mailbox -- choose a size that fits your needs

--0-250542274-1043862793=:48589
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

<P>I have spent now about six weeks trying to get a SOCK_RAW send() or sendto() call to work with an ISO socket and came to the conclusion that it is broken.</P>
<P>Basically I have figured out that the send() or sendto() calls results in rclnp_output function in clnp_raw.c&nbsp;being called which calls function clnp_output in clnp_output.c</P>
<P>send() or sendto() seem to fail because <BR>rp-&gt;risop_isop.isop_faddr-&gt;siso_addr.isoa_len<BR>and<BR>rp-&gt;risop_isop.isop_faddr-&gt;siso_addr.isoa_genaddr[]<BR>do not get populated properly with the destination address before function rclnp_output is executed.</P>
<P>In fact I have manually forced an address into this structure inside the rclnp_output function and recompiled the kernel, and a packet is then actually transmitted.</P>
<P>I cannot figure out what the kernel does when send() or sendto() are executed.<BR>There are various tables of system calls in places like /sys/syscall.h but I can't get from there to the actual code.</P>
<P>I have also had a look at the Design and Implementation of the 4.4 BSD Operating System book and&nbsp;I&nbsp;still couldn't figure it out.</P>
<P>Can someone point me in the right direction so that I can figure out why the address is not getting from the connect() or sendto() dest address arguments into rp-&gt;risop_isop.isop_faddr please ?</P>
<P>Really I just want a pointer to the code that gets executed, so it almost isn't even an OSI specific question...</P>
<P>Thanks, Philip<BR></P><p><p><br><hr size=1><a href="http://uk.yahoo.com/mail/tagline_xtra/?http://uk.docs.yahoo.com/mail_storage.html"><b><font face="Arial" size="2">With Yahoo! Mail you can get a bigger mailbox -- choose a size that fits your needs</font></b></a><br>
--0-250542274-1043862793=:48589--