summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Lemon <source@isc.org>2001-04-27 22:23:44 +0000
committerTed Lemon <source@isc.org>2001-04-27 22:23:44 +0000
commitf545ef7f0d05eeab89c2de9fbdf2a876ebcdfe51 (patch)
tree8e507df7def4962e478dc0a541ed1cb6d239d91b
parenta010c3ffb3b9605542a7ae047d9a6363f5b0ebb9 (diff)
downloadisc-dhcp-f545ef7f0d05eeab89c2de9fbdf2a876ebcdfe51.tar.gz
Fix a billing class counting error
-rw-r--r--server/confpars.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/server/confpars.c b/server/confpars.c
index d9cd14d5..15e8ec78 100644
--- a/server/confpars.c
+++ b/server/confpars.c
@@ -43,7 +43,7 @@
#ifndef lint
static char copyright[] =
-"$Id: confpars.c,v 1.140 2001/04/20 18:07:29 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n";
+"$Id: confpars.c,v 1.141 2001/04/27 22:23:44 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@@ -2385,6 +2385,7 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile)
pair *p;
binding_state_t new_state;
unsigned buflen = 0;
+ struct class *class;
lease = (struct lease *)0;
status = lease_allocate (&lease, MDL);
@@ -2640,6 +2641,7 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile)
case BILLING:
seenbit = 2048;
+ class = (struct class *)0;
token = next_token (&val, (unsigned *)0, cfile);
if (token == CLASS) {
token = next_token (&val,
@@ -2654,8 +2656,8 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile)
if (lease -> billing_class)
unbill_class (lease,
lease -> billing_class);
- find_class (&lease -> billing_class, val, MDL);
- if (!lease -> billing_class)
+ find_class (&class, val, MDL);
+ if (!class)
parse_warn (cfile,
"unknown class %s", val);
parse_semi (cfile);
@@ -2664,13 +2666,17 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile)
unbill_class (lease,
lease -> billing_class);
parse_class_declaration
- (&lease -> billing_class,
+ (&class,
cfile, (struct group *)0, 3);
} else {
parse_warn (cfile, "expecting \"class\"");
if (token != SEMI)
skip_to_semi (cfile);
}
+ if (class) {
+ bill_class (lease, class);
+ class_dereference (&class, MDL);
+ }
break;
case ON: