Skip to content

Commit 77b899f

Browse files
committed
fix: panic at flow_log::FlowKey
1 parent 68ae3c5 commit 77b899f

3 files changed

Lines changed: 32 additions & 3 deletions

File tree

agent/src/common/flow.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,18 @@ impl From<FlowKey> for flow_log::FlowKey {
174174
(IpAddr::V6(ip6), IpAddr::V6(ip6_1)) => {
175175
(Ipv4Addr::UNSPECIFIED, Ipv4Addr::UNSPECIFIED, ip6, ip6_1)
176176
}
177-
_ => panic!("FlowKey({:?}) ip_src,ip_dst type mismatch", &f),
177+
(IpAddr::V4(ip4), IpAddr::V6(ip6_1)) => (
178+
Ipv4Addr::UNSPECIFIED,
179+
Ipv4Addr::UNSPECIFIED,
180+
ip4.to_ipv6_mapped(),
181+
ip6_1,
182+
),
183+
(IpAddr::V6(ip6), IpAddr::V4(ip4_1)) => (
184+
Ipv4Addr::UNSPECIFIED,
185+
Ipv4Addr::UNSPECIFIED,
186+
ip6,
187+
ip4_1.to_ipv6_mapped(),
188+
),
178189
};
179190
flow_log::FlowKey {
180191
vtap_id: f.agent_id as u32,

agent/src/flow_generator/protocol_logs.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,18 @@ impl From<AppProtoLogsBaseInfo> for flow_log::AppProtoLogsBaseInfo {
313313
(IpAddr::V6(ip6), IpAddr::V6(ip6_1)) => {
314314
(Ipv4Addr::UNSPECIFIED, Ipv4Addr::UNSPECIFIED, ip6, ip6_1)
315315
}
316-
_ => panic!("{:?} ip_src,ip_dst type mismatch", &f),
316+
(IpAddr::V4(ip4), IpAddr::V6(ip6_1)) => (
317+
Ipv4Addr::UNSPECIFIED,
318+
Ipv4Addr::UNSPECIFIED,
319+
ip4.to_ipv6_mapped(),
320+
ip6_1,
321+
),
322+
(IpAddr::V6(ip6), IpAddr::V4(ip4_1)) => (
323+
Ipv4Addr::UNSPECIFIED,
324+
Ipv4Addr::UNSPECIFIED,
325+
ip6,
326+
ip4_1.to_ipv6_mapped(),
327+
),
317328
};
318329
flow_log::AppProtoLogsBaseInfo {
319330
start_time: f.start_time.as_nanos() as u64,

agent/src/metric/document.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,14 @@ impl From<Tagger> for metric::MiniTag {
441441
(IpAddr::V6(ip6), IpAddr::V6(ip61)) => {
442442
(ip6.octets().to_vec(), ip61.octets().to_vec())
443443
}
444-
_ => panic!("{:?} ip, ip1 type mismatch", &t),
444+
(IpAddr::V4(ip4), IpAddr::V6(ip61)) => (
445+
ip4.to_ipv6_mapped().octets().to_vec(),
446+
ip61.octets().to_vec(),
447+
),
448+
(IpAddr::V6(ip6), IpAddr::V4(ip41)) => (
449+
ip6.octets().to_vec(),
450+
ip41.to_ipv6_mapped().octets().to_vec(),
451+
),
445452
}
446453
} else {
447454
match t.ip {

0 commit comments

Comments
 (0)