1digraph p2p_arch2 { 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 wps_registrar [label="WPS\nRegistrar"]; 28 wps_enrollee [label="WPS\nEnrollee"]; 29 mgmt_entity [label="Management\nentity"]; 30 31 ctrl_iface -> mgmt_entity; 32 wps_registrar -> mgmt_entity; 33 wps_enrollee -> mgmt_entity; 34 mgmt_entity -> authenticator; 35 mgmt_entity -> supplicant; 36 mgmt_entity -> driver_iface; 37 } 38 39 subgraph cluster_wpa_cli { 40 label = "wpa_cli -a" 41 42 wpa_cli_action; 43 } 44 45 subgraph cluster_dnsmasq { 46 label = "dnsmasq" 47 48 dnsmasq; 49 } 50 51 subgraph cluster_dhclient { 52 label = "dhclient" 53 54 dhclient; 55 } 56 57 subgraph cluster_kernel { 58 label = "Kernel" 59 60 ioctl -> umac; 61 netdev -> umac; 62 umac -> p2p_module; 63 p2p_module [label="P2P\nmodule"]; 64 umac -> driver; 65 66 { rank = same; umac; p2p_module; } 67 } 68 69 gui_ctrl -> ctrl_iface; 70 wpa_cli_action -> ctrl_iface; 71 72 driver_iface -> ioctl; 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 -> umac -> driver; 82 83 edge [color=green,dir=both]; 84 peers -> Qt -> gui_ctrl -> ctrl_iface -> mgmt_entity -> driver_iface -> ioctl -> umac -> p2p_module; 85} 86