1digraph p2p_arch {
2	ranksep=.75;
3	size = "7.5,7.5";
4
5	edge [dir=none];
6
7	subgraph cluster_wpa_gui {
8		label = "wpa_gui";
9
10		status -> Qt;
11		scan -> Qt;
12		network -> Qt;
13		Qt -> peers;
14		Qt -> WPS;
15		Qt -> gui_ctrl;
16
17		gui_ctrl [label="ctrl i/f"];
18	}
19
20	subgraph cluster_wpa_supplicant {
21		label = "wpa_supplicant"
22
23		ctrl_iface [label="ctrl i/f"];
24		authenticator [label="Authenticator"];
25		supplicant [label="Supplicant"];
26		driver_iface [label="driver i/f"];
27		p2p_module [label="P2P\nmodule"];
28		wps_registrar [label="WPS\nRegistrar"];
29		wps_enrollee [label="WPS\nEnrollee"];
30		mgmt_entity [label="Management\nentity"];
31
32		ctrl_iface -> mgmt_entity;
33		p2p_module -> mgmt_entity;
34		wps_registrar -> mgmt_entity;
35		wps_enrollee -> mgmt_entity;
36		mgmt_entity -> authenticator;
37		mgmt_entity -> supplicant;
38		mgmt_entity -> driver_iface;
39
40		{ rank = same; mgmt_entity; p2p_module; }
41	}
42
43	subgraph cluster_wpa_cli {
44		label = "wpa_cli -a"
45
46		wpa_cli_action;
47	}
48
49	subgraph cluster_dnsmasq {
50		label = "dnsmasq"
51
52		dnsmasq;
53	}
54
55	subgraph cluster_dhclient {
56		label = "dhclient"
57
58		dhclient;
59	}
60
61	subgraph cluster_kernel {
62		label = "Linux kernel"
63
64		cfg80211 -> mac80211;
65		netdev -> mac80211;
66		mac80211 -> ath9k;
67	}
68
69	gui_ctrl -> ctrl_iface;
70	wpa_cli_action -> ctrl_iface;
71
72	driver_iface -> cfg80211;
73
74	wpa_cli_action -> dnsmasq;
75	wpa_cli_action -> dhclient;
76
77	dnsmasq -> netdev;
78	dhclient -> netdev;
79
80	edge [color=blue,dir=both];
81	p2p_module -> mgmt_entity -> driver_iface -> cfg80211 -> mac80211 -> ath9k;
82
83	edge [color=green,dir=both];
84	peers -> Qt -> gui_ctrl -> ctrl_iface -> mgmt_entity -> p2p_module;
85}
86