blob: a4b39545584fb415fbef03548531fe191d713b60 [file] [log] [blame]
Kevin Cernekee95d4ae92016-06-19 10:26:29 -07001// Copyright 2016 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <unistd.h>
6
Kevin Cernekee27bcaa62016-12-03 11:16:26 -08007#include <memory>
8#include <utility>
9
10#include <base/files/scoped_file.h>
Kevin Cernekee95d4ae92016-06-19 10:26:29 -070011#include <base/logging.h>
12#include <brillo/flag_helper.h>
13#include <brillo/syslog_logging.h>
14
Hidehiko Abe3a7e5132018-02-15 13:07:50 +090015#include "arc/network/helper_process.h"
16#include "arc/network/ip_helper.h"
17#include "arc/network/manager.h"
Kevin Cernekee95d4ae92016-06-19 10:26:29 -070018
19int main(int argc, char* argv[]) {
20 DEFINE_bool(log_to_stderr, false, "Log to both syslog and stderr");
Kevin Cernekee27bcaa62016-12-03 11:16:26 -080021 DEFINE_int32(
Hidehiko Abe3a7e5132018-02-15 13:07:50 +090022 ip_helper_fd, -1,
Kevin Cernekee27bcaa62016-12-03 11:16:26 -080023 "Control socket for starting an IpHelper subprocess. Used internally.");
Kevin Cernekee95d4ae92016-06-19 10:26:29 -070024
25 brillo::FlagHelper::Init(argc, argv, "ARC network daemon");
26
27 int flags = brillo::kLogToSyslog | brillo::kLogHeader;
28 if (FLAGS_log_to_stderr)
29 flags |= brillo::kLogToStderr;
30 brillo::InitLog(flags);
31
Hugo Benichi935eca92018-07-03 13:47:24 +090032 LOG(INFO) << "Starting arc-networkd "
Garrick Evans49879532018-12-03 13:15:36 +090033 << (FLAGS_ip_helper_fd >= 0 ? "helper" : "manager");
Hugo Benichi935eca92018-07-03 13:47:24 +090034
Kevin Cernekee27bcaa62016-12-03 11:16:26 -080035 if (FLAGS_ip_helper_fd >= 0) {
36 base::ScopedFD fd(FLAGS_ip_helper_fd);
Garrick Evans49879532018-12-03 13:15:36 +090037 arc_networkd::IpHelper ip_helper{std::move(fd)};
Kevin Cernekee27bcaa62016-12-03 11:16:26 -080038 return ip_helper.Run();
Kevin Cernekee27bcaa62016-12-03 11:16:26 -080039 }
Garrick Evans49879532018-12-03 13:15:36 +090040
41 auto ip_helper = std::make_unique<arc_networkd::HelperProcess>();
42 ip_helper->Start(argc, argv, "--ip_helper_fd");
43
44 arc_networkd::Manager manager{std::move(ip_helper)};
45 return manager.Run();
Kevin Cernekee95d4ae92016-06-19 10:26:29 -070046}