TYPE3
[iec.git] / src / type3_AndroidCloud / anbox-master / src / anbox / android / ip_config_builder.h
1 /*
2  * Copyright (C) 2017 Simon Fels <morphis@gravedo.de>
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License version 3, as published
6  * by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranties of
10  * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11  * PURPOSE.  See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program.  If not, see <http://www.gnu.org/licenses/>.
15  *
16  */
17
18 #ifndef ANBOX_ANDROID_IPCONFIGBUILDER_H_
19 #define ANBOX_ANDROID_IPCONFIGBUILDER_H_
20
21 #include "anbox/common/binary_writer.h"
22
23 #include <string>
24 #include <vector>
25 #include <cstdint>
26
27 namespace anbox {
28 namespace android {
29 class IpConfigBuilder {
30  public:
31   enum class Version : std::uint32_t {
32     Version1 = 1,
33     Version2 = 2,
34   };
35
36   enum class Assignment {
37     Static,
38     DHCP,
39   };
40
41   IpConfigBuilder() = default;
42
43   std::size_t write(common::BinaryWriter &writer);
44
45   void set_version(const Version &version);
46   void set_assignment(const Assignment &assignment);
47   void set_link_address(const std::string &address, std::uint32_t prefix_length);
48   void set_gateway(const std::string &gateway);
49   void set_dns_servers(const std::vector<std::string> &dns_servers);
50   void set_id(std::uint32_t id);
51
52  private:
53   Version version_;
54   Assignment assignment_;
55   struct {
56     std::string address;
57     std::uint32_t prefix_length;
58   } link_;
59   std::string gateway_;
60   std::vector<std::string> dns_servers_;
61   std::uint32_t id_;
62 };
63 }  // namespace android
64 }  // namespace anbox
65
66 #endif