1 //
2 // Copyright (C) 2013 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #ifndef SHILL_CONNECTION_INFO_H_
18 #define SHILL_CONNECTION_INFO_H_
19 
20 #include <base/macros.h>
21 
22 #include "shill/net/ip_address.h"
23 
24 namespace shill {
25 
26 class ConnectionInfo {
27  public:
28   ConnectionInfo();
29   ConnectionInfo(int protocol,
30                  int64_t time_to_expire_seconds,
31                  bool is_unreplied,
32                  IPAddress original_source_ip_address,
33                  uint16_t original_source_port,
34                  IPAddress original_destination_ip_address,
35                  uint16_t original_destination_port,
36                  IPAddress reply_source_ip_address,
37                  uint16_t reply_source_port,
38                  IPAddress reply_destination_ip_address,
39                  uint16_t reply_destination_port);
40   ConnectionInfo(const ConnectionInfo& info);
41   ~ConnectionInfo();
42 
43   ConnectionInfo& operator=(const ConnectionInfo& info);
44 
protocol()45   int protocol() const { return protocol_; }
set_protocol(int protocol)46   void set_protocol(int protocol) { protocol_ = protocol; }
47 
time_to_expire_seconds()48   int64_t time_to_expire_seconds() const { return time_to_expire_seconds_; }
set_time_to_expire_seconds(int64_t time_to_expire_seconds)49   void set_time_to_expire_seconds(int64_t time_to_expire_seconds) {
50     time_to_expire_seconds_ = time_to_expire_seconds;
51   }
52 
is_unreplied()53   bool is_unreplied() const { return is_unreplied_; }
set_is_unreplied(bool is_unreplied)54   void set_is_unreplied(bool is_unreplied) { is_unreplied_ = is_unreplied; }
55 
original_source_ip_address()56   const IPAddress& original_source_ip_address() const {
57     return original_source_ip_address_;
58   }
set_original_source_ip_address(const IPAddress & original_source_ip_address)59   void set_original_source_ip_address(
60       const IPAddress& original_source_ip_address) {
61     original_source_ip_address_ = original_source_ip_address;
62   }
63 
original_source_port()64   uint16_t original_source_port() const { return original_source_port_; }
set_original_source_port(uint16_t original_source_port)65   void set_original_source_port(uint16_t original_source_port) {
66     original_source_port_ = original_source_port;
67   }
68 
original_destination_ip_address()69   const IPAddress& original_destination_ip_address() const {
70     return original_destination_ip_address_;
71   }
set_original_destination_ip_address(const IPAddress & original_destination_ip_address)72   void set_original_destination_ip_address(
73       const IPAddress& original_destination_ip_address) {
74     original_destination_ip_address_ = original_destination_ip_address;
75   }
76 
original_destination_port()77   uint16_t original_destination_port() const {
78     return original_destination_port_;
79   }
set_original_destination_port(uint16_t original_destination_port)80   void set_original_destination_port(uint16_t original_destination_port) {
81     original_destination_port_ = original_destination_port;
82   }
83 
reply_source_ip_address()84   const IPAddress& reply_source_ip_address() const {
85     return reply_source_ip_address_;
86   }
set_reply_source_ip_address(const IPAddress & reply_source_ip_address)87   void set_reply_source_ip_address(
88       const IPAddress& reply_source_ip_address) {
89     reply_source_ip_address_ = reply_source_ip_address;
90   }
91 
reply_source_port()92   uint16_t reply_source_port() const { return reply_source_port_; }
set_reply_source_port(uint16_t reply_source_port)93   void set_reply_source_port(uint16_t reply_source_port) {
94     reply_source_port_ = reply_source_port;
95   }
96 
reply_destination_ip_address()97   const IPAddress& reply_destination_ip_address() const {
98     return reply_destination_ip_address_;
99   }
set_reply_destination_ip_address(const IPAddress & reply_destination_ip_address)100   void set_reply_destination_ip_address(
101       const IPAddress& reply_destination_ip_address) {
102     reply_destination_ip_address_ = reply_destination_ip_address;
103   }
104 
reply_destination_port()105   uint16_t reply_destination_port() const { return reply_destination_port_; }
set_reply_destination_port(uint16_t reply_destination_port)106   void set_reply_destination_port(uint16_t reply_destination_port) {
107     reply_destination_port_ = reply_destination_port;
108   }
109 
110  private:
111   int protocol_;
112   int64_t time_to_expire_seconds_;
113   bool is_unreplied_;
114 
115   IPAddress original_source_ip_address_;
116   uint16_t original_source_port_;
117   IPAddress original_destination_ip_address_;
118   uint16_t original_destination_port_;
119 
120   IPAddress reply_source_ip_address_;
121   uint16_t reply_source_port_;
122   IPAddress reply_destination_ip_address_;
123   uint16_t reply_destination_port_;
124 
125   // No DISALLOW_COPY_AND_ASSIGN(ConnectionInfo) as ConnectionInfo needs to be
126   // kept in STL containers.
127 };
128 
129 }  // namespace shill
130 
131 #endif  // SHILL_CONNECTION_INFO_H_
132