ppaass_protocol_v2/business_obj/
tunnel.rs1use crate::PpaassProtocolUnifyAddress;
2use bytes::Bytes;
3use derive_more::{Constructor, Display};
4use serde::{Deserialize, Serialize};
5#[derive(Serialize, Deserialize, Debug, Display, Copy, Clone)]
6pub enum TunnelType {
7 #[display("TCP")]
8 Tcp,
9 #[display("UDP")]
10 Udp,
11}
12
13#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
14#[display(
15 r#"{{
16 tunnel_id: {tunnel_id},
17 tunnel_type: {tunnel_type},
18 src_address: {src_address},
19 dst_address: {dst_address},
20 }}"#
21)]
22pub struct TunnelInit {
23 tunnel_id: String,
24 tunnel_type: TunnelType,
25 src_address: PpaassProtocolUnifyAddress,
26 dst_address: PpaassProtocolUnifyAddress,
27}
28
29impl TunnelInit {
30 pub fn tunnel_id(&self) -> &str {
31 self.tunnel_id.as_str()
32 }
33
34 pub fn tunnel_type(&self) -> TunnelType {
35 self.tunnel_type
36 }
37
38 pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
39 &self.src_address
40 }
41
42 pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
43 &self.dst_address
44 }
45}
46
47#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
48#[display(
49 r#"{{
50 tunnel_id: {tunnel_id},
51 tunnel_type: {tunnel_type},
52 src_address: {src_address},
53 dst_address: {dst_address},
54 tunnel_data: {tunnel_data:?}
55 }}"#
56)]
57pub struct TunnelData {
58 tunnel_id: String,
59 tunnel_type: TunnelType,
60 src_address: PpaassProtocolUnifyAddress,
61 dst_address: PpaassProtocolUnifyAddress,
62 tunnel_data: Bytes,
63}
64
65impl TunnelData {
66 pub fn tunnel_id(&self) -> &str {
67 self.tunnel_id.as_str()
68 }
69
70 pub fn tunnel_type(&self) -> TunnelType {
71 self.tunnel_type
72 }
73
74 pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
75 &self.src_address
76 }
77
78 pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
79 &self.dst_address
80 }
81}
82
83#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
84#[display(
85 r#"{{
86 tunnel_id: {tunnel_id},
87 src_address: {src_address},
88 dst_address: {dst_address},
89 }}"#
90)]
91pub struct TunnelClose {
92 tunnel_id: String,
93 src_address: PpaassProtocolUnifyAddress,
94 dst_address: PpaassProtocolUnifyAddress,
95}
96
97impl TunnelClose {
98 pub fn tunnel_id(&self) -> &str {
99 self.tunnel_id.as_str()
100 }
101
102 pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
103 &self.src_address
104 }
105
106 pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
107 &self.dst_address
108 }
109}