]>
Commit | Line | Data |
---|---|---|
c0a64ef0 TM |
1 | /* client_tables.c |
2 | ||
3 | Tables of information only used by client... */ | |
4 | ||
5 | /* | |
49a7fb58 | 6 | * Copyright (C) 2017-2022 Internet Systems Consortium, Inc. ("ISC") |
c0a64ef0 TM |
7 | * |
8 | * This Source Code Form is subject to the terms of the Mozilla Public | |
9 | * License, v. 2.0. If a copy of the MPL was not distributed with this | |
10 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. | |
11 | * | |
12 | * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES | |
13 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
14 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR | |
15 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
16 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
17 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | |
18 | * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
19 | * | |
20 | * Internet Systems Consortium, Inc. | |
429a56d7 TM |
21 | * PO Box 360 |
22 | * Newmarket, NH 03857 USA | |
c0a64ef0 TM |
23 | * <info@isc.org> |
24 | * https://www.isc.org/ | |
25 | * | |
26 | */ | |
27 | ||
28 | #include "dhcpd.h" | |
29 | ||
30 | struct universe client_universe; | |
31 | static struct option client_options[] = { | |
32 | /* @todo dummy-client-parm should be removed with the first real param */ | |
33 | { "dummy-client-parm", "T", &client_universe, 1, 1 }, | |
34 | { NULL, NULL, NULL, 0, 0 } | |
35 | }; | |
36 | ||
37 | #define CLIENT_HASH_SIZE (2*(sizeof(client_options) / sizeof(struct option))) | |
38 | ||
39 | void initialize_client_option_spaces() | |
40 | { | |
41 | int i; | |
42 | ||
43 | /* Set up the client option universe... */ | |
44 | client_universe.name = "client"; | |
45 | client_universe.concat_duplicates = 0; | |
46 | client_universe.lookup_func = lookup_hashed_option; | |
47 | client_universe.option_state_dereference = | |
48 | hashed_option_state_dereference; | |
49 | client_universe.save_func = save_hashed_option; | |
50 | client_universe.delete_func = delete_hashed_option; | |
51 | client_universe.encapsulate = hashed_option_space_encapsulate; | |
52 | client_universe.foreach = hashed_option_space_foreach; | |
53 | client_universe.length_size = 1; /* Never used ... */ | |
54 | client_universe.tag_size = 4; | |
55 | client_universe.store_tag = putUChar; | |
56 | client_universe.store_length = putUChar; | |
57 | client_universe.site_code_min = 0; | |
58 | client_universe.end = 0; | |
59 | client_universe.index = universe_count++; | |
60 | universes [client_universe.index] = &client_universe; | |
61 | if (!option_name_new_hash(&client_universe.name_hash, | |
62 | CLIENT_HASH_SIZE, MDL) || | |
63 | !option_code_new_hash(&client_universe.code_hash, | |
64 | CLIENT_HASH_SIZE, MDL)) | |
65 | log_fatal ("Can't allocate client option hash table."); | |
66 | for (i = 0 ; client_options[i].name ; i++) { | |
67 | option_code_hash_add(client_universe.code_hash, | |
68 | &client_options[i].code, 0, | |
69 | &client_options[i], MDL); | |
70 | option_name_hash_add(client_universe.name_hash, | |
71 | client_options[i].name, 0, | |
72 | &client_options[i], MDL); | |
73 | } | |
74 | ||
75 | /* Add the client option space to the option space hash. */ | |
76 | universe_hash_add (universe_hash, | |
77 | client_universe.name, 0, &client_universe, MDL); | |
78 | ||
79 | /* Make the client universe the configuration option universe. */ | |
80 | config_universe = &client_universe; | |
81 | } |