xref: /openbsd-src/regress/sys/netinet/arp/arp_gratuitous.py (revision ac29c8e0bbd85ab37116eea98eaaa09e07bf6b26)
1*ac29c8e0Sbluhm#!/usr/local/bin/python3
2a13597faSbluhm# send Gratuitous Address Resolution Protocol Reply
3a13597faSbluhm# expect no answer
4a13597faSbluhm# RFC 2002  IP Mobility Support
5a13597faSbluhm# 4.6. ARP, Proxy ARP, and Gratuitous ARP
6a13597faSbluhm
7a13597faSbluhmimport os
8a13597faSbluhmfrom addr import *
9a13597faSbluhmfrom scapy.all import *
10a13597faSbluhm
11a13597faSbluhmarp=ARP(op='is-at', hwsrc=LOCAL_MAC, psrc=REMOTE_ADDR,
12a13597faSbluhm    hwdst=LOCAL_MAC, pdst=REMOTE_ADDR)
13a13597faSbluhmeth=Ether(src=LOCAL_MAC, dst="ff:ff:ff:ff:ff:ff")/arp
14a13597faSbluhm
15a13597faSbluhme=srp1(eth, iface=LOCAL_IF, timeout=2)
16a13597faSbluhm
17a13597faSbluhmif e and e.type == ETH_P_ARP:
18a13597faSbluhm	a=e.payload
19a13597faSbluhm	a.show()
20*ac29c8e0Sbluhm	print("ARP REPLY")
21a13597faSbluhm	exit(1)
22a13597faSbluhm
23*ac29c8e0Sbluhmprint("no arp reply")
24a13597faSbluhmexit(0)
25