bug-commoncpp
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Error compiling network.cpp on Solaris 8


From: Craig E. Johnston
Subject: Re: Error compiling network.cpp on Solaris 8
Date: 19 Mar 2003 07:18:32 -0800

I don't think this symbol will work, as it is defined even when the
ifr_mtu union member is not available.  Another symbol, SIOCGLIFMTU, is
defined in Solaris's sys/sockio.h.  Thus, the logic below could be
reversed to test for SIOCGLIFMTU and use lifr_mtu, otherwise use
ifr_mtu.

Craig

On Tue, 2003-03-18 at 10:33, Federico Montesino Pouzols wrote:
> 
>       I have committed this patch, but replacing 
> 
> #ifdef CEJ_SOLARIS_FIX
> 
>       with
> 
> #ifdef SIOCGIFMTU
> 
>       as it seems less Solaris-specific. Will this work on Solaris,
> or is SIOCGIFMTU defined even if it does not work? In such case we
> will have to add more symbols, like:
> 
> #if defined(SIOCGIFMTU) && ( !defined(_THR_SUNOS5) || 
> defined(CEJ_SOLARIS_FIX) )
> 
> On Tue, Mar 11, 2003 at 06:14:17PM -0500, David Sugar wrote:
> > Perhaps this could be tied to the _THR_SUNOS5 symbol definition rathern 
> > than 
> > the CEJ_... macro you use?  If so and that works for you and for other 
> > sun/solaris configurations then it would be self configuring and I think we 
> > could include this for the next release.
> > 
> > On Thursday 06 March 2003 04:56 pm, Craig E. Johnston wrote:
> > > I have run into a problem compiling commoncpp2-1.08 on a Sun running
> > > Solaris 8.0 (SunOS 5.8).
> > >
> > > Specifically, in the enumNetworkDevices() method of network.cpp, the
> > > ioctl call to retrieve the MTU is no longer supported using the 'ifreq'
> > > structure from "include/net/if.h".  Sun has moved to an IPv6
> > > implementation that uses a structure named 'lifreq'.  Some ioctl() calls
> > > are still supported for backward compatibility, but not the
> > > ifreq.ifr_mtu union member for the SIOCGIFMTU call.
> > >
> > > The following diff is my workaround. (watch the line wrap)
> > >
> > > *** network.cpp 2003-03-04 11:51:17.000000000 -0800
> > > --- /project/commoncpp2-1.0.8/src/network.cpp   2003-01-23
> > > 06:33:55.000000000 -0800
> > > ***************
> > > *** 121,138 ****
> > >                 else
> > >                         (InetAddress&)maskaddr =
> > > ((sockaddr_in&)devifreq.ifr_addr).sin_addr;
> > >
> > > - #ifdef CEJ_SOLARIS_FIX
> > >                 if(ioctl(fd, SIOCGIFMTU, &devifreq) == -1)
> > >                         mtu = 0;
> > >                 else
> > >                         mtu = devifreq.ifr_mtu;
> > > - #else
> > > -               struct lifreq devlifreq;
> > > -               if(ioctl(fd, SIOCGLIFMTU, &devlifreq) == -1)
> > > -                       mtu = 0;
> > > -               else
> > > -                       mtu = devlifreq.lifr_mtu;
> > > - #endif
> > >
> > >
> > > devs.push_back(NetworkDeviceInfo(ifc.ifc_req[i].ifr_name, addr, brdaddr,
> > > maskaddr, mtu));
> > >         }
> > > --- 121,130 ----
> > >
> > >
> > > Craig Johnston
> > > address@hidden
> > >
> > >
> > > _______________________________________________
> > > Bug-commoncpp mailing list
> > > address@hidden
> > > http://mail.gnu.org/mailman/listinfo/bug-commoncpp
> > 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]