make range allocation dynamic
[debian/dhcpd-pools.git] / src / getdata.c
index c25d87e..1334855 100644 (file)
@@ -386,9 +386,14 @@ char *parse_config(int is_include, char *config_file,
                                range_p->backups = 0;
                                range_p->shared_net = shared_p;
                                num_ranges++;
-                               if (RANGES < num_ranges) {
-                                       errx(EXIT_FAILURE,
-                                            "parse_config: Range space full! Increase RANGES and recompile.");
+                               if (RANGES < num_ranges + 1) {
+                                       RANGES *= 2;
+                                       ranges =
+                                           safe_realloc(ranges,
+                                                        sizeof(struct
+                                                               range_t) *
+                                                        RANGES);
+                                       range_p = ranges + num_ranges;
                                }
                                newclause = true;
                                break;
@@ -427,7 +432,15 @@ char *parse_config(int is_include, char *config_file,
                                         * away by reallocationg
                                         * more space. */
                                        errx(EXIT_FAILURE,
-                                            "parse_config: End of shared-network space, increase SHARED_NETWORKS_NAMES and recompile");
+                                            "parse_config: increase default.h SHARED_NETWORKS_NAMES and recompile");
+                               }
+                               if (SHARED_NETWORKS <
+                                   num_shared_networks + 2) {
+                                       /* FIXME: make this
+                                        * away by reallocationg
+                                        * more space. */
+                                       errx(EXIT_FAILURE,
+                                            "parse_config: increase default.h SHARED_NETWORKS and recompile");
                                }
                                argument = 0;
                                braces_shared = braces;