5 using SSMD::SettingsParser;
7 SettingsParser::SettingsParser()
8 : _desc("Allowed options")
10 // Declare the supported options.
12 ("help", "produce help message")
13 ("config,c", po::value<std::string>()->default_value("/etc/ssmd/ssmd.conf"), "config file location")
14 ("daemon,d", "daemonize after start")
15 ("debug", "ssmd debugging")
16 ("log-file", po::value<std::string>(), "log file location")
17 ("pid-file", po::value<std::string>(), "PID file location")
18 ("switch-sync-interval,s", po::value<time_t>(), "switch synchronization interval")
19 ("info-sync-interval,i", po::value<time_t>(), "info synchronization interval")
20 ("up-profile-id", po::value<unsigned>(), "switch's upload profile id")
21 ("down-profile-id", po::value<unsigned>(), "switch's download profile id")
22 ("max-acl-per-pdu", po::value<size_t>(), "maximum ACL's per PDU")
23 ("data-url", po::value<std::string>(), "data access URL")
24 ("script-base", po::value<std::string>(), "base dir for scripts")
25 ("dump-scripts", "dump SNMP command into shell scripts")
26 ("version,v", "show ssmd version and exit")
30 void SettingsParser::init(int argc, char * argv[])
33 po::store(po::parse_command_line(argc, argv, _desc), vm);
36 _settings._isHelp = vm.count("help");
37 _settings._isVersion = vm.count("version");
39 if (vm.count("config"))
40 _settings._configFile = vm["config"].as<std::string>();
42 if (!_settings._isHelp &&
43 !_settings._isVersion) {
45 parseFile(_settings._configFile);
47 catch (std::exception & ex) {
48 logger << "Error parsing config file '" << _settings._configFile << "': " << ex.what() << std::endl;
52 if (vm.count("debug"))
53 _settings._isDebug = true;
54 if (vm.count("daemon"))
55 _settings._isDaemon = true;
57 if (vm.count("log-file"))
58 _settings._logFile = vm["log-file"].as<std::string>();
59 if (vm.count("pid-file"))
60 _settings._PIDFile = vm["pid-file"].as<std::string>();
61 if (vm.count("switch-sync-interval"))
62 _settings._switchSyncInterval = vm["switch-sync-interval"].as<time_t>();
63 if (vm.count("info-sync-interval"))
64 _settings._infoSyncInterval = vm["info-sync-interval"].as<time_t>();
65 if (vm.count("up-profile-id"))
66 _settings._upProfileId = vm["up-profile-id"].as<unsigned>();
67 if (vm.count("down-profile-id"))
68 _settings._downProfileId = vm["down-profile-id"].as<unsigned>();
69 if (vm.count("max-acl-per-pdu"))
70 _settings._downProfileId = vm["max-acl-per-pdu"].as<unsigned>();
71 if (vm.count("data-url"))
72 _settings._dataURL = vm["data-url"].as<std::string>();
73 if (vm.count("script-base"))
74 _settings._scriptBase = vm["script-base"].as<std::string>();
75 if (vm.count("dump-scripts"))
76 _settings._dumpScripts = true;
79 void SettingsParser::reloadConfig()
81 parseFile(_settings._configFile);