xref: /aosp_15_r20/tools/netsim/rust/daemon/src/args.rs (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker // Copyright 2023 Google LLC
2*cf78ab8cSAndroid Build Coastguard Worker //
3*cf78ab8cSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*cf78ab8cSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*cf78ab8cSAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*cf78ab8cSAndroid Build Coastguard Worker //
7*cf78ab8cSAndroid Build Coastguard Worker //     https://www.apache.org/licenses/LICENSE-2.0
8*cf78ab8cSAndroid Build Coastguard Worker //
9*cf78ab8cSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*cf78ab8cSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*cf78ab8cSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cf78ab8cSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*cf78ab8cSAndroid Build Coastguard Worker // limitations under the License.
14*cf78ab8cSAndroid Build Coastguard Worker 
15*cf78ab8cSAndroid Build Coastguard Worker use clap::Parser;
16*cf78ab8cSAndroid Build Coastguard Worker 
17*cf78ab8cSAndroid Build Coastguard Worker #[derive(Debug, Parser)]
18*cf78ab8cSAndroid Build Coastguard Worker pub struct NetsimdArgs {
19*cf78ab8cSAndroid Build Coastguard Worker     /// File descriptor start up info proto
20*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short = 's', long, alias = "fd_startup_str")]
21*cf78ab8cSAndroid Build Coastguard Worker     pub fd_startup_str: Option<String>,
22*cf78ab8cSAndroid Build Coastguard Worker 
23*cf78ab8cSAndroid Build Coastguard Worker     /// Disable grpc server for CLI
24*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "no_cli_ui")]
25*cf78ab8cSAndroid Build Coastguard Worker     pub no_cli_ui: bool,
26*cf78ab8cSAndroid Build Coastguard Worker 
27*cf78ab8cSAndroid Build Coastguard Worker     /// Disable web server
28*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "no_web_ui")]
29*cf78ab8cSAndroid Build Coastguard Worker     pub no_web_ui: bool,
30*cf78ab8cSAndroid Build Coastguard Worker 
31*cf78ab8cSAndroid Build Coastguard Worker     /// Enable packet capture
32*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long)]
33*cf78ab8cSAndroid Build Coastguard Worker     pub pcap: bool,
34*cf78ab8cSAndroid Build Coastguard Worker 
35*cf78ab8cSAndroid Build Coastguard Worker     /// Disable Address Reuse for test model
36*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "disable_address_reuse")]
37*cf78ab8cSAndroid Build Coastguard Worker     pub disable_address_reuse: bool,
38*cf78ab8cSAndroid Build Coastguard Worker 
39*cf78ab8cSAndroid Build Coastguard Worker     /// Set custom hci port
40*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "hci_port")]
41*cf78ab8cSAndroid Build Coastguard Worker     pub hci_port: Option<u32>,
42*cf78ab8cSAndroid Build Coastguard Worker 
43*cf78ab8cSAndroid Build Coastguard Worker     /// Enables connector mode to forward packets to another instance.
44*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short, long, alias = "connector_instance", visible_alias = "connector_instance_num")]
45*cf78ab8cSAndroid Build Coastguard Worker     pub connector_instance: Option<u16>,
46*cf78ab8cSAndroid Build Coastguard Worker 
47*cf78ab8cSAndroid Build Coastguard Worker     /// Netsimd instance number
48*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short, long, visible_alias = "instance_num")]
49*cf78ab8cSAndroid Build Coastguard Worker     pub instance: Option<u16>,
50*cf78ab8cSAndroid Build Coastguard Worker 
51*cf78ab8cSAndroid Build Coastguard Worker     /// Set whether log messages go to stderr instead of logfiles
52*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short, long)]
53*cf78ab8cSAndroid Build Coastguard Worker     pub logtostderr: bool,
54*cf78ab8cSAndroid Build Coastguard Worker 
55*cf78ab8cSAndroid Build Coastguard Worker     /// Enable development mode. This will include additional features
56*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short, long)]
57*cf78ab8cSAndroid Build Coastguard Worker     pub dev: bool,
58*cf78ab8cSAndroid Build Coastguard Worker 
59*cf78ab8cSAndroid Build Coastguard Worker     /// Forwards mDNS from the host to the guest, allowing emulator to discover mDNS services running on the host.
60*cf78ab8cSAndroid Build Coastguard Worker     ///
61*cf78ab8cSAndroid Build Coastguard Worker     /// # Limitations
62*cf78ab8cSAndroid Build Coastguard Worker     /// * Currently only supports a single emulator.
63*cf78ab8cSAndroid Build Coastguard Worker     /// * May impact Wi-Fi connectivity between emulators.
64*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, verbatim_doc_comment)]
65*cf78ab8cSAndroid Build Coastguard Worker     pub forward_host_mdns: bool,
66*cf78ab8cSAndroid Build Coastguard Worker 
67*cf78ab8cSAndroid Build Coastguard Worker     /// Set the vsock port number to be listened by the frontend grpc server
68*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short, long)]
69*cf78ab8cSAndroid Build Coastguard Worker     pub vsock: Option<u16>,
70*cf78ab8cSAndroid Build Coastguard Worker 
71*cf78ab8cSAndroid Build Coastguard Worker     /// The name of a config file to load
72*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long)]
73*cf78ab8cSAndroid Build Coastguard Worker     pub config: Option<String>,
74*cf78ab8cSAndroid Build Coastguard Worker 
75*cf78ab8cSAndroid Build Coastguard Worker     /// Comma separated list of host DNS servers
76*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long)]
77*cf78ab8cSAndroid Build Coastguard Worker     pub host_dns: Option<String>,
78*cf78ab8cSAndroid Build Coastguard Worker 
79*cf78ab8cSAndroid Build Coastguard Worker     /// Redirect all TCP connections through the specified HTTP/HTTPS proxy.
80*cf78ab8cSAndroid Build Coastguard Worker     /// Can be one of the following:
81*cf78ab8cSAndroid Build Coastguard Worker     ///     http://<server>:<port>
82*cf78ab8cSAndroid Build Coastguard Worker     ///     http://<username>:<password>@<server>:<port>
83*cf78ab8cSAndroid Build Coastguard Worker     ///     (the 'http://' prefix can be omitted)
84*cf78ab8cSAndroid Build Coastguard Worker     /// WARNING: This flag is still working in progress.
85*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, verbatim_doc_comment)]
86*cf78ab8cSAndroid Build Coastguard Worker     #[cfg_attr(not(feature = "cuttlefish"), arg(env = "http_proxy"))]
87*cf78ab8cSAndroid Build Coastguard Worker     pub http_proxy: Option<String>,
88*cf78ab8cSAndroid Build Coastguard Worker 
89*cf78ab8cSAndroid Build Coastguard Worker     // Use TAP interface instead of libslirp for Wi-Fi
90*cf78ab8cSAndroid Build Coastguard Worker     /// WARNING: This flag is still working in progress.
91*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long)]
92*cf78ab8cSAndroid Build Coastguard Worker     pub wifi_tap: Option<String>,
93*cf78ab8cSAndroid Build Coastguard Worker 
94*cf78ab8cSAndroid Build Coastguard Worker     /// Start with test beacons
95*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "test_beacons", overrides_with("no_test_beacons"))]
96*cf78ab8cSAndroid Build Coastguard Worker     pub test_beacons: bool,
97*cf78ab8cSAndroid Build Coastguard Worker 
98*cf78ab8cSAndroid Build Coastguard Worker     /// Do not start with test beacons
99*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "no_test_beacons", overrides_with("test_beacons"))]
100*cf78ab8cSAndroid Build Coastguard Worker     pub no_test_beacons: bool,
101*cf78ab8cSAndroid Build Coastguard Worker 
102*cf78ab8cSAndroid Build Coastguard Worker     /// Disable netsimd from shutting down automatically.
103*cf78ab8cSAndroid Build Coastguard Worker     /// WARNING: This flag is for development purpose. netsimd will not shutdown without SIGKILL.
104*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long, alias = "no_shutdown")]
105*cf78ab8cSAndroid Build Coastguard Worker     pub no_shutdown: bool,
106*cf78ab8cSAndroid Build Coastguard Worker 
107*cf78ab8cSAndroid Build Coastguard Worker     /// Entering Verbose mode
108*cf78ab8cSAndroid Build Coastguard Worker     #[arg(short = 'v', long)]
109*cf78ab8cSAndroid Build Coastguard Worker     pub verbose: bool,
110*cf78ab8cSAndroid Build Coastguard Worker 
111*cf78ab8cSAndroid Build Coastguard Worker     /// Print Netsimd version information
112*cf78ab8cSAndroid Build Coastguard Worker     #[arg(long)]
113*cf78ab8cSAndroid Build Coastguard Worker     pub version: bool,
114*cf78ab8cSAndroid Build Coastguard Worker }
115