This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
ioctl() confusion
- To: Corinna Vinschen <corinna@vinschen.de>, cygwin@sourceware.cygnus.com
- Subject: ioctl() confusion
- From: "Ashish C. Nagre" <ashishcn@cisco.com>
- Date: Tue, 01 Jun 1999 15:47:25 -0700
- Organization: Cisco Systems
- References: <374C9D2B.CBDD1EC4@cisco.com> <374CA453.6E07EFD1@vinschen.de> <374D85CF.AC0FFED3@cisco.com> <374D9F8D.3F370DF3@vinschen.de> <37544AE1.AFE086C@cisco.com> <37545B80.4C31E1D1@vinschen.de>
- Reply-To: ashishcn@cisco.com
Hi,
You said that it could be because of the RAS device. But the host that I
am testing on has 3 devices: "lo0" (loopback), "eth0" (ether) and
"ppp4" ( the RAS device ??)
I am confused really because the flags that are returned when I run the
program in the gdb are 0x99 but when I run the executable the flags
returned are 0x34. This observation is quite inexplicable to me.
I would be really grateful if you could clear this issue with me.
If you need I can send you the segment of code where the ioctl() call is
made.
Meanwhile, I wait for your reply.
Thank you for all the help.
Regards,
Ashish
Corinna Vinschen wrote:
>
> "Ashish C. Nagre" wrote:
> > I have made a strange observation, when the following call is made:
> >
> > ioctl(fd, SIOCGIFFLAGS, (char *)&ifr)
> >
> > The value returned in the member ifr.ifr_ifru.ifru_flags is different
> > when I just run the executable compared to when I run it in the
> > debugger.
> > ifr.ifr_ifru.ifru_flags = 34 (executable)
> > ifr.ifr_ifru.ifru_flags = 99 (in gdb)
> > [...]
> > Why are the flags returned with different values ?
>
> The flags are computed through the address of the interface.
> Is it possible, that you are testing it on a RAS device, e.g
> a modem line? When a modem line isn't connected, it returns
> the IP address 0.0.0.0, when it's connected, it returns a legal
> address.
> In case of address 0.0.0.0, the cygwin DLL knows, that the interface
> isn't connected and so returns the flags
> IFF_NOTRAILERS | IFF_BROADCAST
> The hex value of the above flags is 0x34.
>
> If the address is a legal IP address, the cygwin DLL knows that the
> interface is connected and so returns
> IFF_NOTRAILERS | IFF_BROADCAST | IFF_UP | IFF_RUNNING
> The hex code is 0x99.
>
> You see, both values are possible and you should check it out, if
> you have tested it under different conditions.
>
> Regards,
> Corinna
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com