[squeak-dev] IPv6 implementation code

Levente Uzonyi leves at caesar.elte.hu
Mon Sep 18 15:22:30 UTC 2017


Unfortunately, things are a bit more complicated.

localhost may not be a name assigned to ::1. For example on my Ubuntu 
14.04 it is not. However, there's ip6-localhost which resolves to ::1.

NetNameResolver class >> #localHostName returns the name of the machine 
instead of 'localhost'. This is fine, but again, if there's no IPv6 
address assigned to that name, it won't work as you would expect.

NetNameResolver class >> #localAddressString will only return the string 
representation of the first address assigned to the machine's name.

There's NetNameResolver class >> #addressesForName: which can be more 
useful, because it'll return all names. So, here's a snippet to get a
collection with the assigned IPv6 addresses' string representation:

(NetNameResolver addressesForName: NetNameResolver localHostName)
         select: [ :each | each addressFamilyName == #inet6 ]
         thenCollect: [ :each | each socketAddress hostNumber ].

Levente

On Mon, 18 Sep 2017, Tobias Pape wrote:

> Hi Alan
>
>
>> On 18.09.2017, at 10:19, Alan Pinch <alan.c.pinch at gmail.com> wrote:
>> 
>> I am running the Ubuntu 32-bit vm and I enabledIPv6: through the preferences browser. I am able to run yet it seems it is still IPv4. I do not know enough how IPv6 should work. I get the following host addresses:
>>
>>     Connection running..<cap://127.0.1.1:10012/Xrlgak8yDT0hgspNx0AyWoCdoZo=, cap://127.0.0.1:47684/FL4dilz6eq2sZDG5wKp3TFDoQEE=>
>> 
>> I get the following from NetNameResolver localAddressString
>> 127.0.1.1
>
> I just checked. Bear with me here:
>
> In most imaged you will see for 
>
> 	printIt 	NetNameResolver useOldNetwork. "true"
>
> If your VM and OS supports IPv6 (it should) you will see
>
> 	printIt		NetNameResolver hasIpv6PrimSupport. "true"
>
> So you then can
>
> 	doIt		NetNameResolver enableIPv6: true.
>
> If that worked, you will find
>
> 	printIt		NetNameResolver useOldNetwork. " false"
>
> From now on, you will get more "interesting" network names. Look at the result of
>
> 	NetNameResolver localHostAddress.
> 	NetNameResolver localHostName.
>
> (note that those are typically NOT localhost)
> Also you should see
>
> 	printIt		NetNameResolver addressForName: 'localhost'. "::1(localhost),0(0)"
>
> -=-=-=-=-=-=-
>
> So far so good.
>
> If you now try to, for example get some IPv6-enabled url, your should see
>
> 	printIt		(WebClient httpGet: 'http://ipv6-test.com') status. " 'HTTP/1.1 200 OK'"
>
> But this won't probably work _unless_ you have the fixes in your image which I uploaded just 5 minutes ago (WebClient-topa.110, Network-topa.205) ;)
>
> Best regards
> 	-Tobias
>
>
>
>> 
>> Alan
>> 
>> On 09/17/2017 10:44 PM, David T. Lewis wrote:
>>> On Sun, Sep 17, 2017 at 09:46:49PM -0400, Alan Pinch wrote:
>>>> Could anyone be able to point me to working IPv6 code for squeak,
>>>> please? I would appreciate any link.
>>>> 
>>>> Alan
>>>> 
>>> In the preferences browser, catagory general, set the preference for
>>> "Enable IPv6 and new network support" to true.
>>> 
>>> The default setting is false, largely because of some network name
>>> resolver issues on the Windows platform.
>>> 
>>> I do not think that the IPv6 code is exercised much, because most
>>> people probably leave their image in the default mode. So if you are
>>> using this and find problems with it, please let us know what does
>>> not work.
>>> 
>>> Dave
>>> 
>> 
>>


More information about the Squeak-dev mailing list