delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2008/06/09/14:28:00

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Message-ID: <484D760C.3090700@fliegl.de>
Date: Mon, 09 Jun 2008 20:27:24 +0200
From: Deti Fliegl <deti AT fliegl DOT de>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: XP + cygwin version 1.7: problem with /proc/net/if_inet6 format and if_indextoname
References: <484C3B1B DOT 8000907 AT fliegl DOT de> <20080609173303 DOT GA22164 AT calimero DOT vinschen DOT de>
In-Reply-To: <20080609173303.GA22164@calimero.vinschen.de>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Corinna Vinschen wrote:
> The scope values are not always equal to the index, as you can see in your
> above output as well for the loopback.  It's also 0 for the addresses
> with global scope.  The values are taken from the sin6_scope_id field
> returned by the Win32 function GetAdaptersAddresses.  Compare with the
> scope values printed by `ipconfig /all'.  Apparently the v6 stack in
> XP uses (not quite) arbitrary numbers for local interfaces.  I don't
> know the rules behind the choice, but apparently it has been fixed in
> Vista.
According to http://msdn.microsoft.com/en-us/library/ms803554.aspx and 
http://msdn.microsoft.com/en-us/library/aa366357(VS.85).aspx the 
SCOPE_LEVEL for link local addresses should be 2.

BUT:

The output of ipconfig /all varies between XP and Vista for link local 
addresses:
Vista: fe80:...%8
XP: fe80:...%4

The same values can be found in the /proc/net/if_inet6 scope field. IMHO 
this makes it impossible to rely on these values.

Maybe there should be some scope tests (by IN6_IS_ADDR_* macros) in 
winsup/cygwin/fhandler_procnet.cc to provide a consistent value.

>> My question: Did I hit a bug? Is there any documentation what's the meaning 
>> of the values for scope and interface flags (they don't seem to follow the 
>> referenced definitions of the Linux kernel).
> 
> The flags field is the DAD state right now.  I'm looking through what I
> did when I implemented that but I can't figure out anymore why I put the
> DAD state into this field.  It looks like it should actually contain the
> interface flags (IFF_* values).  Can somebody confirm or deny that?  If
> that's correct, it's probably not a big deal to change that.
Well the  DAD field is perfectly OK for me - because it's as close as 
possible to the original definition. I just could not figure out the 
meaning at the first glance ;-)

>> Further it seems that if_indextoname(...) does not work for XP while it  
>> works for Vista. Don't know if this problem is related. Did I miss 
>> something? I would appreciate any hint.
> 
> *How* does it not work.  A *very* simply testcase in plain C might
> be helpful...
Try something like:
         int i;
         char name[IFNAMSIZ];
         for(i=0;i<255;i++) {
                 if (if_indextoname (i, name)) {
                         printf("Index: %d, Name: %s\n",i, name);
                 }
         }


Compare the output between XP and Vista. In my place I get many {UUIDS} 
on Vista:
Index: 1, Name: {3D4E88D4-6A70-11DB-B1BA-806E6F6E6963}
Index: 2, Name: {2F1F689C-4E19-439F-970B-9D3953DD3745}
Index: 3, Name: {F26D997E-07E4-4F14-9784-6D2C161038B5}
Index: 4, Name: {A3F04F10-FC76-46FC-9E8F-27B734564D1C}
Index: 5, Name: {0BFB37A4-FFB2-4AA9-B2AB-290F24210160}
Index: 6, Name: {D5445FB9-2700-4624-8C7D-A3ABDF67108A}
Index: 7, Name: {4DC0A780-6F97-4FBC-BB56-D161370E236E}
Index: 8, Name: {92F7E3A1-A7C4-4D89-A80F-C62EF31CE0DE}
Index: 9, Name: {333E49EF-C763-4F8B-ADCB-FB700E9E76DB}
Index: 10, Name: {B3B050EF-8A68-4ECC-8FEB-7E6C0EDB93F2}
Index: 11, Name: {3D4E8912-6A70-11DB-B1BA-0014220F8C51}
Index: 12, Name: {3D4E8913-6A70-11DB-B1BA-0014220F8C51}
Index: 13, Name: {65086859-22B7-11DD-BEB6-F5B211E8BF66}
Index: 14, Name: {7BE6018E-84C7-4AA5-80D9-36C0C5611E20}
Index: 15, Name: {4ED2AC47-6055-4483-8441-D89E3B1B3CD3}
Index: 16, Name: {D509BF11-3528-11DD-95EC-00163E6554AE}

On XP the function returns only few interfaces in UUID style and in a 
fully resolved interface-name-style:

Index: 0, Name: {571E18F0-10E9-4D0F-A998-FE68B6C687EC}
Index: 1, Name: MS TCP Loopback interface

IMHO it should return the same interface name as shown by ipconfig - 
otherwise there should exist a function to convert the UUID value into a 
human readable interface name.

Deti

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019