[squeak-dev] IPv6 implementation code

Alan Pinch alan.c.pinch at gmail.com
Wed Sep 20 19:36:07 UTC 2017


On 09/18/2017 11:22 AM, Levente Uzonyi wrote:
> 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 ].

Here are my results. For some reason the #addressesForName: is not 
seeing my wireless DHCP, though my machine claims it is ETHERNET.


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

NetNameResolver addressesForName: NetNameResolver localHostName
  an OrderedCollection(127.0.1.1(callisto),0(0)-inet4-stream-tcp)

wlp2s0    Link encap:Ethernet  HWaddr 40:25:c2:b0:7b:0c
           inet addr:192.168.43.32  Bcast:192.168.43.255 Mask:255.255.255.0
           inet6 addr: fe80::94ac:2d16:6700:1ed5/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:97074 errors:0 dropped:0 overruns:0 frame:0
           TX packets:52659 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:106056900 (106.0 MB)  TX bytes:9058187 (9.0 MB)



NetNameResolver useOldNetwork. "true"  false
NetNameResolver hasIpv6PrimSupport. "true"  true
NetNameResolver enableIPv6. true
NetNameResolver enableIPv6: true. NetNameResolver
NetNameResolver useOldNetwork. " false" false
NetNameResolver localHostAddress. 127.0.1.1(callisto),0(0)
NetNameResolver localHostName. 'callisto'
NetNameResolver addressForName: 'localhost'. "::1(localhost),0(0)" 
127.0.0.1(localhost),0(0)

-=-=-=-=-=-=-

So far so good.

If you now try to, for example get some IPv6-enabled url, your should see

(WebClient httpGet: 'http://ipv6-test.com') status. " 'HTTP/1.1 200 OK'" 
'HTTP/1.1 200 OK'


It's localhost is still ipv4 but supports ipv6 calls is what I am 
seeing, plus missing the wireless interface.

I appreciate your consideration,
Alan

>
> 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