1c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Copyright (C) 2013 The Android Open Source Project 3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Licensed under the Apache License, Version 2.0 (the "License"); 5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// you may not use this file except in compliance with the License. 6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// You may obtain a copy of the License at 7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// http://www.apache.org/licenses/LICENSE-2.0 9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Unless required by applicable law or agreed to in writing, software 11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// distributed under the License is distributed on an "AS IS" BASIS, 12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// See the License for the specific language governing permissions and 14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// limitations under the License. 15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 160364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 170364fb6b844aca8265f240ccb3693edb0e365edfBen Chan#ifndef SHILL_CONNECTION_INFO_H_ 180364fb6b844aca8265f240ccb3693edb0e365edfBen Chan#define SHILL_CONNECTION_INFO_H_ 190364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 20cc67c52a2c00f90e877971d552208dd99825d84eBen Chan#include <base/macros.h> 210364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 228d6b59704591ba9fad57751858835dc332dbdd37Peter Qiu#include "shill/net/ip_address.h" 230364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 240364fb6b844aca8265f240ccb3693edb0e365edfBen Channamespace shill { 250364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 260364fb6b844aca8265f240ccb3693edb0e365edfBen Chanclass ConnectionInfo { 270364fb6b844aca8265f240ccb3693edb0e365edfBen Chan public: 280364fb6b844aca8265f240ccb3693edb0e365edfBen Chan ConnectionInfo(); 290364fb6b844aca8265f240ccb3693edb0e365edfBen Chan ConnectionInfo(int protocol, 307fab89734d88724a288e96a9996b15548c5294c7Ben Chan int64_t time_to_expire_seconds, 310364fb6b844aca8265f240ccb3693edb0e365edfBen Chan bool is_unreplied, 320364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress original_source_ip_address, 337fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t original_source_port, 340364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress original_destination_ip_address, 357fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t original_destination_port, 360364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress reply_source_ip_address, 377fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t reply_source_port, 380364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress reply_destination_ip_address, 397fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t reply_destination_port); 40a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart ConnectionInfo(const ConnectionInfo& info); 410364fb6b844aca8265f240ccb3693edb0e365edfBen Chan ~ConnectionInfo(); 420364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 43a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart ConnectionInfo& operator=(const ConnectionInfo& info); 440364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 450364fb6b844aca8265f240ccb3693edb0e365edfBen Chan int protocol() const { return protocol_; } 460364fb6b844aca8265f240ccb3693edb0e365edfBen Chan void set_protocol(int protocol) { protocol_ = protocol; } 470364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 487fab89734d88724a288e96a9996b15548c5294c7Ben Chan int64_t time_to_expire_seconds() const { return time_to_expire_seconds_; } 497fab89734d88724a288e96a9996b15548c5294c7Ben Chan void set_time_to_expire_seconds(int64_t time_to_expire_seconds) { 500364fb6b844aca8265f240ccb3693edb0e365edfBen Chan time_to_expire_seconds_ = time_to_expire_seconds; 510364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 520364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 530364fb6b844aca8265f240ccb3693edb0e365edfBen Chan bool is_unreplied() const { return is_unreplied_; } 540364fb6b844aca8265f240ccb3693edb0e365edfBen Chan void set_is_unreplied(bool is_unreplied) { is_unreplied_ = is_unreplied; } 550364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 56a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& original_source_ip_address() const { 570364fb6b844aca8265f240ccb3693edb0e365edfBen Chan return original_source_ip_address_; 580364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 590364fb6b844aca8265f240ccb3693edb0e365edfBen Chan void set_original_source_ip_address( 60a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& original_source_ip_address) { 610364fb6b844aca8265f240ccb3693edb0e365edfBen Chan original_source_ip_address_ = original_source_ip_address; 620364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 630364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 647fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t original_source_port() const { return original_source_port_; } 657fab89734d88724a288e96a9996b15548c5294c7Ben Chan void set_original_source_port(uint16_t original_source_port) { 660364fb6b844aca8265f240ccb3693edb0e365edfBen Chan original_source_port_ = original_source_port; 670364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 680364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 69a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& original_destination_ip_address() const { 700364fb6b844aca8265f240ccb3693edb0e365edfBen Chan return original_destination_ip_address_; 710364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 720364fb6b844aca8265f240ccb3693edb0e365edfBen Chan void set_original_destination_ip_address( 73a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& original_destination_ip_address) { 740364fb6b844aca8265f240ccb3693edb0e365edfBen Chan original_destination_ip_address_ = original_destination_ip_address; 750364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 760364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 777fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t original_destination_port() const { 780364fb6b844aca8265f240ccb3693edb0e365edfBen Chan return original_destination_port_; 790364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 807fab89734d88724a288e96a9996b15548c5294c7Ben Chan void set_original_destination_port(uint16_t original_destination_port) { 810364fb6b844aca8265f240ccb3693edb0e365edfBen Chan original_destination_port_ = original_destination_port; 820364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 830364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 84a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& reply_source_ip_address() const { 850364fb6b844aca8265f240ccb3693edb0e365edfBen Chan return reply_source_ip_address_; 860364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 870364fb6b844aca8265f240ccb3693edb0e365edfBen Chan void set_reply_source_ip_address( 88a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& reply_source_ip_address) { 890364fb6b844aca8265f240ccb3693edb0e365edfBen Chan reply_source_ip_address_ = reply_source_ip_address; 900364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 910364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 927fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t reply_source_port() const { return reply_source_port_; } 937fab89734d88724a288e96a9996b15548c5294c7Ben Chan void set_reply_source_port(uint16_t reply_source_port) { 940364fb6b844aca8265f240ccb3693edb0e365edfBen Chan reply_source_port_ = reply_source_port; 950364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 960364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 97a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& reply_destination_ip_address() const { 980364fb6b844aca8265f240ccb3693edb0e365edfBen Chan return reply_destination_ip_address_; 990364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 1000364fb6b844aca8265f240ccb3693edb0e365edfBen Chan void set_reply_destination_ip_address( 101a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const IPAddress& reply_destination_ip_address) { 1020364fb6b844aca8265f240ccb3693edb0e365edfBen Chan reply_destination_ip_address_ = reply_destination_ip_address; 1030364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 1040364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1057fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t reply_destination_port() const { return reply_destination_port_; } 1067fab89734d88724a288e96a9996b15548c5294c7Ben Chan void set_reply_destination_port(uint16_t reply_destination_port) { 1070364fb6b844aca8265f240ccb3693edb0e365edfBen Chan reply_destination_port_ = reply_destination_port; 1080364fb6b844aca8265f240ccb3693edb0e365edfBen Chan } 1090364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1100364fb6b844aca8265f240ccb3693edb0e365edfBen Chan private: 1110364fb6b844aca8265f240ccb3693edb0e365edfBen Chan int protocol_; 1127fab89734d88724a288e96a9996b15548c5294c7Ben Chan int64_t time_to_expire_seconds_; 1130364fb6b844aca8265f240ccb3693edb0e365edfBen Chan bool is_unreplied_; 1140364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1150364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress original_source_ip_address_; 1167fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t original_source_port_; 1170364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress original_destination_ip_address_; 1187fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t original_destination_port_; 1190364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1200364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress reply_source_ip_address_; 1217fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t reply_source_port_; 1220364fb6b844aca8265f240ccb3693edb0e365edfBen Chan IPAddress reply_destination_ip_address_; 1237fab89734d88724a288e96a9996b15548c5294c7Ben Chan uint16_t reply_destination_port_; 1240364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1250364fb6b844aca8265f240ccb3693edb0e365edfBen Chan // No DISALLOW_COPY_AND_ASSIGN(ConnectionInfo) as ConnectionInfo needs to be 1260364fb6b844aca8265f240ccb3693edb0e365edfBen Chan // kept in STL containers. 1270364fb6b844aca8265f240ccb3693edb0e365edfBen Chan}; 1280364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1290364fb6b844aca8265f240ccb3693edb0e365edfBen Chan} // namespace shill 1300364fb6b844aca8265f240ccb3693edb0e365edfBen Chan 1310364fb6b844aca8265f240ccb3693edb0e365edfBen Chan#endif // SHILL_CONNECTION_INFO_H_ 132