diff options
author | Henning Brauer <henning@cvs.openbsd.org> | 2004-04-15 21:57:05 +0000 |
---|---|---|
committer | Henning Brauer <henning@cvs.openbsd.org> | 2004-04-15 21:57:05 +0000 |
commit | ae13a347c2b58724a66199882717d2244240b9b8 (patch) | |
tree | c587b634d68e9c1dd2bc47983831d3510eeeda3b /usr.sbin/dhcpd/db.c | |
parent | 941b0534adf70e4bb0cf0d550fad628fea195bf3 (diff) |
cleaning; from pedro
Diffstat (limited to 'usr.sbin/dhcpd/db.c')
-rw-r--r-- | usr.sbin/dhcpd/db.c | 254 |
1 files changed, 131 insertions, 123 deletions
diff --git a/usr.sbin/dhcpd/db.c b/usr.sbin/dhcpd/db.c index b2e3f47ea3a..638e2584363 100644 --- a/usr.sbin/dhcpd/db.c +++ b/usr.sbin/dhcpd/db.c @@ -1,6 +1,8 @@ -/* db.c +/* $OpenBSD: db.c,v 1.4 2004/04/15 21:57:04 henning Exp $ */ - Persistent database management routines for DHCPD... */ +/* + * Persistent database management routines for DHCPD. + */ /* * Copyright (c) 1995, 1996 The Internet Software Consortium. @@ -48,10 +50,11 @@ static int counting = 0; static int count = 0; time_t write_time; -/* Write the specified lease to the current lease database file. */ - -int write_lease (lease) - struct lease *lease; +/* + * Write the specified lease to the current lease database file. + */ +int +write_lease(struct lease *lease) { struct tm *t; char tbuf [64]; @@ -61,149 +64,154 @@ int write_lease (lease) if (counting) ++count; errno = 0; - fprintf (db_file, "lease %s {\n", piaddr (lease -> ip_addr)); - if (errno) { + fprintf(db_file, "lease %s {\n", piaddr(lease->ip_addr)); + if (errno) ++errors; - } - t = gmtime (&lease -> starts); - snprintf (tbuf, sizeof tbuf, "%d %d/%02d/%02d %02d:%02d:%02d;", - t -> tm_wday, t -> tm_year + 1900, - t -> tm_mon + 1, t -> tm_mday, - t -> tm_hour, t -> tm_min, t -> tm_sec); + t = gmtime(&lease->starts); + snprintf(tbuf, sizeof(tbuf), "%d %d/%02d/%02d %02d:%02d:%02d;", + t->tm_wday, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, + t->tm_hour, t->tm_min, t->tm_sec); + errno = 0; - fprintf (db_file, "\tstarts %s\n", tbuf); - if (errno) { + fprintf(db_file, "\tstarts %s\n", tbuf); + if (errno) ++errors; - } - t = gmtime (&lease -> ends); - snprintf (tbuf, sizeof tbuf,"%d %d/%02d/%02d %02d:%02d:%02d;", - t -> tm_wday, t -> tm_year + 1900, - t -> tm_mon + 1, t -> tm_mday, - t -> tm_hour, t -> tm_min, t -> tm_sec); + t = gmtime(&lease->ends); + snprintf(tbuf, sizeof(tbuf), "%d %d/%02d/%02d %02d:%02d:%02d;", + t->tm_wday, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, + t->tm_hour, t->tm_min, t->tm_sec); + errno = 0; - fprintf (db_file, "\tends %s", tbuf); - if (errno) { + fprintf(db_file, "\tends %s", tbuf); + if (errno) ++errors; - } - if (lease -> hardware_addr.hlen) { + if (lease->hardware_addr.hlen) { errno = 0; - fprintf (db_file, "\n\thardware %s %s;", - hardware_types [lease -> hardware_addr.htype], - print_hw_addr (lease -> hardware_addr.htype, - lease -> hardware_addr.hlen, - lease -> hardware_addr.haddr)); - if (errno) { + fprintf(db_file, "\n\thardware %s %s;", + hardware_types[lease->hardware_addr.htype], + print_hw_addr(lease->hardware_addr.htype, + lease->hardware_addr.hlen, + lease->hardware_addr.haddr)); + if (errno) ++errors; - } } - if (lease -> uid_len) { + + if (lease->uid_len) { int i; errno = 0; - fprintf (db_file, "\n\tuid %2.2x", lease -> uid [0]); - if (errno) { + fprintf(db_file, "\n\tuid %2.2x", lease->uid[0]); + if (errno) ++errors; - } - for (i = 1; i < lease -> uid_len; i++) { + + for (i = 1; i < lease->uid_len; i++) { errno = 0; - fprintf (db_file, ":%2.2x", lease -> uid [i]); - if (errno) { + fprintf(db_file, ":%2.2x", lease->uid[i]); + if (errno) ++errors; - } } putc (';', db_file); } - if (lease -> flags & BOOTP_LEASE) { + + if (lease->flags & BOOTP_LEASE) { errno = 0; - fprintf (db_file, "\n\tdynamic-bootp;"); - if (errno) { + fprintf(db_file, "\n\tdynamic-bootp;"); + if (errno) ++errors; - } } - if (lease -> flags & ABANDONED_LEASE) { + + if (lease->flags & ABANDONED_LEASE) { errno = 0; - fprintf (db_file, "\n\tabandoned;"); - if (errno) { + fprintf(db_file, "\n\tabandoned;"); + if (errno) ++errors; - } } - if (lease -> client_hostname) { - for (i = 0; lease -> client_hostname [i]; i++) - if (lease -> client_hostname [i] < 33 || - lease -> client_hostname [i] > 126) + + if (lease->client_hostname) { + for (i = 0; lease->client_hostname[i]; i++) + if (lease->client_hostname[i] < 33 || + lease->client_hostname[i] > 126) goto bad_client_hostname; errno = 0; - fprintf (db_file, "\n\tclient-hostname \"%s\";", - lease -> client_hostname); - if (errno) { + fprintf(db_file, "\n\tclient-hostname \"%s\";", + lease->client_hostname); + if (errno) ++errors; - } } - bad_client_hostname: - if (lease -> hostname) { - for (i = 0; lease -> hostname [i]; i++) - if (lease -> hostname [i] < 33 || - lease -> hostname [i] > 126) + +bad_client_hostname: + if (lease->hostname) { + for (i = 0; lease->hostname [i]; i++) + if (lease->hostname [i] < 33 || + lease->hostname [i] > 126) goto bad_hostname; errno = 0; - errno = 0; - fprintf (db_file, "\n\thostname \"%s\";", - lease -> hostname); - if (errno) { + fprintf(db_file, "\n\thostname \"%s\";", + lease->hostname); + if (errno) ++errors; - } } - bad_hostname: + +bad_hostname: errno = 0; - fputs ("\n}\n", db_file); - if (errno) { + fputs("\n}\n", db_file); + if (errno) ++errors; - } + if (errors) - note ("write_lease: unable to write lease %s", - piaddr (lease -> ip_addr)); - return !errors; -} + note("write_lease: unable to write lease %s", + piaddr(lease->ip_addr)); -/* Commit any leases that have been written out... */ + return (!errors); +} -int commit_leases () +/* + * Commit any leases that have been written out... + */ +int +commit_leases(void) { - /* Commit any outstanding writes to the lease database file. - We need to do this even if we're rewriting the file below, - just in case the rewrite fails. */ - if (fflush (db_file) == EOF) { - note ("commit_leases: unable to commit: %m"); - return 0; + /* + * Commit any outstanding writes to the lease database file. We need to + * do this even if we're rewriting the file below, just in case the + * rewrite fails. + */ + if (fflush(db_file) == EOF) { + note("commit_leases: unable to commit: %m"); + return (0); } - if (fsync (fileno (db_file)) == -1) { - note ("commit_leases: unable to commit: %m"); - return 0; + + if (fsync(fileno(db_file)) == -1) { + note("commit_leases: unable to commit: %m"); + return (0); } - /* If we've written more than a thousand leases or if - we haven't rewritten the lease database in over an - hour, rewrite it now. */ + /* + * If we've written more than a thousand leases or if we haven't + * rewritten the lease database in over an hour, rewrite it now. + */ if (count > 1000 || (count && cur_time - write_time > 3600)) { count = 0; write_time = cur_time; - new_lease_file (); + new_lease_file(); } - return 1; + + return (1); } -void db_startup () +void +db_startup(void) { /* Read in the existing lease file... */ - read_leases (); - + read_leases(); time(&write_time); - new_lease_file (); + new_lease_file(); } -void new_lease_file () +void +new_lease_file() { char newfname [MAXPATHLEN]; char backfname [MAXPATHLEN]; @@ -211,45 +219,45 @@ void new_lease_file () int db_fd; /* If we already have an open database, close it. */ - if (db_file) { - fclose (db_file); - } + if (db_file) + fclose(db_file); /* Make a temporary lease file... */ time(&t); - snprintf (newfname, sizeof newfname,"%s.%d", path_dhcpd_db, (int)t); + snprintf(newfname, sizeof(newfname), "%s.%d", path_dhcpd_db, + (int)t); + db_fd = open (newfname, O_WRONLY | O_TRUNC | O_CREAT, 0664); - if (db_fd == -1) { - error ("Can't create new lease file: %m"); - } - if ((db_file = fdopen (db_fd, "w")) == NULL) { - error ("Can't fdopen new lease file!"); - } + if (db_fd == -1) + error("Can't create new lease file: %m"); + if ((db_file = fdopen(db_fd, "w")) == NULL) + error("Can't fdopen new lease file!"); - /* Write an introduction so people don't complain about time - being off. */ - fprintf (db_file, "# All times in this file are in UTC (GMT), not %s", - "your local timezone.\n"); - fprintf (db_file, "# The format of this file is documented in the %s", - "dhcpd.leases(5) manual page.\n\n"); + /* + * Write an introduction so people don't complain about time being off. + */ + fprintf(db_file, "# All times in this file are in UTC (GMT), " + "not your local timezone.\n"); + fprintf(db_file, "# The format of this file is documented in " + "the dhcpd.leases(5) manual page.\n\n"); /* Write out all the leases that we know of... */ counting = 0; - write_leases (); + write_leases(); /* Get the old database out of the way... */ - snprintf (backfname, sizeof backfname, "%s~", path_dhcpd_db); - if (unlink (backfname) == -1 && errno != ENOENT) - error ("Can't remove old lease database backup %s: %m", - backfname); - if (link (path_dhcpd_db, backfname) == -1) - error ("Can't backup lease database %s to %s: %m", - path_dhcpd_db, backfname); + snprintf(backfname, sizeof(backfname), "%s~", path_dhcpd_db); + if (unlink(backfname) == -1 && errno != ENOENT) + error("Can't remove old lease database backup %s: %m", + backfname); + if (link(path_dhcpd_db, backfname) == -1) + error("Can't backup lease database %s to %s: %m", + path_dhcpd_db, backfname); /* Move in the new file... */ - if (rename (newfname, path_dhcpd_db) == -1) - error ("Can't install new lease database %s to %s: %m", - newfname, path_dhcpd_db); + if (rename(newfname, path_dhcpd_db) == -1) + error("Can't install new lease database %s to %s: %m", + newfname, path_dhcpd_db); counting = 1; } |