-/*
-** Copyright (C) 2006- Sami Kerola <kerolasa@iki.fi>
-**
-** This program is free software; you can redistribute it and/or modify
+/* http://dhcpd-pools.sourceforge.net/
+** Copyright 2006- Sami Kerola <kerolasa@iki.fi>
+**
+** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
+** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
-**
+**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
-**
+**
** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef HAVE_CONFIG_H
break;
switch (c) {
- case 0:
- break;
case 'c':
/* config file */
strncpy(config.dhcpdconf_file, optarg,
/* Output sorting option */
sorts = strlen(optarg);
if (5 < sorts) {
- warnx("main: only first 5 sort orders will be used");
+ warnx
+ ("main: only first 5 sort orders will be used");
strncpy(config.sort, optarg, (size_t) 5);
sorts = 5;
} else {
strncpy(config.sort, optarg,
(size_t) sorts);
}
+ for (i = 0; i < sorts; i++) {
+ field_selector(config.sort[i]);
+ }
break;
case 'r':
/* What ever sort in reverse order */
case 'v':
/* Print version */
print_version();
- return (EXIT_SUCCESS);
case 'h':
/* Print help */
usage(EXIT_SUCCESS);
case 'c':
output_analysis = output_csv;
break;
- case 's':
- /* output_analysis = output_snmp; */
- output_analysis = output_txt;
- break;
default:
- errx(EXIT_FAILURE, "main: unknown ouput format `%c'",
+ errx(EXIT_FAILURE, "main: unknown output format `%c'",
config.output_format[0]);
}
/* Do the job */
prepare_memory();
- parse_config(true, config.dhcpdconf_file, shared_net_names,
- shared_net_names + strlen(shared_net_names) + 1,
- shared_networks);
-
- /* FIXME: move to output.c and use FILE *outfile */
- if ((config.output_format[0] == 'x')
- || (config.output_format[0] == 'X')) {
- printf("<dhcpstatus>\n");
- };
+ parse_config(true, config.dhcpdconf_file, shared_networks);
parse_leases();
prepare_data();
}
free(tmp_ranges);
output_analysis();
- /* After fopen in ouput ioctl does like /dev/null which
- * cause ENOTTY, and clean_up will see that without this
- * reset. At least linux does this, and possibly some
- * other systems. There's a report from FreeBSD 8.0 which
- * matches quite well with the symptom. */
- if (errno == 25)
- errno = 0;
-
- /* FIXME: move to output.c and use FILE *outfile */
- if ((config.output_format[0] == 'x')
- || (config.output_format[0] == 'X')) {
- printf("</dhcpstatus>\n");
- };
clean_up();
return (EXIT_SUCCESS);
/* Global allocations, counter resets etc */
int prepare_memory()
{
+ RANGES = 64;
num_ranges = num_shared_networks = 0;
shared_networks =
safe_malloc(sizeof(struct shared_network_t) * SHARED_NETWORKS);
- shared_net_names =
- safe_malloc(sizeof(char) * SHARED_NETWORKS_NAMES);
ranges = safe_malloc(sizeof(struct range_t) * RANGES);
+ macaddr = NULL;
/* First shared network entry is all networks */
- strcpy(shared_net_names, "All networks");
+ shared_networks->name = safe_strdup("All networks");
+
return 0;
}