import of dnsmasq-2.2.tar.gz
diff --git a/src/config.h b/src/config.h
index 39d2375..9d652ed 100644
--- a/src/config.h
+++ b/src/config.h
@@ -12,14 +12,13 @@
 
 /* Author's email: simon@thekelleys.org.uk */
 
-#define VERSION "2.1"
+#define VERSION "2.2"
 
 #define FTABSIZ 150 /* max number of outstanding requests */
 #define TIMEOUT 40 /* drop queries after TIMEOUT seconds */
 #define LOGRATE 120 /* log table overflows every LOGRATE seconds */
 #define CACHESIZ 150 /* default cache size */
 #define SMALLDNAME 40 /* most domain names are smaller than this */
-#define CONFFILE "/etc/dnsmasq.conf"
 #define HOSTSFILE "/etc/hosts"
 #ifdef __uClinux__
 #  define RESOLVFILE "/etc/config/resolv.conf"
@@ -29,8 +28,10 @@
 #define RUNFILE "/var/run/dnsmasq.pid"
 #ifdef __FreeBSD__
 #   define LEASEFILE "/var/db/dnsmasq.leases"
+#   define CONFFILE "/usr/local/etc/dnsmasq.conf"
 #else
 #   define LEASEFILE "/var/lib/misc/dnsmasq.leases"
+#   define CONFFILE "/etc/dnsmasq.conf"
 #endif
 #define DEFLEASE 3600 /* default lease time, 1 hour */
 #define CHUSER "nobody"
diff --git a/src/network.c b/src/network.c
index 43dd402..3cfed18 100644
--- a/src/network.c
+++ b/src/network.c
@@ -218,7 +218,8 @@
       {
 	FILE *f = fopen(IP6INTERFACES, "r");
 	int found = 0;
-	
+	union mysockaddr addr6;
+
 	if (f)
 	  {
 	    unsigned int plen, scope, flags, if_idx;
@@ -230,18 +231,18 @@
 		if (strcmp(devname, ifr->ifr_name) == 0)
 		  {
 		    int i;
-		    unsigned char *addr6p = (unsigned char *) &addr.in6.sin6_addr;
-		    memset(&addr, 0, sizeof(addr));
-		    addr.sa.sa_family = AF_INET6;
+		    unsigned char *addr6p = (unsigned char *) &addr6.in6.sin6_addr;
+		    memset(&addr6, 0, sizeof(addr6));
+		    addr6.sa.sa_family = AF_INET6;
 		    for (i=0; i<16; i++)
 		      {
 			unsigned int byte;
 			sscanf(addrstring+i+i, "%02x", &byte);
 			addr6p[i] = byte;
 		      }
-		    addr.in6.sin6_port = htons(port);
-		    addr.in6.sin6_flowinfo = htonl(0);
-		    addr.in6.sin6_scope_id = htonl(scope);
+		    addr6.in6.sin6_port = htons(port);
+		    addr6.in6.sin6_flowinfo = htonl(0);
+		    addr6.in6.sin6_scope_id = htonl(scope);
 		    
 		    found = 1;
 		    break;
@@ -253,7 +254,7 @@
 	
 	if (found && 
 	    (err = add_iface(interfacep, ifr->ifr_flags,  ifr->ifr_name,
-			     &addr, names, addrs, except)))
+			     &addr6, names, addrs, except)))
 	  goto end;
       }