summaryrefslogtreecommitdiffhomepage
path: root/src/platform/linux.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/linux.rs')
-rw-r--r--src/platform/linux.rs40
1 files changed, 23 insertions, 17 deletions
diff --git a/src/platform/linux.rs b/src/platform/linux.rs
index d21e218..7e883ec 100644
--- a/src/platform/linux.rs
+++ b/src/platform/linux.rs
@@ -200,27 +200,33 @@ fn open_rxring() -> Result<rxring::RxRing> {
/// cBPF filter for TCP and sport=443 and SYN,ACK packets
///
/// Produced by
- /// tcpdump -dd '(ip and tcp src port 443 and tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack))'
- /// FIXME: add IPv6; seems like tcpdump cannot produce rules for it correctly.
+ /// tcpdump -dd '(ip and tcp src port 443 and tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)) or (ip6 and tcp src port 443 and ip6[53] & 0x12 == 0x12)'
const SYNACK_443_CBPF: &[sock_filter] = &[
- sock_filter { code: 0x28, jt: 0, jf: 0, k: 0x0000000c },
- sock_filter { code: 0x15, jt: 0, jf: 11, k: 0x00000800 },
- sock_filter { code: 0x30, jt: 0, jf: 0, k: 0x00000017 },
- sock_filter { code: 0x15, jt: 0, jf: 9, k: 0x00000006 },
- sock_filter { code: 0x28, jt: 0, jf: 0, k: 0x00000014 },
- sock_filter { code: 0x45, jt: 7, jf: 0, k: 0x00001fff },
- sock_filter { code: 0xb1, jt: 0, jf: 0, k: 0x0000000e },
- sock_filter { code: 0x48, jt: 0, jf: 0, k: 0x0000000e },
- sock_filter { code: 0x15, jt: 0, jf: 4, k: 0x000001bb },
- sock_filter { code: 0x50, jt: 0, jf: 0, k: 0x0000001b },
- sock_filter { code: 0x54, jt: 0, jf: 0, k: 0x00000012 },
- sock_filter { code: 0x15, jt: 0, jf: 1, k: 0x00000012 },
- sock_filter { code: 0x6, jt: 0, jf: 0, k: 0x00040000 },
- sock_filter { code: 0x6, jt: 0, jf: 0, k: 0x00000000 },
+ sock_filter { code: 0x28, jt: 0, jf: 0, k: 0x0000000c },
+ sock_filter { code: 0x15, jt: 0, jf: 10, k: 0x00000800 },
+ sock_filter { code: 0x30, jt: 0, jf: 0, k: 0x00000017 },
+ sock_filter { code: 0x15, jt: 0, jf: 17, k: 0x00000006 },
+ sock_filter { code: 0x28, jt: 0, jf: 0, k: 0x00000014 },
+ sock_filter { code: 0x45, jt: 15, jf: 0, k: 0x00001fff },
+ sock_filter { code: 0xb1, jt: 0, jf: 0, k: 0x0000000e },
+ sock_filter { code: 0x48, jt: 0, jf: 0, k: 0x0000000e },
+ sock_filter { code: 0x15, jt: 0, jf: 12, k: 0x000001bb },
+ sock_filter { code: 0x50, jt: 0, jf: 0, k: 0x0000001b },
+ sock_filter { code: 0x54, jt: 0, jf: 0, k: 0x00000012 },
+ sock_filter { code: 0x15, jt: 8, jf: 9, k: 0x00000012 },
+ sock_filter { code: 0x15, jt: 0, jf: 8, k: 0x000086dd },
+ sock_filter { code: 0x30, jt: 0, jf: 0, k: 0x00000014 },
+ sock_filter { code: 0x15, jt: 0, jf: 6, k: 0x00000006 },
+ sock_filter { code: 0x28, jt: 0, jf: 0, k: 0x00000036 },
+ sock_filter { code: 0x15, jt: 0, jf: 4, k: 0x000001bb },
+ sock_filter { code: 0x30, jt: 0, jf: 0, k: 0x00000043 },
+ sock_filter { code: 0x54, jt: 0, jf: 0, k: 0x00000012 },
+ sock_filter { code: 0x15, jt: 0, jf: 1, k: 0x00000012 },
+ sock_filter { code: 0x6, jt: 0, jf: 0, k: 0x00040000 },
+ sock_filter { code: 0x6, jt: 0, jf: 0, k: 0x00000000 },
];
let rx = rxring::RxRing::new(SYNACK_443_CBPF)?;
-
crate::info!("rxring: initialized");
crate::debug!(
"rxring: tcp src port 443 and tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)"