blob: 20c132e311b226fd90a8794a0da62a692dedfea9 [file] [log] [blame]
Yingdi Yu40cd1c32014-04-17 15:02:17 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2014 University of Memphis,
4 * Regents of the University of California
5 *
6 * This file is part of NLSR (Named-data Link State Routing).
7 * See AUTHORS.md for complete list of NLSR authors and contributors.
8 *
9 * NLSR is free software: you can redistribute it and/or modify it under the terms
10 * of the GNU General Public License as published by the Free Software Foundation,
11 * either version 3 of the License, or (at your option) any later version.
12 *
13 * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
14 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21#include "nlsr.hpp"
akmhoque53353462014-04-22 08:43:45 -050022#include "conf-file-processor.hpp"
Yingdi Yu40cd1c32014-04-17 15:02:17 -070023
24using namespace nlsr;
25
26int
akmhoque53353462014-04-22 08:43:45 -050027main(int argc, char** argv)
Yingdi Yu40cd1c32014-04-17 15:02:17 -070028{
Yingdi Yu40cd1c32014-04-17 15:02:17 -070029 nlsr::Nlsr nlsr_;
30 string programName(argv[0]);
31 nlsr_.setConfFileName("nlsr.conf");
32 int opt;
33 while ((opt = getopt(argc, argv, "df:p:h")) != -1)
34 {
35 switch (opt)
36 {
37 case 'f':
38 nlsr_.setConfFileName(optarg);
39 break;
40 case 'd':
41 nlsr_.setIsDaemonProcess(optarg);
42 break;
43 case 'p':
akmhoque53353462014-04-22 08:43:45 -050044 {
45 stringstream sst(optarg);
46 int ap;
47 sst >> ap;
48 nlsr_.setApiPort(ap);
49 }
50 break;
Yingdi Yu40cd1c32014-04-17 15:02:17 -070051 case 'h':
akmhoque53353462014-04-22 08:43:45 -050052
Yingdi Yu40cd1c32014-04-17 15:02:17 -070053 default:
54 nlsr_.usage(programName);
55 return EXIT_FAILURE;
56 }
57 }
58 ConfFileProcessor cfp(nlsr_.getConfFileName());
akmhoque53353462014-04-22 08:43:45 -050059 int res = cfp.processConfFile(nlsr_);
60 if (res < 0)
Yingdi Yu40cd1c32014-04-17 15:02:17 -070061 {
akmhoque53353462014-04-22 08:43:45 -050062 std::cerr << "Error in configuration file processing! Exiting from NLSR" <<
63 std::endl;
Yingdi Yu40cd1c32014-04-17 15:02:17 -070064 return EXIT_FAILURE;
65 }
66 nlsr_.initialize();
67 try
68 {
69 nlsr_.startEventLoop();
70 }
akmhoque53353462014-04-22 08:43:45 -050071 catch (std::exception& e)
Yingdi Yu40cd1c32014-04-17 15:02:17 -070072 {
73 std::cerr << "ERROR: " << e.what() << std::endl;
74 }
75 return EXIT_SUCCESS;
76}