[dhcp-agent-commits] dhcp-agent/src dhcp-client-conf.h,1.7,1.8 dhcp-client-conf.c,1.12,1.13 dhcp-con
Status: Alpha
Brought to you by:
actmodern
From: <act...@us...> - 2002-12-21 18:13:13
|
Update of /cvsroot/dhcp-agent/dhcp-agent/src In directory sc8-pr-cvs1:/tmp/cvs-serv19523/src Modified Files: dhcp-client-conf.h dhcp-client-conf.c dhcp-conf.c Log Message: new keyword enable Index: dhcp-client-conf.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/src/dhcp-client-conf.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dhcp-client-conf.h 19 Dec 2002 06:50:59 -0000 1.7 --- dhcp-client-conf.h 21 Dec 2002 18:13:10 -0000 1.8 *************** *** 48,52 **** int default_interface_mtu; /* our default interface mtu. */ ! uint8_t do_icmp_router_discovery; /* perform router discovery via icmp. */ list_t *lower_params; /* linked list to child parameters. */ --- 48,52 ---- int default_interface_mtu; /* our default interface mtu. */ ! uint8_t do_measure_router_latency_icmp; /* perform router latency discovery via icmp. */ list_t *lower_params; /* linked list to child parameters. */ *************** *** 61,74 **** } client_conf_t; typedef int (*directive_handler_t)(conf_params_t *param, void *directive_data, directive_group_t group_type, void *group_data); ! enum directive_types { DIRECTIVE_GROUP = 0, DIRECTIVE_SET, DIRECTIVE_REQUEST, DIRECTIVE_REQUIRE, DIRECTIVE_SERVER_GROUP }; /* symbols for variable substitution. */ enum var_symbols { CLIENT_VAR_HOSTNAME = 0, CLIENT_VAR_DHCP_RETRIES, CLIENT_VAR_ICMP_RETRIES, CLIENT_VAR_INTERFACE_MTU }; enum server_symbols { CLIENT_SERVER_IP = 0, CLIENT_SERVER_MAC }; enum directive_group_t { DIRECTIVE_GROUP_NULL = 0, DIRECTIVE_GROUP_IP_ADDRESS, DIRECTIVE_GROUP_MAC_ADDRESS }; --- 61,80 ---- } client_conf_t; + /* typedef of directive handler. */ typedef int (*directive_handler_t)(conf_params_t *param, void *directive_data, directive_group_t group_type, void *group_data); ! /* directive types. */ ! enum directive_types { DIRECTIVE_SET_BOOLEAN = 0, DIRECTIVE_SET, DIRECTIVE_REQUEST, DIRECTIVE_REQUIRE, DIRECTIVE_SERVER_GROUP }; /* symbols for variable substitution. */ enum var_symbols { CLIENT_VAR_HOSTNAME = 0, CLIENT_VAR_DHCP_RETRIES, CLIENT_VAR_ICMP_RETRIES, CLIENT_VAR_INTERFACE_MTU }; + /* symbols for boolean variable substitution */ + enum var_boolean_symbols { CLIENT_VAR_DO_MEASURE_ROUTER_LATENCY_ICMP = 0 }; + /* server symbol substitution. */ enum server_symbols { CLIENT_SERVER_IP = 0, CLIENT_SERVER_MAC }; + /* directive groups. */ enum directive_group_t { DIRECTIVE_GROUP_NULL = 0, DIRECTIVE_GROUP_IP_ADDRESS, DIRECTIVE_GROUP_MAC_ADDRESS }; Index: dhcp-client-conf.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/src/dhcp-client-conf.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** dhcp-client-conf.c 21 Dec 2002 17:06:20 -0000 1.12 --- dhcp-client-conf.c 21 Dec 2002 18:13:10 -0000 1.13 *************** *** 51,54 **** --- 51,58 ---- }; + static const char *var_boolean_strings[] = { + "do-find-best-router-icmp", + }; + /* strings for ip address or mac address with server command. */ static const char *server_strings[] = { *************** *** 72,77 **** --- 76,89 ---- }; + static const arg_symbol_t var_boolean_symbols[] = { + CLIENT_VAR_DO_MEASURE_ROUTER_LATENCY_ICMP, + }; + /* argument types, string array pointers, and symbol array pointers */ + static const arg_type_t var_boolean_arg_types[] = { CONF_IDENTIFIER, CONF_ASSIGNMENT, CONF_BOOLEAN }; + static const char **var_boolean_arg_strings[] = { var_boolean_strings, NULL, NULL }; + static const arg_symbol_t *var_boolean_arg_symbols[] = { var_boolean_symbols, NULL, NULL }; + static const arg_type_t var_arg_types[] = { CONF_IDENTIFIER, CONF_ASSIGNMENT, CONF_STRING }; static const char **var_arg_strings[] = { var_strings, NULL, NULL }; *************** *** 102,105 **** --- 114,127 ---- }; + /* set command with boolean. */ + static const command_t command_set_boolean = { + DIRECTIVE_SET_BOOLEAN, + "enable", + 3, + var_boolean_arg_strings, + var_boolean_arg_types, + var_boolean_arg_symbols, + }; + /* request command. */ static const command_t command_request = { *************** *** 133,136 **** --- 155,159 ---- static const command_t *commands[] = { + &command_set_boolean, &command_set, &command_request, *************** *** 157,169 **** /* forward declaration of directive handlers. */ ! static int directive_group_handler(conf_params_t *cc, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_set_handler(conf_params_t *cc, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_request_handler(conf_params_t *cc, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_require_handler(conf_params_t *cc, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_server_handler(conf_params_t *cc, void *directive_data, directive_group_t group_type, void *group_data); /* indexed by directive types in dhcp-client-conf.h . */ directive_handler_t directive_handlers[] = { ! directive_group_handler, directive_set_handler, directive_request_handler, --- 180,193 ---- /* forward declaration of directive handlers. */ ! static int directive_group_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_set_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_set_boolean_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_request_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_require_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data); ! static int directive_server_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data); /* indexed by directive types in dhcp-client-conf.h . */ directive_handler_t directive_handlers[] = { ! directive_set_boolean_handler, directive_set_handler, directive_request_handler, *************** *** 273,276 **** --- 297,317 ---- } + static int client_conf_set_variable_boolean(conf_params_t *params, arg_symbol_t var_symbol, uint8_t bool_val) + { + + switch(var_symbol) { + + case CLIENT_VAR_DO_MEASURE_ROUTER_LATENCY_ICMP: + params->do_measure_router_latency_icmp = bool_val; + break; + + default: + return 1; + + } + + return 0; + } + static char *get_conf_options_fname(client_conf_t *cc) { *************** *** 448,451 **** --- 489,512 ---- params->lower_params = add_to_list(params->lower_params, new_params); + + return 0; + } + + static int directive_set_boolean_handler(conf_params_t *params, void *directive_data, directive_group_t group_type, void *group_data) + { + directive_t *directive = directive_data; + list_t *args; + arg_symbol_t *var_symbol; + uint8_t *var_value; + + args = directive->arguments; + + var_symbol = args->data; + var_value = args->next->next->data; + + if(client_conf_set_variable_boolean(params, *var_symbol, *var_value)) { + ERROR_MESSAGE("configuration: error unable to set boolean variable %s", var_strings[*var_symbol], var_value); + return 1; + } return 0; Index: dhcp-conf.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/src/dhcp-conf.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** dhcp-conf.c 21 Dec 2002 17:06:20 -0000 1.6 --- dhcp-conf.c 21 Dec 2002 18:13:10 -0000 1.7 *************** *** 422,427 **** directive = compile_command(conf, command); if(command == NULL) ! continue; /* try to compile any other matching command: ! this lets us set the same command name with different arguments. */ return directive; --- 422,426 ---- directive = compile_command(conf, command); if(command == NULL) ! break; return directive; |