Skip to content

Commit 6b97972

Browse files
authored
mirrord-protocol update (part of passthrough mirroring prep) (#3302)
* mirrord-protocol update * Moved LocalTlsSetup from the http module * Handling TLS in TcpProxyTask * MirrorHttpGateway * Discarding responses in mirror HTTP gateway task * Fixed UT * Clippy * Changelog * Fix docs * extended UT * extended UT * make -> connect * Style * Clippy
1 parent e521f51 commit 6b97972

File tree

20 files changed

+519
-325
lines changed

20 files changed

+519
-325
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Adjusted mirrord-protocol in preparation for passthrough mirroring.

mirrord/agent/src/sniffer.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ mod test {
408408

409409
use api::TcpSnifferApi;
410410
use mirrord_protocol::{
411-
tcp::{DaemonTcp, LayerTcp, NewTcpConnection, TcpClose, TcpData},
411+
tcp::{DaemonTcp, LayerTcp, NewTcpConnectionV1, TcpClose, TcpData},
412412
ConnectionId, LogLevel,
413413
};
414414
use rstest::rstest;
@@ -525,7 +525,7 @@ mod test {
525525
let (message, log) = api.recv().await.unwrap();
526526
assert_eq!(
527527
message,
528-
DaemonTcp::NewConnection(NewTcpConnection {
528+
DaemonTcp::NewConnectionV1(NewTcpConnectionV1 {
529529
connection_id: 0,
530530
remote_address: "1.1.1.1".parse().unwrap(),
531531
destination_port: 80,
@@ -681,7 +681,7 @@ mod test {
681681
let (message, log) = api.recv().await.unwrap();
682682
assert_eq!(
683683
message,
684-
DaemonTcp::NewConnection(NewTcpConnection {
684+
DaemonTcp::NewConnectionV1(NewTcpConnectionV1 {
685685
connection_id: 0,
686686
remote_address: session_id.source_addr.into(),
687687
destination_port: session_id.dest_port,
@@ -784,7 +784,7 @@ mod test {
784784
assert_eq!(log, None);
785785
assert_eq!(
786786
msg,
787-
DaemonTcp::NewConnection(NewTcpConnection {
787+
DaemonTcp::NewConnectionV1(NewTcpConnectionV1 {
788788
connection_id: i as ConnectionId,
789789
remote_address: source_addr.into(),
790790
destination_port: 80,
@@ -817,7 +817,7 @@ mod test {
817817
assert_eq!(log, None);
818818
assert_eq!(
819819
msg,
820-
DaemonTcp::NewConnection(NewTcpConnection {
820+
DaemonTcp::NewConnectionV1(NewTcpConnectionV1 {
821821
connection_id: TcpSnifferApi::CONNECTION_CHANNEL_SIZE as ConnectionId,
822822
remote_address: source_addr.into(),
823823
destination_port: 80,

mirrord/agent/src/sniffer/api.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::ops::RangeInclusive;
22

33
use futures::{stream::FuturesUnordered, StreamExt};
44
use mirrord_protocol::{
5-
tcp::{DaemonTcp, LayerTcp, NewTcpConnection, TcpClose, TcpData},
5+
tcp::{DaemonTcp, LayerTcp, NewTcpConnectionV1, TcpClose, TcpData},
66
ConnectionId, LogMessage, Port,
77
};
88
use tokio::sync::{
@@ -111,7 +111,7 @@ impl TcpSnifferApi {
111111
self.connections.insert(id, StreamNotifyClose::new(BroadcastStream::new(conn.data)));
112112

113113
Ok((
114-
DaemonTcp::NewConnection(NewTcpConnection {
114+
DaemonTcp::NewConnectionV1(NewTcpConnectionV1 {
115115
connection_id: id,
116116
remote_address: conn.session_id.source_addr.into(),
117117
local_address: conn.session_id.dest_addr.into(),

mirrord/agent/src/sniffer/messages.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub(crate) struct SnifferCommand {
3838
/// New TCP connection picked up by [`TcpConnectionSniffer`](super::TcpConnectionSniffer).
3939
pub(crate) struct SniffedConnection {
4040
/// Parameters of this connection's TCP session.
41-
/// Can be used to create [`NewTcpConnection`](mirrord_protocol::tcp::NewTcpConnection).
41+
/// Can be used to create [`NewTcpConnectionV1`](mirrord_protocol::tcp::NewTcpConnectionV1).
4242
pub session_id: TcpSessionDirectionId,
4343
/// For receiving data from this connection.
4444
pub data: broadcast::Receiver<Vec<u8>>,

mirrord/agent/src/steal/connection.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use mirrord_protocol::{
1010
tcp::{
1111
ChunkedRequest, ChunkedRequestBodyV1, ChunkedRequestErrorV1, ChunkedRequestErrorV2,
1212
ChunkedRequestStartV1, ChunkedRequestStartV2, DaemonTcp, HttpRequest, HttpRequestMetadata,
13-
HttpRequestTransportType, InternalHttpBody, InternalHttpBodyFrame, InternalHttpBodyNew,
13+
IncomingTrafficTransportType, InternalHttpBody, InternalHttpBodyFrame, InternalHttpBodyNew,
1414
InternalHttpRequest, StealType, TcpClose, TcpData, HTTP_CHUNKED_REQUEST_V2_VERSION,
1515
HTTP_CHUNKED_REQUEST_VERSION, HTTP_FRAMED_VERSION,
1616
},
@@ -49,7 +49,7 @@ struct MatchedHttpRequest {
4949
request_id: RequestId,
5050
request: Request<Incoming>,
5151
metadata: HttpRequestMetadata,
52-
transport: HttpRequestTransportType,
52+
transport: IncomingTrafficTransportType,
5353
}
5454

5555
impl MatchedHttpRequest {
@@ -58,7 +58,7 @@ impl MatchedHttpRequest {
5858
request_id: RequestId,
5959
request: Request<Incoming>,
6060
metadata: HttpRequestMetadata,
61-
transport: HttpRequestTransportType,
61+
transport: IncomingTrafficTransportType,
6262
) -> Self {
6363
HTTP_REQUEST_IN_PROGRESS_COUNT.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
6464

@@ -517,7 +517,7 @@ impl TcpConnectionStealer {
517517

518518
let _ = client
519519
.tx
520-
.send(StealerMessage::TcpSteal(DaemonTcp::NewConnection(
520+
.send(StealerMessage::TcpSteal(DaemonTcp::NewConnectionV1(
521521
connection,
522522
)))
523523
.await;
@@ -785,7 +785,7 @@ mod test {
785785
use hyper_util::rt::TokioIo;
786786
use mirrord_protocol::tcp::{
787787
ChunkedRequest, DaemonTcp, Filter, HttpFilter, HttpRequestMetadata,
788-
HttpRequestTransportType, InternalHttpBodyFrame, StealType,
788+
IncomingTrafficTransportType, InternalHttpBodyFrame, StealType,
789789
};
790790
use rstest::rstest;
791791
use tokio::{
@@ -896,7 +896,7 @@ mod test {
896896
source: "1.3.3.7:1337".parse().unwrap(),
897897
destination: "2.1.3.7:80".parse().unwrap(),
898898
},
899-
transport: HttpRequestTransportType::Tcp,
899+
transport: IncomingTrafficTransportType::Tcp,
900900
request_id: 0,
901901
request,
902902
});
@@ -972,7 +972,7 @@ mod test {
972972
source: "1.3.3.7:1337".parse().unwrap(),
973973
destination: "2.1.3.7:80".parse().unwrap(),
974974
},
975-
transport: HttpRequestTransportType::Tcp,
975+
transport: IncomingTrafficTransportType::Tcp,
976976
request_id: 0,
977977
request,
978978
});

mirrord/agent/src/steal/connections.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::{
1010

1111
use hyper::{body::Incoming, Request, Response};
1212
use mirrord_protocol::{
13-
tcp::{HttpRequestMetadata, HttpRequestTransportType, NewTcpConnection},
13+
tcp::{HttpRequestMetadata, IncomingTrafficTransportType, NewTcpConnectionV1},
1414
ConnectionId, LogMessage, RequestId,
1515
};
1616
use original_destination::OriginalDestination;
@@ -133,12 +133,12 @@ pub enum ConnectionMessageOut {
133133
request: Request<Incoming>,
134134
id: RequestId,
135135
metadata: HttpRequestMetadata,
136-
transport: HttpRequestTransportType,
136+
transport: IncomingTrafficTransportType,
137137
},
138138
/// Subscribed the client to a new TCP connection.
139139
///
140140
/// This variant translates to
141-
/// [`DaemonTcp::NewConnection`](mirrord_protocol::tcp::DaemonTcp::NewConnection).
141+
/// [`DaemonTcp::NewConnectionV1`](mirrord_protocol::tcp::DaemonTcp::NewConnectionV1).
142142
///
143143
/// # Note
144144
///
@@ -147,7 +147,7 @@ pub enum ConnectionMessageOut {
147147
/// should follow.
148148
SubscribedTcp {
149149
client_id: ClientId,
150-
connection: NewTcpConnection,
150+
connection: NewTcpConnectionV1,
151151
},
152152
/// Subscribed the client to a new filtered HTTP connection.
153153
///
@@ -489,7 +489,7 @@ impl ConnectionTask {
489489
self.tx
490490
.send(ConnectionMessageOut::SubscribedTcp {
491491
client_id,
492-
connection: NewTcpConnection {
492+
connection: NewTcpConnectionV1 {
493493
connection_id: self.connection_id,
494494
remote_address: source.ip(),
495495
source_port: source.port(),

mirrord/agent/src/steal/connections/filtered.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use hyper::{
1717
use hyper_util::rt::{TokioExecutor, TokioIo};
1818
use mirrord_protocol::{
1919
tcp::{
20-
HttpRequestMetadata, HttpRequestTransportType, HTTP_CHUNKED_REQUEST_V2_VERSION,
20+
HttpRequestMetadata, IncomingTrafficTransportType, HTTP_CHUNKED_REQUEST_V2_VERSION,
2121
HTTP_FILTERED_UPGRADE_VERSION,
2222
},
2323
ConnectionId, LogMessage, RequestId,
@@ -712,11 +712,11 @@ where
712712
self.next_request_id += 1;
713713

714714
let transport = match self.original_destination.connector() {
715-
Some(connector) => HttpRequestTransportType::Tls {
715+
Some(connector) => IncomingTrafficTransportType::Tls {
716716
alpn_protocol: connector.alpn_protocol().map(Vec::from),
717717
server_name: connector.server_name().map(|name| name.to_str().into()),
718718
},
719-
None => HttpRequestTransportType::Tcp,
719+
None => IncomingTrafficTransportType::Tcp,
720720
};
721721

722722
tx.send(ConnectionMessageOut::Request {
@@ -1327,7 +1327,7 @@ mod test {
13271327
connection_id: TestSetup::CONNECTION_ID,
13281328
id,
13291329
metadata: HttpRequestMetadata::V1 { destination, .. },
1330-
transport: HttpRequestTransportType::Tcp,
1330+
transport: IncomingTrafficTransportType::Tcp,
13311331
..
13321332
} => {
13331333
assert_eq!(received_client_id, client_id);
@@ -1424,7 +1424,7 @@ mod test {
14241424
connection_id: TestSetup::CONNECTION_ID,
14251425
id,
14261426
metadata: HttpRequestMetadata::V1 { destination, .. },
1427-
transport: HttpRequestTransportType::Tcp,
1427+
transport: IncomingTrafficTransportType::Tcp,
14281428
..
14291429
} => {
14301430
assert_eq!(received_client_id, subscribed_client_id);
@@ -1511,7 +1511,7 @@ mod test {
15111511
connection_id: TestSetup::CONNECTION_ID,
15121512
id,
15131513
metadata: HttpRequestMetadata::V1 { destination, .. },
1514-
transport: HttpRequestTransportType::Tcp,
1514+
transport: IncomingTrafficTransportType::Tcp,
15151515
..
15161516
} => {
15171517
assert_eq!(destination, setup.original_address);
@@ -1551,7 +1551,7 @@ mod test {
15511551
connection_id: TestSetup::CONNECTION_ID,
15521552
id,
15531553
metadata: HttpRequestMetadata::V1 { destination, .. },
1554-
transport: HttpRequestTransportType::Tcp,
1554+
transport: IncomingTrafficTransportType::Tcp,
15551555
..
15561556
} => {
15571557
assert_eq!(destination, setup.original_address);
@@ -1617,7 +1617,7 @@ mod test {
16171617
connection_id: TestSetup::CONNECTION_ID,
16181618
id,
16191619
metadata: HttpRequestMetadata::V1 { destination, .. },
1620-
transport: HttpRequestTransportType::Tcp,
1620+
transport: IncomingTrafficTransportType::Tcp,
16211621
..
16221622
} => {
16231623
assert_eq!(destination, setup.original_address);
@@ -1702,7 +1702,7 @@ mod test {
17021702
connection_id: TestSetup::CONNECTION_ID,
17031703
id,
17041704
metadata: HttpRequestMetadata::V1 { destination, .. },
1705-
transport: HttpRequestTransportType::Tcp,
1705+
transport: IncomingTrafficTransportType::Tcp,
17061706
..
17071707
} => {
17081708
assert_eq!(destination, setup.original_address);
@@ -1755,7 +1755,7 @@ mod test {
17551755
id,
17561756
metadata: HttpRequestMetadata::V1 { destination, .. },
17571757
request,
1758-
transport: HttpRequestTransportType::Tcp,
1758+
transport: IncomingTrafficTransportType::Tcp,
17591759
..
17601760
} => {
17611761
assert_eq!(destination, setup.original_address);
@@ -1888,7 +1888,7 @@ mod test {
18881888
connection_id: TestSetup::CONNECTION_ID,
18891889
id,
18901890
metadata: HttpRequestMetadata::V1 { destination, .. },
1891-
transport: HttpRequestTransportType::Tcp,
1891+
transport: IncomingTrafficTransportType::Tcp,
18921892
..
18931893
} => {
18941894
assert_eq!(destination, setup.original_address);
@@ -2136,7 +2136,7 @@ mod test {
21362136
connection_id: 0,
21372137
id: 0,
21382138
transport:
2139-
HttpRequestTransportType::Tls {
2139+
IncomingTrafficTransportType::Tls {
21402140
alpn_protocol,
21412141
server_name,
21422142
},
@@ -2221,7 +2221,7 @@ mod test {
22212221
connection_id: TestSetup::CONNECTION_ID,
22222222
id,
22232223
metadata: HttpRequestMetadata::V1 { destination, .. },
2224-
transport: HttpRequestTransportType::Tcp,
2224+
transport: IncomingTrafficTransportType::Tcp,
22252225
..
22262226
} => {
22272227
assert_eq!(received_client_id, 0);

mirrord/cli/src/port_forward.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1039,7 +1039,7 @@ mod test {
10391039
},
10401040
tcp::{
10411041
DaemonTcp, Filter, HttpRequest, HttpResponse, InternalHttpBody, InternalHttpBodyFrame,
1042-
InternalHttpRequest, InternalHttpResponse, LayerTcp, LayerTcpSteal, NewTcpConnection,
1042+
InternalHttpRequest, InternalHttpResponse, LayerTcp, LayerTcpSteal, NewTcpConnectionV1,
10431043
StealType, TcpClose, TcpData,
10441044
},
10451045
ClientMessage, DaemonMessage,
@@ -1354,8 +1354,8 @@ mod test {
13541354

13551355
// send new connection from agent and some data
13561356
test_connection
1357-
.send(DaemonMessage::Tcp(DaemonTcp::NewConnection(
1358-
NewTcpConnection {
1357+
.send(DaemonMessage::Tcp(DaemonTcp::NewConnectionV1(
1358+
NewTcpConnectionV1 {
13591359
connection_id: 1,
13601360
remote_address,
13611361
destination_port,
@@ -1429,8 +1429,8 @@ mod test {
14291429

14301430
// send new connection from agent and some data
14311431
test_connection
1432-
.send(DaemonMessage::TcpSteal(DaemonTcp::NewConnection(
1433-
NewTcpConnection {
1432+
.send(DaemonMessage::TcpSteal(DaemonTcp::NewConnectionV1(
1433+
NewTcpConnectionV1 {
14341434
connection_id: 1,
14351435
remote_address,
14361436
destination_port,
@@ -1526,8 +1526,8 @@ mod test {
15261526

15271527
// send new connections from agent and some data
15281528
test_connection
1529-
.send(DaemonMessage::Tcp(DaemonTcp::NewConnection(
1530-
NewTcpConnection {
1529+
.send(DaemonMessage::Tcp(DaemonTcp::NewConnectionV1(
1530+
NewTcpConnectionV1 {
15311531
connection_id: 1,
15321532
remote_address,
15331533
destination_port: destination_port_1,
@@ -1539,8 +1539,8 @@ mod test {
15391539
let mut stream_1 = listener_1.accept().await.unwrap().0;
15401540

15411541
test_connection
1542-
.send(DaemonMessage::Tcp(DaemonTcp::NewConnection(
1543-
NewTcpConnection {
1542+
.send(DaemonMessage::Tcp(DaemonTcp::NewConnectionV1(
1543+
NewTcpConnectionV1 {
15441544
connection_id: 2,
15451545
remote_address,
15461546
destination_port: destination_port_2,

0 commit comments

Comments
 (0)