]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Fixed many compilation problems ("set, but not used" warnings) for
authorTomek Mrugalski <tomek@isc.org>
Fri, 9 Mar 2012 11:18:14 +0000 (11:18 +0000)
committerTomek Mrugalski <tomek@isc.org>
Fri, 9 Mar 2012 11:18:14 +0000 (11:18 +0000)
gcc 4.6 that may affect Ubuntu 11.10 users. [ISC-Bugs #27588]

19 files changed:
RELNOTES
client/clparse.c
client/dhclient.c
common/comapi.c
common/options.c
common/parse.c
common/print.c
common/socket.c
dst/prandom.c
includes/cdefs.h
omapip/handle.c
omapip/listener.c
server/bootp.c
server/db.c
server/ddns.c
server/dhcp.c
server/dhcpv6.c
server/failover.c
server/omapi.c

index e0e7d604d82a28cf91328bc61111b46d3d848567..9f52e7b38b8032b99f96bf8880e86f1adb97c9f7 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -94,6 +94,9 @@ work on other platforms. Please report any problems and suggested fixes to
   checking programs to eliminate false positives.
   [ISC-Bugs 27539]
 
+- Fixed many compilation problems ("set, but not used" warnings) for
+  gcc 4.6 that may affect Ubuntu 11.10 users. [ISC-Bugs #27588]
+
                        Changes since 4.2.2
 
 - Fix the code that checks for an existing DDNS transaction to cancel
index 9de4ce26a135305fbe55e3ba4e24d34538312b3f..c535d7b41d5acd57efbef0736a5c6c7c30e6b468 100644 (file)
@@ -3,7 +3,7 @@
    Parser for dhclient config and lease files... */
 
 /*
- * Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1996-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -59,10 +59,18 @@ isc_result_t read_client_conf ()
 {
        struct client_config *config;
        struct interface_info *ip;
-       struct parse *parse;
        isc_result_t status;
        unsigned code;
 
+        /* 
+         * TODO: LATER constant is very undescriptive. We should review it and
+         * change it to something more descriptive or even better remove it
+         * completely as it is currently not used.
+         */
+#ifdef LATER
+        struct parse *parse = NULL;
+#endif
+
        /* Initialize the default request list. */
        memset(default_requested_options, 0, sizeof(default_requested_options));
 
@@ -159,7 +167,6 @@ isc_result_t read_client_conf ()
                                        (struct interface_info *)0,
                                        &top_level_config);
 
-       parse = NULL;
        if (status != ISC_R_SUCCESS) {
                ;
 #ifdef LATER
index afe896fc9bbd5b113b017bfafae74fb07cb09a3d..a68e8859979c33484ab93def8d147230ccbdcb49 100644 (file)
@@ -1899,11 +1899,14 @@ void send_discover (cpp)
              ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval));
 
        /* Send out a packet. */
-       result = send_packet (client -> interface, (struct packet *)0,
-                             &client -> packet,
-                             client -> packet_length,
-                             inaddr_any, &sockaddr_broadcast,
-                             (struct hardware *)0);
+       result = send_packet(client->interface, NULL, &client->packet,
+                            client->packet_length, inaddr_any,
+                             &sockaddr_broadcast, NULL);
+        if (result < 0) {
+               log_error("%s:%d: Failed to send %d byte long packet over %s "
+                         "interface.", MDL, client->packet_length,
+                         client->interface->name);
+       }
 
        /*
         * If we used 0 microseconds here, and there were other clients on the
@@ -2166,20 +2169,29 @@ void send_request (cpp)
              ntohs (destination.sin_port));
 
        if (destination.sin_addr.s_addr != INADDR_BROADCAST &&
-           fallback_interface)
-               result = send_packet (fallback_interface,
-                                     (struct packet *)0,
-                                     &client -> packet,
-                                     client -> packet_length,
-                                     from, &destination,
-                                     (struct hardware *)0);
-       else
+           fallback_interface) {
+               result = send_packet(fallback_interface, NULL, &client->packet,
+                                    client->packet_length, from, &destination,
+                                    NULL);
+               if (result < 0) {
+                       log_error("%s:%d: Failed to send %d byte long packet "
+                                 "over %s interface.", MDL,
+                                 client->packet_length,
+                                 fallback_interface->name);
+               }
+        }
+       else {
                /* Send out a packet. */
-               result = send_packet (client -> interface, (struct packet *)0,
-                                     &client -> packet,
-                                     client -> packet_length,
-                                     from, &destination,
-                                     (struct hardware *)0);
+               result = send_packet(client->interface, NULL, &client->packet,
+                                    client->packet_length, from, &destination,
+                                    NULL);
+               if (result < 0) {
+                       log_error("%s:%d: Failed to send %d byte long packet"
+                                 " over %s interface.", MDL,
+                                 client->packet_length,
+                                 client->interface->name);
+               }
+        }
 
        tv.tv_sec = cur_tv.tv_sec + client->interval;
        tv.tv_usec = ((tv.tv_sec - cur_tv.tv_sec) > 1) ?
@@ -2195,16 +2207,19 @@ void send_decline (cpp)
        int result;
 
        log_info ("DHCPDECLINE on %s to %s port %d",
-             client -> name ? client -> name : client -> interface -> name,
-             inet_ntoa (sockaddr_broadcast.sin_addr),
-             ntohs (sockaddr_broadcast.sin_port));
+             client->name ? client->name : client->interface->name,
+             inet_ntoa(sockaddr_broadcast.sin_addr),
+             ntohs(sockaddr_broadcast.sin_port));
 
        /* Send out a packet. */
