⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config_grammar.y

📁 Linux上的802.1x 的supplicant的实现。很多supplicant程序都是基于它开发的
💻 Y
📖 第 1 页 / 共 5 页
字号:
%token<num>   TK_NUMBER%token<str>   TK_UNQUOTED_STR%token<str>   TK_PASS%token<str>   TK_COMMAND%token<str>   TK_QUOTED_STR%%configfile        : global_section network_section {                     config_info = tmp_config;                     tmp_config = NULL;                  }                   | global_section {                       printf("Error: No networks defined.\n"); 		      CLEAN_EXIT;		    }                  | network_section {		      printf("Error: No globals defined.\n"); 		      cleanup_parse();		      return XECONFIGPARSEFAIL;                    }                  | error {		    printf("General Parse error!\n"); 		      cleanup_parse();		      return XECONFIGPARSEFAIL; }                  ;global_section    : global_section global_statement                  | global_statement                  ;network_section   : network_section network_entry                  | network_entry                  ;global_statement  : TK_NETWORK_LIST '=' TK_ALL {                      set_current_globals();                      parameter_debug("network_list: all\n");		      // do nothing. leave null                    }                   | TK_NETWORK_LIST '=' network_list {		    // done below. nothing to do here  		    }                  | TK_DEFAULT_NETNAME '=' TK_UNQUOTED_STR { 		     set_current_globals();		     parameter_debug("Default network: \"%s\"\n", $3);		     if (tmp_config->globals->default_net)		       free($3);		     else		       tmp_config->globals->default_net = $3;		  }                  | TK_DEFAULT_NETNAME '=' TK_QUOTED_STR { 		     set_current_globals();		     parameter_debug("Default network: \"%s\"\n", $3);		     if (tmp_config->globals->default_net)		       free($3);		     else		       tmp_config->globals->default_net = $3;		  }                  | TK_FRIENDLY_WARNINGS '=' TK_YES {		    set_current_globals();		    parameter_debug("Friendly Warnings: YES\n");		    UNSET_FLAG(tmp_config->globals->flags, 			     CONFIG_GLOBALS_NO_FRIENDLY_WARNINGS);                    }                  | TK_FRIENDLY_WARNINGS '=' TK_NO {		    set_current_globals();		    parameter_debug("Friendly Warnings: NO\n");		    SET_FLAG(tmp_config->globals->flags,			     CONFIG_GLOBALS_NO_FRIENDLY_WARNINGS);                    }                   | TK_FRIENDLY_WARNINGS '=' TK_UNQUOTED_STR {		    set_current_globals();		    printf("Invalid vale for \"friendly_warnings\" option! "			   "defaulting to YES.\n");		    parameter_debug("Friendly Warnings: Defaulting to YES"				    " (Invalid value \"%s\")\n", $3);                    UNSET_FLAG(tmp_config->globals->flags,		             CONFIG_GLOBALS_NO_FRIENDLY_WARNINGS);                    }                  | TK_ROAMING '=' TK_FIRMWARE {                    set_current_globals();                    parameter_debug("Firmware roaming.\n");                    SET_FLAG(tmp_config->globals->flags, 			     CONFIG_GLOBALS_FIRMWARE_ROAM);                    }                  | TK_ROAMING '=' TK_XSUPPLICANT {                    set_current_globals();                          parameter_debug("Xsupplicant roaming.\n");                    UNSET_FLAG(tmp_config->globals->flags, 			       CONFIG_GLOBALS_FIRMWARE_ROAM);                    }                  | TK_ROAMING '=' TK_UNQUOTED_STR {                    set_current_globals();                    parameter_debug("Xsupplicant roaming.\n");                    printf("Invalid setting for 'roaming' value.  "                    	       "Defaulting to Xsupplicant based roaming.\n");                    UNSET_FLAG(tmp_config->globals->flags, 			       CONFIG_GLOBALS_FIRMWARE_ROAM);                    }                  | TK_PASSIVE_SCANNING '=' TK_YES {                    set_current_globals();                    parameter_debug("Passive Scanning : Yes\n");                    SET_FLAG(tmp_config->globals->flags,                             CONFIG_GLOBALS_PASSIVE_SCAN);                    }                  | TK_PASSIVE_SCANNING '=' TK_NO {                    set_current_globals();                    parameter_debug("Passive Scanning : No\n");                    UNSET_FLAG(tmp_config->globals->flags,	                       CONFIG_GLOBALS_PASSIVE_SCAN);                    }                  | TK_PASSIVE_SCANNING '=' TK_UNQUOTED_STR {                    set_current_globals();                    parameter_debug("Passive Scanning : Yes\n");                    printf("Invalid setting for 'passive_scanning'."	                         " Defaulting to yes.\n");		    SET_FLAG(tmp_config->globals->flags,			     CONFIG_GLOBALS_PASSIVE_SCAN);                    }                  | TK_USE_EAP_HINTS '=' TK_YES {                    set_current_globals();                    parameter_debug("Use EAP Hints : Yes\n");                    UNSET_FLAG(tmp_config->globals->flags,			       CONFIG_GLOBALS_NO_EAP_HINTS);                    }                  | TK_USE_EAP_HINTS '=' TK_NO {                    set_current_globals();                    parameter_debug("Use EAP Hints : No\n");                    SET_FLAG(tmp_config->globals->flags,			     CONFIG_GLOBALS_NO_EAP_HINTS);                    }                  | TK_USE_EAP_HINTS '=' TK_UNQUOTED_STR {                    set_current_globals();                    parameter_debug("Use EAP Hints : Yes\n");                    printf("Invalid setting for 'use_eap_hints'."	                         " Defaulting to yes.\n");		    UNSET_FLAG(tmp_config->globals->flags,			       CONFIG_GLOBALS_NO_EAP_HINTS);                    }                  | TK_PASSIVE_TIMEOUT '=' TK_NUMBER {                    set_current_globals();                    parameter_debug("Passive Scan Timer: %d\n", $3);                    tmp_config->globals->passive_timeout = $3;                    }                  | TK_SCAN_TIMEOUT '=' TK_NUMBER {		    set_current_globals();		    parameter_debug("Scan timeout: %d\n", $3);		    tmp_config->globals->active_timeout = $3;		  }                  | TK_LOGFILE '=' TK_UNQUOTED_STR {		     set_current_globals();		     parameter_debug("Logfile: \"%s\"\n", $3);		     if (tmp_config->globals->logfile)		       {			 free($3);			 tmp_config->globals->logfile = NULL;		       }		     else		       tmp_config->globals->logfile = $3;		    }                  | TK_LOGFILE '=' TK_QUOTED_STR {		    set_current_globals();		    parameter_debug("Logfile: \"%s\"\n", $3);		    if (tmp_config->globals->logfile)		      {			free($3);			tmp_config->globals->logfile = NULL;		      }		    else		      tmp_config->globals->logfile = $3;		  }                  | TK_DEFAULT_INT '=' TK_UNQUOTED_STR {		    set_current_globals();                    parameter_debug("Default Interface: \"%s\"\n", $3);		    if (tmp_config->globals->default_int)		      {			free($3);			tmp_config->globals->default_int = NULL;		      }		    else		      tmp_config->globals->default_int = $3;		    }                  | TK_STALE_KEY_TIMEOUT '=' TK_NUMBER {		    set_current_globals();		    tmp_config->globals->stale_key_timeout = $3;		    }                  | TK_STALE_KEY_TIMEOUT '=' TK_UNQUOTED_STR {		    set_current_globals();		    printf("Invalid value for stale key "				 "timer.  Leaving at the default of 10 minutes"				 "!\n");		    }                  | TK_ASSOCIATION '=' TK_AUTO {                    set_current_globals();                    SET_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_ASSOC_AUTO);                  }                  | TK_ASSOCIATION '=' TK_MANUAL {                    set_current_globals();                    UNSET_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_ASSOC_AUTO);                  }                  | TK_ASSOCIATION '=' TK_UNQUOTED_STR {                    set_current_globals();                    printf("Invalid setting for 'association'! "	                         "Leaving at default setting.\n");                    UNSET_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_ASSOC_AUTO);                  }                  | TK_ASSOC_TIMEOUT '=' TK_NUMBER {                    set_current_globals();                    tmp_config->globals->assoc_timeout = $3;                  }                  | TK_ASSOC_TIMEOUT '=' TK_UNQUOTED_STR {                    set_current_globals();                    printf("Invalid setting for association_timeout."	                         " We will use the default setting.\n");                  }                  | TK_AUTH_PERIOD '=' TK_NUMBER {		     set_current_globals();		     if (!TEST_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_AUTH_PER)) {		       SET_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_AUTH_PER);		       tmp_config->globals->auth_period = $3;		     }                    }                  | TK_HELD_PERIOD '=' TK_NUMBER {		     set_current_globals();		     if (!TEST_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_HELD_PER)) {		       SET_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_HELD_PER);		       tmp_config->globals->held_period = $3;		     }                    }                  | TK_MAX_STARTS '=' TK_NUMBER {		     set_current_globals();		     if (!TEST_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_MAX_STARTS)) {		       SET_FLAG(tmp_config->globals->flags, CONFIG_GLOBALS_MAX_STARTS);		       tmp_config->globals->max_starts = $3;		     }                    }                  | TK_ALLMULTI '=' TK_YES {		     set_current_globals();		     SET_FLAG(tmp_config->globals->flags,			      CONFIG_GLOBALS_ALLMULTI);                    }                   | TK_ALLMULTI '=' TK_NO {		     set_current_globals();		     UNSET_FLAG(tmp_config->globals->flags,				CONFIG_GLOBALS_ALLMULTI);                    }                  | TK_ALLMULTI '=' TK_UNQUOTED_STR {                     printf("Unknown value for ALLMULTI = \"%s\"! Defaulting to YES! (Line : %d)\n", $3, config_linenum);		     set_current_globals();		     SET_FLAG(tmp_config->globals->flags,			      CONFIG_GLOBALS_ALLMULTI);                    }                  | TK_IPC_GROUP '=' TK_UNQUOTED_STR {		    set_current_globals();		    if (!tmp_config->globals->ipc_group_name)			  tmp_config->globals->ipc_group_name = $3;			else			  free($3);                      }                  | TK_DESTINATION '=' TK_AUTO {		    set_current_globals();		    tmp_config->globals->destination = DEST_AUTO;                      }                  | TK_DESTINATION '=' TK_BSSID {		    set_current_globals();		    tmp_config->globals->destination = DEST_BSSID;                      }                  | TK_DESTINATION '=' TK_MULTICAST {		    set_current_globals();		    tmp_config->globals->destination = DEST_MULTICAST;                      }                  | TK_DESTINATION '=' TK_SOURCE {		    set_current_globals();		    tmp_config->globals->destination = DEST_SOURCE;                      }                  | TK_DESTINATION '=' TK_UNQUOTED_STR {		    printf("Invalid destination value = \"%s\"!  Defaulting to AUTO! (Line : %d)\n", $3, config_linenum);                    set_current_globals();                    tmp_config->globals->destination = DEST_AUTO;                      }                  | TK_LOG_FACILITY '=' TK_UNQUOTED_STR {                    set_current_globals();                    if (!tmp_config->globals->log_facility)                          tmp_config->globals->log_facility = $3;                    else                      free($3);                    }                  ;network_list      : network_list ',' TK_UNQUOTED_STR {                       parameter_debug("network_list: \"%s\"\n", $3);		       set_current_globals();		       if (config_string_list_contains_string(tmp_config->globals->allowed_nets,							    $3))			 free($3);		       else 			 config_string_list_add_string(&tmp_config->globals->allowed_nets,						     $3);                    }                  | TK_UNQUOTED_STR {                        parameter_debug("network_list: \"%s\"\n", $1);		       set_current_globals();		       if (config_string_list_contains_string(tmp_config->globals->allowed_nets,							    $1))			 free($1);		       else 			 config_string_list_add_string(&tmp_config->globals->allowed_nets,						     $1);                    }		    | network_list ',' TK_QUOTED_STR {                       parameter_debug("network_list: \"%s\"\n", $3);		       set_current_globals();		       if (config_string_list_contains_string(tmp_config->globals->allowed_nets,							    $3))			 free($3);		       else 			 config_string_list_add_string(&tmp_config->globals->allowed_nets,						     $3);                    }                  | TK_QUOTED_STR {                        parameter_debug("network_list: \"%s\"\n", $1);		       set_current_globals();		       if (config_string_list_contains_string(tmp_config->globals->allowed_nets,							    $1))			 free($1);		       else 			 config_string_list_add_string(&tmp_config->globals->allowed_nets,						     $1);                    }                  ;network_entry     : TK_UNQUOTED_STR '{' network_statements '}' {                      set_current_config();		      tmp_network->name = $1;		      // check if there is a networks field and that 		      // the current tmp is not already listed		      if ((!tmp_config->networks ||			  !config_network_contains_net(tmp_config->networks,						       tmp_network->name)) &&			  config_allows_network(tmp_config, tmp_network->name))		      {			config_network_add_net(&(tmp_config->networks),					       tmp_network);		      }		      // if we don't need it, delete it		      else {			delete_config_network(&tmp_network);		      }		      tmp_network = NULL;                    }                  | TK_NUMBER '{' network_statements '}' {                      set_current_config();		      tmp_network->name = (char *)malloc(100);		      sprintf(tmp_network->name, "%d", $1);		      // check if there is a networks field and that 		      // the current tmp is not already listed		      if ((!tmp_config->networks ||			  !config_network_contains_net(tmp_config->networks,						       tmp_network->name)) &&			  config_allows_network(tmp_config, tmp_network->name))		      {			config_network_add_net(&(tmp_config->networks),					       tmp_network);		      }		      // if we don't need it, delete it		      else {			delete_config_network(&tmp_network);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -