[Dnsmasq-discuss] Problem compiling 2.51 on Solaris 2009.06

Simon Kelley simon at thekelleys.org.uk
Sat Nov 21 12:49:44 GMT 2009

Lee Essen wrote:
> On Saturday, November 21, 2009, at 09:30AM, "Simon Kelley" <simon at thekelleys.org.uk> wrote:
>> Lee Essen wrote:
>>> Hi,
>>> I've been a dnsmasq user for quite a few years on both Solaris and
>>> Linux, but it's been a while since I've tried to build on Solaris.
>>> I've just tried to build 2.51 on the latest Solaris build and there
>>> seems to be a number of really fundamental issues.
>>> I notice Solaris mentioned quite a few times in the changelog so
>>> there seems to be a continued effort around this, and I certainly
>>> don't remember any issues in the past, however unless I'm doing
>>> something fundamentally wrong (which is a distinct possibility) I
>>> think a few tweaks are needed...
>>> I have attached a patch that covers all the changes I needed to make,
>>> although I must confess that whilst it's now compiles I haven't
>>> tested it yet.
>>> Three main problems...
>>> 1.  config.h is included after sys/socket.h -- this means that
>>> _XPG4_2 isn't defined yet and therefore all of the CMSG_* defines get
>>> missed (CMSG_SPACE for example.)
>>> 2. struct ifreq seems to have become struct lifrect (at least if you
>>> need ifr_mtu), so this impacts a number of references in two or three
>>> files.
>>> 3. LOG_PRI doesn't seem to exist at all.
>>> I'm not suggesting my patch is the right solution, it's probably far
>>> from it, but it's enough to highlight the issues.
>>> If I'm missed something obvious then please let me know, otherwise
>>> I'll continue to test and see if I can come up with a less disruptive
>>> way of incorporating these fixes.
>> Many thanks for this.
>> By some weird coincidence, I was working on this yesterday too. I found 
>> and fixed your problems 1 and 3 but didn't get bitten by 2. Does that 
>> turn up as a compile-time problem, or just run-time?
>> Anyway, the results of my efforts are at
>> http://www.thekelleys.org.uk/dnsmasq/test-releases/dnsmasq-2.52test7.tar.gz
>> which compile, but have not been functionally tested yet.
>> Please could you check that and let me know if it's OK, or if I need to 
>> work-in your lifr stuff?
>> Cheers,
>> Simon.
> Simon,
> I still see the same problem with the ifr bits - this is on the latest Solaris release ... it looks like it's just the ifr_mtu field that's the problem, according to the if.h file the struct ifreq is kept for compatibility but there is no ifr_mtu field as part of the union.
> I've attached if.h for your info, just in case you have an older version.
> make[1]: Entering directory `/site/internal/build/dnsmasq-2.52test7/src'
> cc -Wall -W -O2     -c cache.c
> cc -Wall -W -O2     -c rfc1035.c
> cc -Wall -W -O2     -c util.c
> cc -Wall -W -O2     -c option.c
> cc -Wall -W -O2     -c forward.c
> cc -Wall -W -O2     -c network.c
> network.c: In function `iface_allowed':
> network.c:149: error: structure has no member named `ifr_mtu'
> network.c: At top level:
> network.c:555: warning: unused parameter 'intname'
> network.c:39: warning: unused parameter 'fd'
> make[1]: *** [network.o] Error 1
> make[1]: Leaving directory `/site/internal/build/dnsmasq-2.52test7/src'
> make: *** [dnsmasq] Error 2
> Regards,
> Lee.

OK, it looks like that's a bug in Solaris 2009.06, since fixed in the
svn_127 version I was using. Rather than bending lots of code out of
shape to fix a transient problem, the following hack should work:

--- src/dnsmasq.h.old	2009-11-21 12:44:49.000000000 +0000
+++ src/dnsmasq.h	2009-11-21 12:48:46.000000000 +0000
@@ -72,6 +72,10 @@
 #include <sys/un.h>
 #include <limits.h>
 #include <net/if.h>
+#if defined(HAVE_SOLARIS_NETWORK) && !defined(ifr_mtu)
+/* Some solaris net/if./h omit this. */
+#  define ifr_mtu  ifr_ifru.ifru_metric
 #include <unistd.h>
 #include <stdio.h>
 #include <string.h>

Please could you verify that?



More information about the Dnsmasq-discuss mailing list