Hi
Browsing in the vm SVN repository I found some hints to IPv6 support (at least on UNIX). What's the status of this? IIRC the OLPC guys once said they'd probably gonna need it? Is an IPv6 address modeled as a ByteArray of size 16? Cheers Philippe |
Philippe Marschall wrote:
> Hi > > Browsing in the vm SVN repository I found some hints to IPv6 support > (at least on UNIX). What's the status of this? IIRC the OLPC guys once > said they'd probably gonna need it? Is an IPv6 address modeled as a > ByteArray of size 16? IPv6 support was added for the OLPC (Unix) VMs, the smalltalk support code is in the OLPC image. Ian did the new plugin, Bert and I did the image side work. Right now it falls back on the old network code, if the ipv6 plugin isn't present. IIRC Ian had planned to officially release and announce the plugin once it is stable so other platform maintainers could catch up. Ian? Michael |
On Aug 14, 2007, at 12:12 AM, Michael Rueger wrote:
> IIRC Ian had planned to officially release and announce the plugin > once it is stable so other platform maintainers could catch up. Ian? Harvest away: the attached adds the necessary stuff to SocketPlugin. The result should be completely backward compatible. The platform code for Unix is in SVN. For MacOS I guess John will just copy and paste as usual (and the result should work: I have tested the Unix code under Darwin). To test after adding platform support code you'll need to grab at least SocketAddress, SocketAddressInformation (assuming Mike didn't change the names) and the new primitive methods in Socket from the OLPC image. (If anyone wants the lightweight versions of these that I originally sent to Mike, which are sufficient to test basic TCP and UDP over IP6 provided your machine's IP stack supports v6, then just let me know.) There might still be a problem with some illegal arguments not being caught. If/when this stuff looks like moving into the mainstream I'll happily investigate further and harden the checks. (I thought about x-posting to vm-dev but all the relevant people read this list anyway.) Cheers, Ian SocketPlugin-IPv6-ikp.1.cs.gz (1K) Download Attachment |
Ian Piumarta wrote:
> To test after adding platform support code you'll need to grab at least > SocketAddress, SocketAddressInformation (assuming Mike didn't change the > names) and the new primitive methods in Socket from the OLPC image. (If > anyone wants the lightweight versions of these that I originally sent to > Mike, which are sufficient to test basic TCP and UDP over IP6 provided > your machine's IP stack supports v6, then just let me know.) Please do. I'll need something to test against. Cheers, - Andreas |
Andreas Raab wrote:
> Ian Piumarta wrote: >> To test after adding platform support code you'll need to grab at >> least SocketAddress, SocketAddressInformation (assuming Mike didn't >> change the names) and the new primitive methods in Socket from the >> OLPC image. (If anyone wants the lightweight versions of these that I >> originally sent to Mike, which are sufficient to test basic TCP and >> UDP over IP6 provided your machine's IP stack supports v6, then just >> let me know.) > > Please do. I'll need something to test against. Michael 1462networkFix-mir-bf.1.zip (77K) Download Attachment |
In reply to this post by Ian Piumarta-2
On Aug 14, 2007, at 4:58 PM, Ian Piumarta wrote: > The platform code for Unix is in SVN. For MacOS I guess John will > just copy and paste as usual (and the result should work: I have > tested the Unix code under Darwin). I just use the unix socket code from the SVN tree since os-x drawin is unix after all. I have some changes related to EINTR (attached) for the old socket code, but have not anyone tested it. So for example socketReadable() invokes recv() to see if the socket is readable. If that got a EINTR the original code would return (-1) EOF This likely is the wrong answer since you might expect back (1) meaning data, or (0) meaning would block. Thus something like sqSocketReceiveDataAvailable() does this below so it *could* get a EINTR which would set the socket to OtherEndClosed, which in fact is wrong. if (SOCKETSTATE(s) == Connected) { int fd= SOCKET(s); int n= socketReadable(fd); if (n > 0) { FPRINTF((stderr, "receiveDataAvailable(%d) -> true\n", fd)); return true; } else if (n < 0) { FPRINTF((stderr, "receiveDataAvailable(%d): other end closed\n", fd)); SOCKETSTATE(s)= OtherEndClosed; } -- ======================================================================== === John M. McIntosh <[hidden email]> Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== === sqUnixSocket.c.zip (15K) Download Attachment |
Free forum by Nabble | Edit this page |