blob: 6556816b7be8ad53ddb85aa969d255be7bd1a81c [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"
22#include "nlsr_conf_processor.hpp"
23
24using namespace nlsr;
25
26int
27main(int argc, char **argv)
28{
29 src::logger lg;
30 nlsr::Nlsr nlsr_;
31 string programName(argv[0]);
32 nlsr_.setConfFileName("nlsr.conf");
33 int opt;
34 while ((opt = getopt(argc, argv, "df:p:h")) != -1)
35 {
36 switch (opt)
37 {
38 case 'f':
39 nlsr_.setConfFileName(optarg);
40 break;
41 case 'd':
42 nlsr_.setIsDaemonProcess(optarg);
43 break;
44 case 'p':
45 {
46 stringstream sst(optarg);
47 int ap;
48 sst>>ap;
49 nlsr_.setApiPort(ap);
50 }
51 break;
52 case 'h':
53 default:
54 nlsr_.usage(programName);
55 return EXIT_FAILURE;
56 }
57 }
58 ConfFileProcessor cfp(nlsr_.getConfFileName());
59 int res=cfp.processConfFile(nlsr_);
60 if ( res < 0 )
61 {
62 std::cerr<<"Error in configuration file processing! Exiting from NLSR"<<std::endl;
63 return EXIT_FAILURE;
64 }
65 nlsr_.initialize();
66 try
67 {
68 nlsr_.startEventLoop();
69 }
70 catch(std::exception &e)
71 {
72 std::cerr << "ERROR: " << e.what() << std::endl;
73 }
74 return EXIT_SUCCESS;
75}