1252190Srpaulo#!/usr/bin/python
2252190Srpaulo
3252190Srpauloimport dbus
4252190Srpauloimport sys
5252190Srpauloimport time
6252190Srpauloimport gobject
7252190Srpaulofrom dbus.mainloop.glib import DBusGMainLoop
8252190Srpaulo
9252190SrpauloWPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
10252190SrpauloWPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
11252190SrpauloWPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
12252190SrpauloWPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
13252190Srpaulo
14252190Srpaulodef usage():
15252190Srpaulo	print "Usage: %s <ifname>" % sys.argv[0]
16252190Srpaulo	print "Press Ctrl-C to stop"
17252190Srpaulo
18252190Srpaulodef ProbeRequest(args):
19252190Srpaulo	if 'addr' in args:
20252190Srpaulo		print '%.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['addr']),
21252190Srpaulo	if 'dst' in args:
22252190Srpaulo		print '-> %.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['dst']),
23252190Srpaulo	if 'bssid' in args:
24252190Srpaulo		print '(bssid %.2x:%.2x:%.2x:%.2x:%.2x:%.2x)' % tuple(args['dst']),
25252190Srpaulo	if 'signal' in args:
26252190Srpaulo		print 'signal:%d' % args['signal'],
27252190Srpaulo	if 'ies' in args:
28252190Srpaulo		print 'have IEs (%d bytes)' % len(args['ies']),
29252190Srpaulo        print ''
30252190Srpaulo
31252190Srpauloif __name__ == "__main__":
32252190Srpaulo	global bus
33252190Srpaulo	global wpas_obj
34252190Srpaulo	global if_obj
35252190Srpaulo	global p2p_iface
36252190Srpaulo
37252190Srpaulo	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
38252190Srpaulo
39252190Srpaulo	bus = dbus.SystemBus()
40252190Srpaulo	wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
41252190Srpaulo
42252190Srpaulo	# Print list of i/f if no one is specified
43252190Srpaulo	if (len(sys.argv) < 2)  :
44252190Srpaulo		usage()
45252190Srpaulo		sys.exit(0)
46252190Srpaulo
47252190Srpaulo	wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
48252190Srpaulo
49252190Srpaulo	ifname = sys.argv[1]
50252190Srpaulo
51252190Srpaulo	path = wpas.GetInterface(ifname)
52252190Srpaulo
53252190Srpaulo	if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
54252190Srpaulo	iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
55252190Srpaulo
56252190Srpaulo	bus.add_signal_receiver(ProbeRequest,
57252190Srpaulo				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
58252190Srpaulo				signal_name="ProbeRequest")
59252190Srpaulo
60252190Srpaulo	iface.SubscribeProbeReq()
61252190Srpaulo
62252190Srpaulo	gobject.MainLoop().run()
63