-       result = send_packet (client -> interface, (struct packet *)0,
-                             &client -> packet,
-                             client -> packet_length,
-                             inaddr_any, &sockaddr_broadcast,
-                             (struct hardware *)0);
+       result = send_packet(client->interface, NULL, &client->packet,
+                            client->packet_length, inaddr_any,
+                            &sockaddr_broadcast, NULL);
+       if (result < 0) {
+               log_error("%s:%d: Failed to send %d byte long packet over %s"
+                         " interface.", MDL, client->packet_length,
+                         client->interface->name);
+       }
 }
 
 void send_release (cpp)
@@ -2242,20 +2257,29 @@ void send_release (cpp)
              inet_ntoa (destination.sin_addr),
              ntohs (destination.sin_port));
 
-       if (fallback_interface)
-               result = send_packet (fallback_interface,
-                                     (struct packet *)0,
-                                     &client -> packet,
-                                     client -> packet_length,
-                                     from, &destination,
-                                     (struct hardware *)0);
-       else
+       if (fallback_interface) {
+               result = send_packet(fallback_interface, NULL, &client->packet,
+                                     client->packet_length, from, &destination,
+                                     NULL);
+               if (result < 0) {
+                       log_error("%s:%d: Failed to send %d byte long packet"
+                                 " over %s interface.", MDL,
+                                 client->packet_length,
+                                 fallback_interface->name);
+               }
+        } else {
                /* Send out a packet. */
-               result = send_packet (client -> interface, (struct packet *)0,
-                                     &client -> packet,
-                                     client -> packet_length,
-                                     from, &destination,
-                                     (struct hardware *)0);
+               result = send_packet(client->interface, NULL, &client->packet,
+                                     client->packet_length, from, &destination,
+                                     NULL);
+               if (result < 0) {
+                       log_error ("%s:%d: Failed to send %d byte long packet"
+                                  " over %s interface.", MDL,
+                                  client->packet_length,
+                                  client->interface->name);
+               }
+
+        }
 }
 
 void
@@ -3219,7 +3243,6 @@ void script_write_params (client, prefix, lease)
                                  lease->server_name);
                }
        }
