blob: c53e77822c37755961c06472fb54cc12023f077c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
$NetBSD: patch-test_bpf.uts,v 1.1 2021/08/18 01:44:21 gutteridge Exp $
Fix send() on loopback and utun devices for Darwin and FreeBSD.
https://github.com/secdev/scapy/pull/3257
--- test/bpf.uts.orig 2021-04-18 18:36:15.000000000 +0000
+++ test/bpf.uts
@@ -145,3 +145,23 @@ s.send(IP(dst="8.8.8.8")/ICMP())
s = L3bpfSocket()
s.assigned_interface = conf.loopback_name
s.send(IP(dst="8.8.8.8")/ICMP())
+
+= L3bpfSocket - send and sniff on loopback
+~ needs_root
+
+localhost_ip = conf.ifaces[conf.loopback_name].ips[4][0]
+
+def cb():
+ # Send a ping to the loopback IP.
+ s = L3bpfSocket(iface=conf.loopback_name)
+ s.send(IP(dst=localhost_ip)/ICMP(seq=1001))
+
+t = AsyncSniffer(iface=conf.loopback_name, started_callback=cb)
+t.start()
+time.sleep(1)
+t.stop()
+t.join(timeout=1)
+
+# We expect to see our packet and kernel's response.
+len(t.results.filter(lambda p: (
+ IP in p and ICMP in p and (p[IP].src == localhost_ip or p[IP].dst == localhost_ip) and p[ICMP].seq == 1001))) == 2
|