OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
controller/src/vnsw/agent/vxlan_agent/linux/main.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 #include <base/misc_utils.h>
5 #include <cmn/buildinfo.h>
6 #include <cmn/agent_cmn.h>
7 #include <init/agent_param.h>
10 
11 namespace opt = boost::program_options;
12 using namespace std;
13 
14 void RouterIdDepInit(Agent *agent) {
15  // Parse config and then connect
17  LOG(DEBUG, "Router ID Dependent modules (Nova and BGP) INITIALIZED");
18 }
19 
20 bool GetBuildInfo(std::string &build_info_str) {
21  return MiscUtils::GetBuildInfo(MiscUtils::Agent, BuildInfo, build_info_str);
22 }
23 
24 int main(int argc, char *argv[]) {
25  AgentParam params(false, false, false, false);
26 
27  const opt::variables_map &var_map = params.var_map();
28  try {
29  params.ParseArguments(argc, argv);
30  } catch (...) {
31  cout << "Invalid arguments. ";
32  cout << params.options() << endl;
33  exit(0);
34  }
35 
36  if (var_map.count("help")) {
37  cout << params.options() << endl;
38  exit(0);
39  }
40 
41  if (var_map.count("version")) {
42  string build_info;
43  MiscUtils::GetBuildInfo(MiscUtils::Agent, BuildInfo, build_info);
44  cout << build_info << endl;
45  exit(0);
46  }
47 
48  string init_file = "";
49  if (var_map.count("config_file")) {
50  init_file = var_map["config_file"].as<string>();
51  struct stat s;
52  if (stat(init_file.c_str(), &s) != 0) {
53  LOG(ERROR, "Error opening config file <" << init_file
54  << ">. Error number <" << errno << ">");
55  exit(EINVAL);
56  }
57  }
58 
59  // Read agent parameters from config file and arguments
60  params.Init(init_file, argv[0]);
61 
62  // Initialize TBB
63  // Call to GetScheduler::GetInstance() will also create Task Scheduler
64  TaskScheduler::Initialize(params.tbb_thread_count());
65 
66  // Initialize the agent-init control class
68  Agent *agent = init.agent();
69  string build_info;
70 
71  GetBuildInfo(build_info);
72  MiscUtils::LogVersionInfo(build_info, Category::VROUTER);
73 
74  init.set_agent_param(&params);
75 
76  // kick start initialization
77  int ret = 0;
78  if ((ret = init.Start()) != 0) {
79  return ret;
80  }
81 
82  agent->event_manager()->Run();
83 
84  return 0;
85 }
void init()
Definition: bgp_log.cc:37
static Agent * GetInstance()
Definition: agent.h:436
static void Initialize(uint32_t thread_count=0, EventManager *evm=NULL)
Definition: task.cc:478
static bool GetBuildInfo(BuildModule id, const std::string &build_info, std::string &result)
Definition: misc_utils.cc:99
static void LogVersionInfo(const std::string str, Category::type categ)
Definition: misc_utils.cc:38
Definition: agent.h:358
VNController * controller() const
Definition: agent.cc:981
EventManager * event_manager() const
Definition: agent.h:1103
#define LOG(_Level, _Msg)
Definition: logging.h:33
void RouterIdDepInit(Agent *agent)
bool GetBuildInfo(std::string &build_info_str)