4 * The secure anycast tunneling protocol (satp) defines a protocol used
5 * for communication between any combination of unicast and anycast
6 * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel
7 * mode and allows tunneling of every ETHER TYPE protocol (e.g.
8 * ethernet, ip, arp ...). satp directly includes cryptography and
9 * message authentication based on the methodes used by SRTP. It is
10 * intended to deliver a generic, scaleable and secure solution for
11 * tunneling and relaying of packets of any protocol.
14 * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl,
15 * Christian Pointner <satp@wirdorange.org>
17 * This file is part of Anytun.
19 * Anytun is free software: you can redistribute it and/or modify
20 * it under the terms of the GNU General Public License version 3 as
21 * published by the Free Software Foundation.
23 * Anytun is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
28 * You should have received a copy of the GNU General Public License
29 * along with anytun. If not, see <http://www.gnu.org/licenses/>.
32 #ifndef _RTPSESSION_H_
33 #define _RTPSESSION_H_
35 #include "threadUtils.hpp"
37 #include <boost/archive/text_oarchive.hpp>
38 #include <boost/archive/text_iarchive.hpp>
43 RtpSession(const std::string
& call_id
);
49 bool isComplete(bool c
);
51 std::string
getLocalAddr();
52 RtpSession
& setLocalAddr(std::string a
);
53 u_int16_t
getLocalPort1();
54 RtpSession
& setLocalPort1(u_int16_t p
);
55 u_int16_t
getLocalPort2();
56 RtpSession
& setLocalPort2(u_int16_t p
);
59 u_int16_t
getRemotePort1();
60 RtpSession
& setRemotePort1(u_int16_t p
);
61 std::string
getRemoteAddr1();
62 RtpSession
& setRemoteAddr1(std::string a
);
64 u_int16_t
getRemotePort2();
65 RtpSession
& setRemotePort2(u_int16_t p
);
66 std::string
getRemoteAddr2();
67 RtpSession
& setRemoteAddr2(std::string a
);
69 RtpSession
& setSeen1();
72 RtpSession
& setSeen2();
76 RtpSession(const RtpSession
& src
);
80 //TODO: check if this is ok
81 friend class boost::serialization::access
;
82 template<class Archive
>
83 void serialize(Archive
& ar
, const unsigned int version
)
99 if(complete_
&& !dead_
)
108 const std::string
& call_id_
;
111 std::string local_addr_
;
112 u_int16_t local_port1_
, local_port2_
;
113 std::string remote_addr1_
, remote_addr2_
;
114 u_int16_t remote_port1_
, remote_port2_
;
115 bool seen1_
,seen2_
; //has at least 1 packet been recieved?