Diff for /embedaddon/dhcp/common/execute.c between versions 1.1 and 1.1.1.1

version 1.1, 2012/02/21 22:30:18 version 1.1.1.1, 2012/10/09 09:06:54
Line 3 Line 3
    Support for executable statements. */     Support for executable statements. */
   
 /*  /*
 * Copyright (c) 2004-2007,2009 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) 1998-2003 by Internet Software Consortium   * Copyright (c) 1998-2003 by Internet Software Consortium
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
Line 327  int execute_statements (result, packet, lease, client_ Line 328  int execute_statements (result, packet, lease, client_
                       case set_statement:                        case set_statement:
                       case define_statement:                        case define_statement:
                         if (!scope) {                          if (!scope) {
                                log_error ("set %s: no scope",                                log_error("set %s: no scope",
                                           r -> data.set.name);                                           r->data.set.name);
                                 status = 0;                                  status = 0;
                                 break;                                  break;
                         }                          }
                         if (!*scope) {                          if (!*scope) {
                            if (!binding_scope_allocate (scope, MDL)) {                            if (!binding_scope_allocate(scope, MDL)) {
                                log_error ("set %s: can't allocate scope",                                log_error("set %s: can't allocate scope",
                                           r -> data.set.name);                                          r->data.set.name);
                                 status = 0;                                  status = 0;
                                 break;                                  break;
                             }                              }
                         }                          }
                        binding = find_binding (*scope, r -> data.set.name);                        binding = find_binding(*scope, r->data.set.name);
 #if defined (DEBUG_EXPRESSIONS)  #if defined (DEBUG_EXPRESSIONS)
                        log_debug ("exec: set %s", r -> data.set.name);                        log_debug("exec: set %s", r->data.set.name);
 #endif  #endif
                        if (!binding) {                        if (binding == NULL) {
                                binding = dmalloc (sizeof *binding, MDL);                                binding = dmalloc(sizeof(*binding), MDL);
                                if (binding) {                                if (binding != NULL) {
                                    memset (binding, 0, sizeof *binding);                                    memset(binding, 0, sizeof(*binding));
                                    binding -> name =                                    binding->name =
                                            dmalloc (strlen                                            dmalloc(strlen
                                                     (r -> data.set.name) + 1,                                                    (r->data.set.name) + 1,
                                                     MDL);                                                    MDL);
                                    if (binding -> name) {                                    if (binding->name != NULL) {
                                        strcpy (binding -> name,                                        strcpy(binding->name, r->data.set.name);
                                                r -> data.set.name);                                        binding->next = (*scope)->bindings;
                                        binding -> next = (*scope) -> bindings;                                        (*scope)->bindings = binding;
                                        (*scope) -> bindings = binding; 
                                     } else {                                      } else {
                                        dfree (binding, MDL);                                        dfree(binding, MDL);
                                        binding = (struct binding *)0;                                        binding = NULL;
                                     }                                      }
                                 }                                  }
                         }                          }
                        if (binding) {                        if (binding != NULL) {
                                if (binding -> value)                                if (binding->value != NULL)
                                         binding_value_dereference                                          binding_value_dereference
                                                (&binding -> value, MDL);                                                (&binding->value, MDL);
                                if (r -> op == set_statement) {                                if (r->op == set_statement) {
                                         status = (evaluate_expression                                          status = (evaluate_expression
                                                  (&binding -> value, packet,                                                  (&binding->value, packet,
                                                    lease, client_state,                                                     lease, client_state,
                                                    in_options, out_options,                                                     in_options, out_options,
                                                   scope, r -> data.set.expr,                                                   scope, r->data.set.expr,
                                                    MDL));                                                     MDL));
                                 } else {                                  } else {
                                     if (!(binding_value_allocate                                      if (!(binding_value_allocate
                                          (&binding -> value, MDL))) {                                          (&binding->value, MDL))) {
                                            dfree (binding, MDL);                                            dfree(binding, MDL);
                                            binding = (struct binding *)0;                                            binding = NULL;
                                     }                                      }
                                    if (binding -> value) {                                    if ((binding != NULL) &&
                                        binding -> value -> type =                                        (binding->value != NULL)) {
                                                binding_function;                                            binding->value->type =
                                        (fundef_reference                                                    binding_function;
                                         (&binding -> value -> value.fundef,                                            (fundef_reference
                                          r -> data.set.expr -> data.func,                                             (&binding->value->value.fundef,
                                          MDL));                                              r->data.set.expr->data.func,
                                               MDL));
                                     }                                      }
                                 }                                  }
                         }                          }

Removed from v.1.1  
changed lines
  Added in v.1.1.1.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>