-                               
 
        for (i = 0; i < lease -> options -> universe_count; i++) {
                option_space_foreach ((struct packet *)0, (struct lease *)0,
index c24b4a6adbb166c4c87a4e873e6084038eb3bf4c..90d2262c07b9fd9d911d0f079762b64c8ddea415 100644 (file)
@@ -3,6 +3,7 @@
    OMAPI object interfaces for the DHCP server. */
 
 /*
+ * Copyright (c) 2012 Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 2004-2007,2009 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1999-2003 by Internet Software Consortium
  *
@@ -435,7 +436,7 @@ isc_result_t dhcp_group_remove (omapi_object_t *lp,
 
        status = dhcp_group_destroy ((omapi_object_t *)group, MDL);
 
-       return ISC_R_SUCCESS;
+       return status;
 }
 
 isc_result_t dhcp_control_set_value  (omapi_object_t *h,
@@ -511,12 +512,12 @@ isc_result_t dhcp_control_destroy (omapi_object_t *h,
 isc_result_t dhcp_control_signal_handler (omapi_object_t *h,
                                        const char *name, va_list ap)
 {
-       dhcp_control_object_t *control;
+       /* In this function h should be a (dhcp_control_object_t *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_control)
                return DHCP_R_INVALIDARG;
-       control = (dhcp_control_object_t *)h;
 
        /* Try to find some inner object that can take the value. */
        if (h -> inner && h -> inner -> type -> get_value) {
@@ -572,11 +573,11 @@ isc_result_t dhcp_control_lookup (omapi_object_t **lp,
                status = omapi_get_value_str (ref, id, "handle", &tv);
                if (status == ISC_R_SUCCESS) {
                        status = omapi_handle_td_lookup (lp, tv -> value);
-                       
+
                        omapi_value_dereference (&tv, MDL);
                        if (status != ISC_R_SUCCESS)
                                return status;
-                       
+
                        /* Don't return the object if the type is wrong. */
                        if ((*lp) -> type != dhcp_type_control) {
                                omapi_object_dereference (lp, MDL);
@@ -612,12 +613,12 @@ isc_result_t dhcp_subnet_set_value  (omapi_object_t *h,
                                     omapi_data_string_t *name,
                                     omapi_typed_data_t *value)
 {
-       struct subnet *subnet;
+       /* In this function h should be a (struct subnet *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_subnet)
                return DHCP_R_INVALIDARG;
-       subnet = (struct subnet *)h;
 
        /* No values to set yet. */
 
@@ -628,7 +629,7 @@ isc_result_t dhcp_subnet_set_value  (omapi_object_t *h,
                if (status == ISC_R_SUCCESS || status == DHCP_R_UNCHANGED)
                        return status;
        }
-                         
+
        return ISC_R_NOTFOUND;
 }
 
@@ -637,12 +638,12 @@ isc_result_t dhcp_subnet_get_value (omapi_object_t *h, omapi_object_t *id,
                                    omapi_data_string_t *name,
                                    omapi_value_t **value)
 {
-       struct subnet *subnet;
+       /* In this function h should be a (struct subnet *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_subnet)
                return DHCP_R_INVALIDARG;
-       subnet = (struct subnet *)h;
 
        /* No values to get yet. */
 
@@ -658,14 +659,17 @@ isc_result_t dhcp_subnet_get_value (omapi_object_t *h, omapi_object_t *id,
 
 isc_result_t dhcp_subnet_destroy (omapi_object_t *h, const char *file, int line)
 {
+#if defined (DEBUG_MEMORY_LEAKAGE) || \
+               defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
        struct subnet *subnet;
+#endif
 
        if (h -> type != dhcp_type_subnet)
                return DHCP_R_INVALIDARG;
-       subnet = (struct subnet *)h;
 
 #if defined (DEBUG_MEMORY_LEAKAGE) || \
                defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
+       subnet = (struct subnet *)h;
        if (subnet -> next_subnet)
                subnet_dereference (&subnet -> next_subnet, file, line);
        if (subnet -> next_sibling)
@@ -685,13 +689,13 @@ isc_result_t dhcp_subnet_destroy (omapi_object_t *h, const char *file, int line)
 isc_result_t dhcp_subnet_signal_handler (omapi_object_t *h,
                                         const char *name, va_list ap)
 {
-       struct subnet *subnet;
+       /* In this function h should be a (struct subnet *) */
+
        isc_result_t status;
        int updatep = 0;
 
        if (h -> type != dhcp_type_subnet)
                return DHCP_R_INVALIDARG;
-       subnet = (struct subnet *)h;
 
        /* Can't write subnets yet. */
 
@@ -711,12 +715,12 @@ isc_result_t dhcp_subnet_stuff_values (omapi_object_t *c,
                                       omapi_object_t *id,
                                       omapi_object_t *h)
 {
-       struct subnet *subnet;
+       /* In this function h should be a (struct subnet *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_subnet)
                return DHCP_R_INVALIDARG;
-       subnet = (struct subnet *)h;
 
        /* Can't stuff subnet values yet. */
 
@@ -761,12 +765,12 @@ isc_result_t dhcp_shared_network_set_value  (omapi_object_t *h,
                                             omapi_data_string_t *name,
                                             omapi_typed_data_t *value)
 {
-       struct shared_network *shared_network;
+       /* In this function h should be a (struct shared_network *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_shared_network)
                return DHCP_R_INVALIDARG;
-       shared_network = (struct shared_network *)h;
 
        /* No values to set yet. */
 
@@ -777,7 +781,7 @@ isc_result_t dhcp_shared_network_set_value  (omapi_object_t *h,
                if (status == ISC_R_SUCCESS || status == DHCP_R_UNCHANGED)
                        return status;
        }
-                         
+
        return ISC_R_NOTFOUND;
 }
 
@@ -787,12 +791,12 @@ isc_result_t dhcp_shared_network_get_value (omapi_object_t *h,
                                            omapi_data_string_t *name,
                                            omapi_value_t **value)
 {
-       struct shared_network *shared_network;
+       /* In this function h should be a (struct shared_network *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_shared_network)
                return DHCP_R_INVALIDARG;
-       shared_network = (struct shared_network *)h;
 
        /* No values to get yet. */
 
@@ -809,14 +813,19 @@ isc_result_t dhcp_shared_network_get_value (omapi_object_t *h,
 isc_result_t dhcp_shared_network_destroy (omapi_object_t *h,
                                          const char *file, int line)
 {
+       /* In this function h should be a (struct shared_network *) */
+
+#if defined (DEBUG_MEMORY_LEAKAGE) || \
+    defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
        struct shared_network *shared_network;
+#endif
 
        if (h -> type != dhcp_type_shared_network)
                return DHCP_R_INVALIDARG;
-       shared_network = (struct shared_network *)h;
 
 #if defined (DEBUG_MEMORY_LEAKAGE) || \
                defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
+       shared_network = (struct shared_network *)h;
        if (shared_network -> next)
                shared_network_dereference (&shared_network -> next,
                                            file, line);
@@ -849,13 +858,13 @@ isc_result_t dhcp_shared_network_signal_handler (omapi_object_t *h,
                                                 const char *name,
                                                 va_list ap)
 {
-       struct shared_network *shared_network;
+       /* In this function h should be a (struct shared_network *) */
+
        isc_result_t status;
        int updatep = 0;
 
        if (h -> type != dhcp_type_shared_network)
                return DHCP_R_INVALIDARG;
-       shared_network = (struct shared_network *)h;
 
        /* Can't write shared_networks yet. */
 
@@ -875,12 +884,12 @@ isc_result_t dhcp_shared_network_stuff_values (omapi_object_t *c,
                                               omapi_object_t *id,
                                               omapi_object_t *h)
 {
-       struct shared_network *shared_network;
+       /* In this function h should be a (struct shared_network *) */
+
        isc_result_t status;
 
        if (h -> type != dhcp_type_shared_network)
                return DHCP_R_INVALIDARG;
-       shared_network = (struct shared_network *)h;
 
        /* Can't stuff shared_network values yet. */
 
index e37fd3d8e8c8d7bb756f0e391007e948aff47c0e..3c08d33beceb0433de398641c05abd0e5a6a6601 100644 (file)
@@ -3,7 +3,7 @@
    DHCP options parsing and reassembly. */
 
 /*
- * Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -2361,7 +2361,7 @@ prepare_option_buffer(struct universe *universe, struct buffer *bp,
       cleanup:
        option_dereference(&option, MDL);
 
-       return 1;
+       return status;
 }
 
 static void
index 0d3e7c6019d377f92a3e2aa23fa97eea62f6e11b..434085a2d2f1263aa7e2c651806362cea4268f93 100644 (file)
@@ -907,7 +907,7 @@ parse_date_core(cfile)
        struct parse *cfile;
 {
        int guess;
-       int tzoff, wday, year, mon, mday, hour, min, sec;
+       int tzoff, year, mon, mday, hour, min, sec;
        const char *val;
        enum dhcp_token token;
        static int months[11] = { 31, 59, 90, 120, 151, 181,
@@ -945,7 +945,7 @@ parse_date_core(cfile)
                return((TIME)0);
        }
        token = next_token(&val, NULL, cfile); /* consume day of week */
-       wday = atoi(val);
+        /* we are not using this for anything */
 
        /* Year... */
        token = peek_token(&val, NULL, cfile);
@@ -3390,11 +3390,10 @@ int parse_boolean_expression (expr, cfile, lose)
 int parse_boolean (cfile)
        struct parse *cfile;
 {
-       enum dhcp_token token;
        const char *val;
        int rv;
 
-       token = next_token (&val, (unsigned *)0, cfile);
+        (void)next_token(&val, NULL, cfile);
        if (!strcasecmp (val, "true")
            || !strcasecmp (val, "on"))
                rv = 1;
index e8eac79944ba800e2801dec9c065f32472b7eb7f..d5d0ae073527221e6b3eb6a5acaac36f2b01d457 100644 (file)
@@ -3,7 +3,7 @@
    Turn data structures into printable text. */
 
 /*
- * Copyright (c) 2009-2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2009-2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
@@ -479,10 +479,9 @@ char *print_dotted_quads (len, data)
 {
        static char dq_buf [DQLEN + 1];
        int i;
-       char *s, *last;
+       char *s;
 
        s = &dq_buf [0];
-       last = s;
        
        i = 0;
 
index 21e1f5f0ad6211dbd58d2f329c53fe9ebe580c6a..f95665c327672066cdb794c87e6749b2e7f5c2d2 100644 (file)
@@ -1000,6 +1000,9 @@ isc_result_t fallback_discard (object)
                log_error ("fallback_discard: %m");
                return ISC_R_UNEXPECTED;
        }
+#else
+        /* ignore the fact that status value is never used */
+        IGNORE_UNUSED(status);
 #endif
        return ISC_R_SUCCESS;
 }
index 620d7140dd153b0a5b787609412c5bc41a5bd8b4..d17aa3e19333d3c6d41cc25639fe0668f9575c91 100644 (file)
@@ -1,9 +1,10 @@
 #ifndef LINT
-static const char rcsid[] = "$Header: /tmp/cvstest/DHCP/dst/prandom.c,v 1.9 2009/11/24 02:06:56 sar Exp $";
+static const char rcsid[] = "$Header: /tmp/cvstest/DHCP/dst/prandom.c,v 1.10 2012/03/09 11:18:13 tomasz Exp $";
 #endif
 /*
- * Portions Copyright (c) 1995-1998 by Trusted Information Systems, Inc.
+ * Portions Copyright (c) 2012 by Internet Systems Consortium, Inc. ("ISC")
  * Portions Copyright (c) 2007,2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Portions Copyright (c) 1995-1998 by Trusted Information Systems, Inc.
  *
  * Permission to use, copy modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -694,7 +695,6 @@ own_random(dst_work *work)
 {
        int dir = 0, b;
        int bytes, n, cmd = 0, dig = 0;
-       int start =0;
 /* 
  * now get the initial seed to put into the quick random function from 
  * the address of the work structure 
@@ -709,7 +709,6 @@ own_random(dst_work *work)
 /* pick a random number in the range of 0..7 based on that random number
  * perform some operations that yield random data
  */
-               start = work->filled;
                n = (dst_s_quick_random(bytes) >> DST_SHIFT) & 0x07;
                switch (n) {
                    case 0:
index b04e5b58087aae066ce95ad7ca38e6bd76d61d74..d5ef422edda903d29e1245417e723bbe4a4f45b2 100644 (file)
@@ -4,7 +4,7 @@
 
 /*
  * Copyright (c) 1995 RadioMail Corporation.  All rights reserved.
- * Copyright (c) 2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2011,2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 2004,2009 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1996-2003 by Internet Software Consortium
  *
  * the warning by the use of void.  In conjunction with the use of -Werror
  * these warnings prohibit the compilation of the package.  This macro
  * allows us to assign the return value to a variable and then ignore it.
+ *
+ * __attribute__((unused)) is added for avoiding another warning about set,
+ * but unused variable. This is produced by unused-but-set-variable switch
+ * that is enabled by default in gcc 4.6.
  */
 #if !defined(__GNUC__) || (__GNUC__ < 4)
 #define IGNORE_RET(x) (void) x
 #else
 #define IGNORE_RET(x)                  \
        do {                            \
-               int ignore_return;      \
-               ignore_return = x;      \
+                int __attribute__((unused)) ignore_return ;\
+                ignore_return = x;                         \
        } while (0)
 #endif
 
+/* This macro is defined to avoid unused-but-set-variable warning
+ * that is enabled in gcc 4.6 
+ */
+
+#define IGNORE_UNUSED(x) { x = x; }
+
 #endif /* __ISC_DHCP_CDEFS_H__ */
index b69ef126e8fe83538b059e503216db9178343518..8405acfd9985805328df3fc95e219090e1dba64f 100644 (file)
@@ -3,7 +3,7 @@
    Functions for maintaining handles on objects. */
 
 /*
- * Copyright (c) 2009-2010 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2009-2010,2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1999-2003 by Internet Software Consortium
  *
@@ -252,7 +252,6 @@ static isc_result_t omapi_handle_lookup_in (omapi_object_t **o,
                                            omapi_handle_table_t *table,
                                            int op)
 {
-       omapi_handle_table_t *inner;
        omapi_handle_t scale, index;
 
        if (!table || table->first > h || table->limit <= h)
@@ -282,7 +281,6 @@ static isc_result_t omapi_handle_lookup_in (omapi_object_t **o,
           handle must be the subtable of this table whose index into this
           table's array of children is the handle divided by the scale. */
        index = (h - table->first) / scale;
-       inner = table->children[index].table;
 
        return(omapi_handle_lookup_in(o, h, table->children[index].table, op));
 }
index 0c4dcb134cbbf4b9a356221ba962bc5b56fadb58..30259eb699a8831c4793111ae3f08bb50a4892bd 100644 (file)
@@ -3,6 +3,7 @@
    Subroutines that support the generic listener object. */
 
 /*
+ * Copyright (c) 2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 2004,2007,2009 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1999-2003 by Internet Software Consortium
  *
@@ -124,7 +125,7 @@ isc_result_t omapi_listen_addr (omapi_object_t *h,
                                status = ISC_R_UNEXPECTED;
                        goto error_exit;
                }
-       
+
 #if defined (HAVE_SETFD)
                if (fcntl (obj -> socket, F_SETFD, 1) < 0) {
                        status = ISC_R_UNEXPECTED;
@@ -140,7 +141,7 @@ isc_result_t omapi_listen_addr (omapi_object_t *h,
                        status = ISC_R_UNEXPECTED;
                        goto error_exit;
                }
-               
+
                /* Try to bind to the wildcard address using the port number
                   we were given. */
                i = bind (obj -> socket,
@@ -369,6 +370,10 @@ static void trace_listener_accept_input (trace_type_t *ttype,
                        obj = (omapi_connection_object_t *)0;
                        status = omapi_listener_connect (&obj,
                                                         lp, 0, &remote_addr);
+                       if (status != ISC_R_SUCCESS) {
+                               log_error("%s:%d: OMAPI: Failed to connect "
+                                         "a listener.", MDL);
+                       }
                        omapi_listener_dereference (&lp, MDL);
                        return;
                }
index c88fab843ad00e35f01cc2cda42a6ad19af178d8..477bb045703cd51d9a4c9518fa4214f6af07fa27 100644 (file)
@@ -3,7 +3,8 @@
    BOOTP Protocol support. */
 
 /*
- * Copyright (c) 2004,2005,2007,2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2009,2012 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004,2005,2007 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -384,10 +385,16 @@ void bootp (packet)
                to.sin_port = local_port;
 
                if (fallback_interface) {
-                       result = send_packet (fallback_interface,
-                                             (struct packet *)0,
-                                             &raw, outgoing.packet_length,
-                                             from, &to, &hto);
+                       result = send_packet (fallback_interface, NULL, &raw,
+                                             outgoing.packet_length, from,
+                                             &to, &hto);
+                       if (result < 0) {
+                               log_error ("%s:%d: Failed to send %d byte long "
+                                          "packet over %s interface.", MDL,
+                                          outgoing.packet_length,
+                                          fallback_interface->name);
+                       }
+
                        goto out;
                }
 
@@ -407,10 +414,16 @@ void bootp (packet)
        }
 
        errno = 0;
-       result = send_packet (packet -> interface,
-                             packet, &raw, outgoing.packet_length,
-                             from, &to, &hto);
+       result = send_packet(packet->interface, packet, &raw,
+                            outgoing.packet_length, from, &to, &hto);
+       if (result < 0) {
+               log_error ("%s:%d: Failed to send %d byte long packet over %s"
+                          " interface.", MDL, outgoing.packet_length,
+                          packet->interface->name);
+       }
+
       out:
+
        if (options)
                option_state_dereference (&options, MDL);
        if (lease)
index c30d0fbca6b556f5702ec46e31ae3ac7213ba20f..6cb84f7111048d7c364761676c3a613e533e895d 100644 (file)
@@ -3,7 +3,7 @@
    Persistent database management routines for DHCPD... */
 
 /*
- * Copyright (c) 2004-2010 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2010,2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -1021,7 +1021,11 @@ void db_startup (testp)
                /* Read in the existing lease file... */
                status = read_conf_file (path_dhcpd_db,
                                         (struct group *)0, 0, 1);
-               /* XXX ignore status? */
+               if (status != ISC_R_SUCCESS) {
+                       /* XXX ignore status? */
+                       ;
+               }
+
 #if defined (TRACING)
        }
 #endif
index 1f1017fe1acbf14a934833e231221645ed1c8611..cf2c044d0428d85e79461d063287f03ed7bde9ad 100644 (file)
@@ -81,7 +81,6 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
        struct option_cache *oc;
        int s1, s2;
        int result = 0;
-       isc_result_t rcode1 = ISC_R_SUCCESS;
        int server_updates_a = 1;
        //int server_updates_ptr = 1;
        struct buffer *bp = (struct buffer *)0;
@@ -536,7 +535,11 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
         * the ddns messages.  Currently we don't.
         */
        if (do_remove) {
-               rcode1 = ddns_removals(lease, lease6, ddns_cb, ISC_TRUE);
+               /*
+                * We should log a more specific error closer to the actual
+                * error if we want one. ddns_removal failure not logged here.
+                */
+                (void) ddns_removals(lease, lease6, ddns_cb, ISC_TRUE);
        }
        else {
                ddns_fwd_srv_connector(lease, lease6, scope, ddns_cb,
index 5875bb1be658fe1f1b0a9ff410a7b52e6c2d3e85..6ef2e4ada1ac0749c8a086fe3fe4f8a27facae43 100644 (file)
@@ -3,7 +3,7 @@
    DHCP Protocol engine. */
 
 /*
- * Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -419,7 +419,6 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
 #if defined (FAILOVER_PROTOCOL)
        dhcp_failover_state_t *peer;
 #endif
-       int have_server_identifier = 0;
        int have_requested_addr = 0;
 
        oc = lookup_option (&dhcp_universe, packet -> options,
@@ -473,7 +472,6 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
                 * safe.
                 */
                sprintf (smbuf, " (%s)", piaddr (sip));
-               have_server_identifier = 1;
        } else
                smbuf [0] = 0;
 
@@ -969,6 +967,8 @@ void dhcpinform (packet, ms_nulltp)
        struct sockaddr_in to;
        struct in_addr from;
        isc_boolean_t zeroed_ciaddr;
+       struct interface_info *interface;
+       int result;
 
        /* The client should set ciaddr to its IP address, but apparently
           it's common for clients not to do this, so we'll use their IP
@@ -1169,7 +1169,7 @@ void dhcpinform (packet, ms_nulltp)
                                   packet -> options, options,
                                   &global_scope, oc, MDL)) {
                struct universe *u = (struct universe *)0;
-               
+
                if (!universe_hash_lookup (&u, universe_hash,
                                           (const char *)d1.data, d1.len,
                                           MDL)) {
@@ -1314,10 +1314,17 @@ void dhcpinform (packet, ms_nulltp)
                                            packet->interface->name);
 
        errno = 0;
-       send_packet ((fallback_interface
-                     ? fallback_interface : packet -> interface),
-                    &outgoing, &raw, outgoing.packet_length,
-                    from, &to, (struct hardware *)0);
+       interface = (fallback_interface ? fallback_interface
+                    : packet -> interface);
+       result = send_packet(interface, &outgoing, &raw,
+                            outgoing.packet_length, from, &to, NULL);
+       if (result < 0) {
+               log_error ("%s:%d: Failed to send %d byte long packet over %s "
+                          "interface.", MDL, outgoing.packet_length,
+                          interface->name);
+       }
+
+
        if (subnet)
                subnet_dereference (&subnet, MDL);
 }
@@ -1464,6 +1471,13 @@ void nak_lease (packet, cip)
                        result = send_packet(fallback_interface, packet, &raw,
                                             outgoing.packet_length, from, &to,
                                             NULL);
+                       if (result < 0) {
+                               log_error ("%s:%d: Failed to send %d byte long "
+                                          "packet over %s interface.", MDL,
+                                          outgoing.packet_length,
+                                          fallback_interface->name);
+                       }
+
                        return;
                }
        } else {
@@ -1474,6 +1488,12 @@ void nak_lease (packet, cip)
        errno = 0;
        result = send_packet(packet->interface, packet, &raw,
                             outgoing.packet_length, from, &to, NULL);
+        if (result < 0) {
+                log_error ("%s:%d: Failed to send %d byte long packet over %s "
+                           "interface.", MDL, outgoing.packet_length,
+                           packet->interface->name);
+        }
+
 }
 
 void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
@@ -3214,11 +3234,16 @@ void dhcp_reply (lease)
                        to.sin_port = remote_port; /* For debugging. */
 
                if (fallback_interface) {
-                       result = send_packet (fallback_interface,
-                                             (struct packet *)0,
-                                             &raw, packet_length,
-                                             raw.siaddr, &to,
-                                             (struct hardware *)0);
+                       result = send_packet(fallback_interface, NULL, &raw,
+                                            packet_length, raw.siaddr, &to,
+                                            NULL);
+                       if (result < 0) {
+                               log_error ("%s:%d: Failed to send %d byte long "
+                                          "packet over %s interface.", MDL,
+                                          packet_length,
+                                          fallback_interface->name);
+                       }
+
 
                        free_lease_state (state, MDL);
                        lease -> state = (struct lease_state *)0;
@@ -3247,11 +3272,16 @@ void dhcp_reply (lease)
                to.sin_port = remote_port;
 
                if (fallback_interface) {
-                       result = send_packet (fallback_interface,
-                                             (struct packet *)0,
-                                             &raw, packet_length,
-                                             raw.siaddr, &to,
-                                             (struct hardware *)0);
+                       result = send_packet(fallback_interface, NULL, &raw,
+                                            packet_length, raw.siaddr, &to,
+                                            NULL);
+                       if (result < 0) {
+                               log_error("%s:%d: Failed to send %d byte long"
+                                         " packet over %s interface.", MDL,
+                                          packet_length,
+                                          fallback_interface->name);
+                       }
+
                        free_lease_state (state, MDL);
                        lease -> state = (struct lease_state *)0;
                        return;
@@ -3276,10 +3306,14 @@ void dhcp_reply (lease)
 
        memcpy (&from, state -> from.iabuf, sizeof from);
 
-       result = send_packet (state -> ip,
-                             (struct packet *)0, &raw, packet_length,
-                             from, &to,
-                             unicastp ? &hto : (struct hardware *)0);
+       result = send_packet(state->ip, NULL, &raw, packet_length,
+                             from, &to, unicastp ? &hto : NULL);
+       if (result < 0) {
+           log_error ("%s:%d: Failed to send %d byte long "
+                      "packet over %s interface.", MDL,
+                      packet_length, state->ip->name);
+       }
+
 
        /* Free all of the entries in the option_state structure
           now that we're done with them. */
index 2e88d7fba3f46476b556e66391c07508c6383fdf..3e7a9807efbc296eb281a8b5d8321d50a67cbf15 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2006-2012 by Internet Systems Consortium, Inc. ("ISC")
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -4617,7 +4617,6 @@ iterate_over_ia_na(struct data_string *reply_ret,
        struct option_state *host_opt_state;
        struct data_string iaaddr;
        struct data_string fixed_addr;
-       int iaaddr_is_found;
        char reply_data[65536];
        struct dhcpv6_packet *reply = (struct dhcpv6_packet *)reply_data;
        int reply_ofs = (int)(offsetof(struct dhcpv6_packet, options));
@@ -4724,7 +4723,6 @@ iterate_over_ia_na(struct data_string *reply_ret,
         */
        for (ia = lookup_option(&dhcpv6_universe, packet->options, D6O_IA_NA);
             ia != NULL; ia = ia->next) {
-               iaaddr_is_found = 0;
 
                if (!get_encapsulated_IA_state(&cli_enc_opt_state,
                                               &cli_enc_opt_data,
@@ -5136,7 +5134,6 @@ iterate_over_ia_pd(struct data_string *reply_ret,
        struct host_decl *host;
        struct option_state *host_opt_state;
        struct data_string iaprefix;
-       int iaprefix_is_found;
        char reply_data[65536];
        int reply_ofs;
        struct iasubopt *prefix;
@@ -5203,7 +5200,6 @@ iterate_over_ia_pd(struct data_string *reply_ret,
         */
        for (ia = lookup_option(&dhcpv6_universe, packet->options, D6O_IA_PD);
             ia != NULL; ia = ia->next) {
-           iaprefix_is_found = 0;
 
            if (!get_encapsulated_IA_state(&cli_enc_opt_state,
                                           &cli_enc_opt_data,
index 26be290cc0036006cd9d31b92acd3439ac72bebd..8d7fe7896e5e0af0e2e50a1f98318b8ae0318cd2 100644 (file)
@@ -3,7 +3,7 @@
    Failover protocol support code... */
 
 /*
- * Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1999-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -32,6 +32,7 @@
  * ``http://www.nominum.com''.
  */
 
+#include "cdefs.h"
 #include "dhcpd.h"
 #include <omapip/omapip_p.h>
 
@@ -2412,7 +2413,8 @@ dhcp_failover_pool_dobalance(dhcp_failover_state_t *state,
        struct shared_network *s;
        struct pool *p;
        binding_state_t peer_lease_state;
-       binding_state_t my_lease_state;
+       /* binding_state_t my_lease_state; */
+        /* XXX Why is this my_lease_state never used? */
        struct lease **lq;
        int (*log_func)(const char *, ...);
        const char *result, *reqlog;
@@ -2436,12 +2438,12 @@ dhcp_failover_pool_dobalance(dhcp_failover_state_t *state,
                if (p->failover_peer->i_am == primary) {
                        lts = (p->free_leases - p->backup_leases) / 2;
                        peer_lease_state = FTS_BACKUP;
-                       my_lease_state = FTS_FREE;
+                       /* my_lease_state = FTS_FREE; */
                        lq = &p->free;
                } else {
                        lts = (p->backup_leases - p->free_leases) / 2;
                        peer_lease_state = FTS_FREE;
-                       my_lease_state = FTS_BACKUP;
+                       /* my_lease_state = FTS_BACKUP; */
                        lq = &p->backup;
                }
 
@@ -3257,13 +3259,13 @@ isc_result_t dhcp_failover_state_stuff (omapi_object_t *c,
                                        omapi_object_t *id,
                                        omapi_object_t *h)
 {
+       /* In this function c should be a (omapi_connection_object_t *) */
+
        dhcp_failover_state_t *s;
-       omapi_connection_object_t *conn;
        isc_result_t status;
 
        if (c -> type != omapi_type_connection)
                return DHCP_R_INVALIDARG;
-       conn = (omapi_connection_object_t *)c;
 
        if (h -> type != dhcp_type_failover_state)
                return DHCP_R_INVALIDARG;
@@ -4306,6 +4308,8 @@ void dhcp_failover_send_contact (void *vstate)
        if (obufix) {
                log_debug ("%s", obuf);
        }
+#else
+        IGNORE_UNUSED(status);
 #endif
        return;
 }
@@ -4354,6 +4358,8 @@ isc_result_t dhcp_failover_send_state (dhcp_failover_state_t *state)
        if (obufix) {
                log_debug ("%s", obuf);
        }
+#else
+        IGNORE_UNUSED(status);
 #endif
        return ISC_R_SUCCESS;
 }
@@ -4490,7 +4496,6 @@ isc_result_t dhcp_failover_send_disconnect (omapi_object_t *l,
                                            const char *message)
 {
        dhcp_failover_link_t *link;
-       dhcp_failover_state_t *state;
        isc_result_t status;
 #if defined (DEBUG_FAILOVER_MESSAGES)  
        char obuf [64];
@@ -4505,7 +4510,6 @@ isc_result_t dhcp_failover_send_disconnect (omapi_object_t *l,
        if (!l || l -> type != dhcp_type_failover_link)
                return DHCP_R_INVALIDARG;
        link = (dhcp_failover_link_t *)l;
-       state = link -> state_object;
        if (!l -> outer || l -> outer -> type != omapi_type_connection)
                return DHCP_R_INVALIDARG;
 
index 262943524960b7e9f7079b51c3fe9ff0331b5a0f..22b5358aa4511d932c081f9c878d81346e674434 100644 (file)
@@ -3,7 +3,7 @@
    OMAPI object interfaces for the DHCP server. */
 
 /*
- * Copyright (c) 2004-2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2009,2012 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1999-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -480,12 +480,11 @@ isc_result_t dhcp_lease_destroy (omapi_object_t *h, const char *file, int line)
 isc_result_t dhcp_lease_signal_handler (omapi_object_t *h,
                                        const char *name, va_list ap)
 {
-       struct lease *lease;
+       /* h should point to (struct lease *) */
        isc_result_t status;
 
        if (h -> type != dhcp_type_lease)
                return DHCP_R_INVALIDARG;
-       lease = (struct lease *)h;
 
        if (!strcmp (name, "updated"))
                return ISC_R_SUCCESS;
@@ -1175,14 +1174,13 @@ isc_result_t dhcp_host_get_value (omapi_object_t *h, omapi_object_t *id,
 
 isc_result_t dhcp_host_destroy (omapi_object_t *h, const char *file, int line)
 {
-       struct host_decl *host;
 
        if (h -> type != dhcp_type_host)
                return DHCP_R_INVALIDARG;
-       host = (struct host_decl *)h;
 
 #if defined (DEBUG_MEMORY_LEAKAGE) || \
                defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
+       struct host_decl *host = (struct host_decl *)h;
        if (host -> n_ipaddr)
                host_dereference (&host -> n_ipaddr, file, line);
        if (host -> n_dynamic)
@@ -1388,7 +1386,7 @@ isc_result_t dhcp_host_lookup (omapi_object_t **lp,
                                  tv -> value -> u.buffer.value,
                                  tv -> value -> u.buffer.len, MDL);
                omapi_value_dereference (&tv, MDL);
-                       
+
                if (*lp && *lp != (omapi_object_t *)host) {
                        omapi_object_dereference (lp, MDL);
                        if (host)
@@ -1594,12 +1592,11 @@ isc_result_t dhcp_pool_set_value  (omapi_object_t *h,
                                   omapi_data_string_t *name,
                                   omapi_typed_data_t *value)
 {
-       struct pool *pool;
+       /* h should point to (struct pool *) */
        isc_result_t status;
 
        if (h -> type != dhcp_type_pool)
                return DHCP_R_INVALIDARG;
-       pool = (struct pool *)h;
 
        /* No values to set yet. */
 
@@ -1619,12 +1616,11 @@ isc_result_t dhcp_pool_get_value (omapi_object_t *h, omapi_object_t *id,
                                  omapi_data_string_t *name,
                                  omapi_value_t **value)
 {
-       struct pool *pool;
+       /* h should point to (struct pool *) */
        isc_result_t status;
 
        if (h -> type != dhcp_type_pool)
                return DHCP_R_INVALIDARG;
-       pool = (struct pool *)h;
 
        /* No values to get yet. */
 
@@ -1640,7 +1636,6 @@ isc_result_t dhcp_pool_get_value (omapi_object_t *h, omapi_object_t *id,
 
 isc_result_t dhcp_pool_destroy (omapi_object_t *h, const char *file, int line)
 {
-       struct pool *pool;
 #if defined (DEBUG_MEMORY_LEAKAGE) || \
                defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
        struct permit *pc, *pn;
@@ -1648,10 +1643,10 @@ isc_result_t dhcp_pool_destroy (omapi_object_t *h, const char *file, int line)
 
        if (h -> type != dhcp_type_pool)
                return DHCP_R_INVALIDARG;
-       pool = (struct pool *)h;
 
 #if defined (DEBUG_MEMORY_LEAKAGE) || \
                defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
+       struct pool *pool = (struct pool *)h;
        if (pool -> next)
                pool_dereference (&pool -> next, file, line);
        if (pool -> group)
@@ -1692,13 +1687,12 @@ isc_result_t dhcp_pool_destroy (omapi_object_t *h, const char *file, int line)
 isc_result_t dhcp_pool_signal_handler (omapi_object_t *h,
                                       const char *name, va_list ap)
 {
-       struct pool *pool;
+       /* h should point to (struct pool *) */
        isc_result_t status;
        int updatep = 0;
 
        if (h -> type != dhcp_type_pool)
                return DHCP_R_INVALIDARG;
-       pool = (struct pool *)h;
 
        /* Can't write pools yet. */
 
@@ -1718,12 +1712,11 @@ isc_result_t dhcp_pool_stuff_values (omapi_object_t *c,
                                     omapi_object_t *id,
                                     omapi_object_t *h)
 {
-       struct pool *pool;
+       /* h should point to (struct pool *) */
        isc_result_t status;
 
        if (h -> type != dhcp_type_pool)
                return DHCP_R_INVALIDARG;
-       pool = (struct pool *)h;
 
        /* Can't stuff pool values yet. */
 
@@ -1951,14 +1944,13 @@ isc_result_t dhcp_class_get_value (omapi_object_t *h, omapi_object_t *id,
 
 isc_result_t dhcp_class_destroy (omapi_object_t *h, const char *file, int line)
 {
-       struct class *class;
 
        if (h -> type != dhcp_type_class && h -> type != dhcp_type_subclass)
                return DHCP_R_INVALIDARG;
-       class = (struct class *)h;
 
 #if defined (DEBUG_MEMORY_LEAKAGE) || \
                defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
+       struct class *class = (struct class *)h;
        if (class -> nic)
                class_dereference (&class -> nic, file, line);
        if (class -> superclass)
@@ -2065,7 +2057,7 @@ class_signal_handler(omapi_object_t *h,
 
        if (updatep)
                return ISC_R_SUCCESS;
-       
+
        return ISC_R_NOTFOUND;
 }
 
@@ -2083,12 +2075,11 @@ isc_result_t dhcp_class_stuff_values (omapi_object_t *c,
                                      omapi_object_t *id,
                                      omapi_object_t *h)
 {
-       struct class *class;
+       /* h should point to (struct class *) */
        isc_result_t status;
 
        if (h -> type != dhcp_type_class)
                return DHCP_R_INVALIDARG;
-       class = (struct class *)h;
 
        /* Can't stuff class values yet. */