Lines Matching +full:semi +full:- +full:static
5 /*-
6 * SPDX-License-Identifier: BSD-3-Clause
50 static struct interface_info *dummy_interfaces;
52 static char client_script_name[] = "/sbin/dhclient-script";
55 * client-conf-file :== client-declarations EOF
56 * client-declarations :== <nil>
57 * | client-declaration
58 * | client-declarations client-declaration
121 * have per-interface configuration declarations. in read_client_conf()
124 if (!ifi->client) { in read_client_conf()
125 ifi->client = malloc(sizeof(struct client_state)); in read_client_conf()
126 if (!ifi->client) in read_client_conf()
128 memset(ifi->client, 0, sizeof(*(ifi->client))); in read_client_conf()
130 if (!ifi->client->config) { in read_client_conf()
138 ifi->client->config = config; in read_client_conf()
145 * lease-file :== client-lease-statements EOF
146 * client-lease-statements :== <nil>
147 * | client-lease-statements LEASE client-lease-statement
158 /* Open the lease file. If we can't open it, just return - in read_client_leases()
167 warning("Corrupt lease file - possible data loss!"); in read_client_leases()
178 * client-declaration :==
179 * SEND option-decl |
180 * DEFAULT option-decl |
181 * SUPERSEDE option-decl |
182 * PREPEND option-decl |
183 * APPEND option-decl |
184 * hardware-declaration |
185 * REQUEST option-list |
186 * REQUIRE option-list |
187 * IGNORE option-list |
193 * interface-declaration |
194 * LEASE client-lease-statement |
195 * ALIAS client-lease-statement
207 parse_option_decl(cfile, &config->send_options[0]); in parse_client_statement()
210 option = parse_option_decl(cfile, &config->defaults[0]); in parse_client_statement()
212 config->default_actions[option->code] = ACTION_DEFAULT; in parse_client_statement()
215 option = parse_option_decl(cfile, &config->defaults[0]); in parse_client_statement()
217 config->default_actions[option->code] = in parse_client_statement()
221 option = parse_option_decl(cfile, &config->defaults[0]); in parse_client_statement()
223 config->default_actions[option->code] = ACTION_APPEND; in parse_client_statement()
226 option = parse_option_decl(cfile, &config->defaults[0]); in parse_client_statement()
228 config->default_actions[option->code] = ACTION_PREPEND; in parse_client_statement()
231 parse_string_list(cfile, &config->media, 1); in parse_client_statement()
235 parse_hardware_param(cfile, &ip->hw_address); in parse_client_statement()
243 config->requested_option_count = in parse_client_statement()
244 parse_option_list(cfile, config->requested_options); in parse_client_statement()
247 memset(config->required_options, 0, in parse_client_statement()
248 sizeof(config->required_options)); in parse_client_statement()
249 parse_option_list(cfile, config->required_options); in parse_client_statement()
252 parse_option_list(cfile, config->ignored_options); in parse_client_statement()
255 parse_lease_time(cfile, &config->timeout); in parse_client_statement()
258 parse_lease_time(cfile, &config->retry_interval); in parse_client_statement()
261 parse_lease_time(cfile, &config->select_interval); in parse_client_statement()
264 parse_lease_time(cfile, &config->reboot_timeout); in parse_client_statement()
268 config->vlan_pcp = (u_int)tmp; in parse_client_statement()
271 parse_lease_time(cfile, &config->backoff_cutoff); in parse_client_statement()
274 parse_lease_time(cfile, &config->initial_interval); in parse_client_statement()
277 config->script_name = parse_string(cfile); in parse_client_statement()
347 * option-list :== option_name |
382 if (token != SEMI) { in parse_option_list()
391 * interface-declaration :==
392 * INTERFACE string LBRACE client-declarations RBRACE
410 if (!ip->client) in parse_interface_declaration()
413 if (!ip->client->config) in parse_interface_declaration()
431 parse_client_statement(cfile, ip, ip->client->config); in parse_interface_declaration()
442 if (!strcmp(ifi->name, name)) in interface_or_dummy()
446 for (ip = dummy_interfaces; ip; ip = ip->next) in interface_or_dummy()
447 if (!strcmp(ip->name, name)) in interface_or_dummy()
458 strlcpy(ip->name, name, IFNAMSIZ); in interface_or_dummy()
459 ip->next = dummy_interfaces; in interface_or_dummy()
467 ip->client = malloc(sizeof(*(ip->client))); in make_client_state()
468 if (!ip->client) in make_client_state()
469 error("no memory for state on %s", ip->name); in make_client_state()
470 memset(ip->client, 0, sizeof(*(ip->client))); in make_client_state()
476 ip->client->config = malloc(sizeof(struct client_config)); in make_client_config()
477 if (!ip->client->config) in make_client_config()
478 error("no memory for config for %s", ip->name); in make_client_config()
479 memset(ip->client->config, 0, sizeof(*(ip->client->config))); in make_client_config()
480 memcpy(ip->client->config, config, sizeof(*config)); in make_client_config()
484 * client-lease-statement :==
485 * RBRACE client-lease-declarations LBRACE
487 * client-lease-declarations :==
489 * client-lease-declaration |
490 * client-lease-declarations client-lease-declaration
511 lease->is_static = is_static; in parse_client_lease_statement()
537 if (!ip->client) in parse_client_lease_statement()
542 ip->client->alias = lease; in parse_client_lease_statement()
553 for (lp = ip->client->leases; lp; lp = lp->next) { in parse_client_lease_statement()
554 if (lp->address.len == lease->address.len && in parse_client_lease_statement()
555 !memcmp(lp->address.iabuf, lease->address.iabuf, in parse_client_lease_statement()
556 lease->address.len)) { in parse_client_lease_statement()
558 pl->next = lp->next; in parse_client_lease_statement()
560 ip->client->leases = lp->next; in parse_client_lease_statement()
568 * recorded leases - don't make it the active lease. in parse_client_lease_statement()
571 lease->next = ip->client->leases; in parse_client_lease_statement()
572 ip->client->leases = lease; in parse_client_lease_statement()
590 if (ip->client->active) { in parse_client_lease_statement()
591 if (ip->client->active->expiry < cur_time) in parse_client_lease_statement()
592 free_client_lease(ip->client->active); in parse_client_lease_statement()
593 else if (ip->client->active->address.len == in parse_client_lease_statement()
594 lease->address.len && in parse_client_lease_statement()
595 !memcmp(ip->client->active->address.iabuf, in parse_client_lease_statement()
596 lease->address.iabuf, lease->address.len)) in parse_client_lease_statement()
597 free_client_lease(ip->client->active); in parse_client_lease_statement()
599 ip->client->active->next = ip->client->leases; in parse_client_lease_statement()
600 ip->client->leases = ip->client->active; in parse_client_lease_statement()
603 ip->client->active = lease; in parse_client_lease_statement()
609 * client-lease-declaration :==
615 * OPTION option-decl |
616 * RENEW time-decl |
617 * REBIND time-decl |
618 * EXPIRE time-decl
630 lease->is_bootp = 1; in parse_client_lease_declaration()
643 if (!parse_ip_addr(cfile, &lease->address)) in parse_client_lease_declaration()
647 parse_string_list(cfile, &lease->medium, 0); in parse_client_lease_declaration()
650 lease->filename = parse_string(cfile); in parse_client_lease_declaration()
653 if (!parse_ip_addr(cfile, &lease->nextserver)) in parse_client_lease_declaration()
657 lease->server_name = parse_string(cfile); in parse_client_lease_declaration()
660 lease->renewal = parse_date(cfile); in parse_client_lease_declaration()
663 lease->rebind = parse_date(cfile); in parse_client_lease_declaration()
666 lease->expiry = parse_date(cfile); in parse_client_lease_declaration()
669 parse_option_decl(cfile, lease->options); in parse_client_lease_declaration()
677 if (token != SEMI) { in parse_client_lease_declaration()
703 if (token != SEMI) in parse_option_decl()
719 if (token != SEMI) in parse_option_decl()
745 option = (struct option *)hash_lookup(universe->hash, in parse_option_decl()
765 for (fmt = option->format; *fmt; fmt++) { in parse_option_decl()
771 sizeof(hunkbuf) - hunkix); in parse_option_decl()
807 case 'L': /* Unsigned 32-bit integer... */ in parse_option_decl()
808 case 'l': /* Signed 32-bit integer... */ in parse_option_decl()
813 if (token != SEMI) in parse_option_decl()
821 case 's': /* Signed 16-bit integer. */ in parse_option_decl()
822 case 'S': /* Unsigned 16-bit integer. */ in parse_option_decl()
830 case 'b': /* Signed 8-bit integer. */ in parse_option_decl()
831 case 'B': /* Unsigned 8-bit integer. */ in parse_option_decl()
844 if (token != SEMI) in parse_option_decl()
871 if (token != SEMI) { in parse_option_decl()
877 options[option->code].data = malloc(hunkix + nul_term); in parse_option_decl()
878 if (!options[option->code].data) in parse_option_decl()
880 memcpy(options[option->code].data, hunkbuf, hunkix + nul_term); in parse_option_decl()
881 options[option->code].len = hunkix; in parse_option_decl()
895 for (cur = *lp; cur->next; cur = cur->next) in parse_string_list()
912 memcpy(tmp->string, val, valsize); in parse_string_list()
913 tmp->next = NULL; in parse_string_list()
917 cur->next = tmp; in parse_string_list()
925 if (token != SEMI) { in parse_string_list()
950 list->addr = addr; in parse_reject_statement()
951 list->next = config->reject_list; in parse_reject_statement()
952 config->reject_list = list; in parse_reject_statement()
957 if (token != SEMI) { in parse_reject_statement()