From 9133037195b4eb6ca586ff9fd3810ae3a780b931 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 8 Sep 2020 08:25:27 +0300 Subject: all: integrate with mac80211_hwsim Two virtual wireless devices are instantiated during network devices initialization. A new flag (-wifi) is added that controls whether these virtual wifi devices are instantiated and configured during proc initialization. Also, two new pseudo syscalls are added: 1. syz_80211_inject_frame(mac_addr, packet, packet_len) -- injects an arbitrary packet into the wireless stack. It is injected as if it originated from the device identitied by mac_addr. 2. syz_80211_join_ibss(interface_name, ssid, ssid_len, mode) -- puts a specific network interface into IBSS state and joins an IBSS network. Arguments of syz_80211_join_ibss: 1) interface_name -- null-terminated string that identifies a wireless interface 2) ssid, ssid_len -- SSID of an IBSS network to join to 3) mode -- mode of syz_80211_join_ibss operation (see below) Modes of operation: JOIN_IBSS_NO_SCAN (0x0) -- channel scan is not performed and syz_80211_join_ibss waits until the interface reaches IF_OPER_UP. JOIN_IBSS_BG_SCAN (0x1) -- channel scan is performed (takes ~ 9 seconds), syz_80211_join_ibss does not await IF_OPER_UP. JOIN_IBSS_BG_NO_SCAN (0x2) -- channel scan is not performed, syz_80211_join_ibss does not await IF_OPER_UP. Local testing ensured that these syscalls are indeed able to set up an operating network and inject packets into mac80211. --- pkg/host/features_linux.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'pkg/host/features_linux.go') diff --git a/pkg/host/features_linux.go b/pkg/host/features_linux.go index 230022c38..5a91fc8ea 100644 --- a/pkg/host/features_linux.go +++ b/pkg/host/features_linux.go @@ -29,6 +29,7 @@ func init() { checkFeature[FeatureDevlinkPCI] = checkDevlinkPCI checkFeature[FeatureUSBEmulation] = checkUSBEmulation checkFeature[FeatureVhciInjection] = checkVhciInjection + checkFeature[FeatureWifiEmulation] = checkWifiEmulation } func checkCoverage() string { @@ -219,3 +220,10 @@ func checkDevlinkPCI() string { } return "" } + +func checkWifiEmulation() string { + if err := osutil.IsAccessible("/sys/class/mac80211_hwsim/"); err != nil { + return err.Error() + } + return "" +} -- cgit mrf-deployment