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