Commit Graph

91 Commits

Author SHA1 Message Date
Andrew Zaborowski 48b90febf1 hwsim: Don't handle netlink events in command mode
Don't handle the hwsim netlink events we use to track radios and
interfaces if we're not in daemon mode.  This quiets dbus errors when
using hwsim through the command line.
2017-03-14 10:24:51 -05:00
Andrew Zaborowski 10d96e5c19 hwsim: Add terminating 0 byte to attribute
Similar to 21a9b064d3 also include the NUL
byte in the name attribute when creating a radio through DBus call.
2017-03-14 10:24:08 -05:00
Andrew Zaborowski ea9edc1f99 hwsim: Fix netlink attribute size calculation
The name attribute in the NEW RADIO command needs at least 4 bytes for
the attribute header (struct nlattr), all the characters of the name
string and a NUL byte, and up to 3 bytes of alignment padding.
Otherwise, depending on the name length and whether the NO_VIF attribute
was the last, that attribute could end up being dropped and we were
ending up with too many interfaces inside test-runner.
2017-03-14 10:23:28 -05:00
Denis Kenzior b2642d42bf hwsim: Clean up some trivial style issues
The code had too many empty lines in places where it would be logical to
just group the statements together.
2017-03-10 10:22:44 -06:00
Andrew Zaborowski cde6401485 hwsim: Add Rule and RuleManager dbus interfaces 2017-03-10 10:13:23 -06:00
Andrew Zaborowski 3b9785dffe hwsim: Add user-defined rules for frames passed by medium
Define rule structure, add the list of current rules and code to match
frames against rules and apply RSSI changes.
2017-03-10 10:11:09 -06:00
Andrew Zaborowski 7460b6e1a7 hwsim: Add wmedium implementation
Implement a hwsim wireless medium inside hwsim.c.  This doesn't do
anything to the frames it moves around yet, only tries to implement
the same logic that the kernel medium contains.
2017-03-10 10:09:05 -06:00
Andrew Zaborowski 6280a6c72d hwsim: Use an array of addresses for radio_info_rec.addrs
Make accessing the addrs field easier by converting it from a flat
buffer concatenation of the 2 addresses to an array of 2 arrays of
6 bytes.
2017-03-10 10:03:01 -06:00
Andrew Zaborowski c537953f11 hwsim: Fix property name typo in notification 2017-03-10 10:02:29 -06:00
Andrew Zaborowski 257aa441a1 hwsim: DBus methods for creating and destroying radios 2017-03-10 10:01:04 -06:00
Andrew Zaborowski 315269fd23 hwsim: Basic DBus interface to radio information
In daemon mode start a basic passive DBus interface to expose the
information on radios attached to mac80211_hwsim.  In this version
interfaces have objects of their own.  It might be simpler to only
show them as an array property on the radio object (array of pairs of
string, one string for address, one for name).
2017-03-09 11:21:21 -06:00
Andrew Zaborowski 43a882e934 hwsim: Replace isspace usage with l_ascii_isspace 2017-03-08 09:43:13 -06:00
Andrew Zaborowski d03eeb398c hwsim: Refactor radio, wiphy and interface tracking
Read wiphy addresses from sysfs and perform the wiphy name to wiphy idx
mapping using sysfs.  Do this directly on a new radio notification and
stop using new wiphy notifications except for updating the radio names.
Having the wiphy index available synchronously when parsing a new radio
event we store the wiphy index in the radio_info_rec struct directly and
drop struct wiphy_info_rec as there was a 1:1 mapping.  With this, and
knowing that all radio_info data is available when new interface
notifications are received, the tracking is simplified because dbus
objects can be created and destroyed within the notification handlers.
We also now store both the wiphy hardware address data and separately
the interface MAC addresses and can use them more appropriately in the
medium implementation.
2017-03-03 11:56:50 -06:00
Andrew Zaborowski 21a9b064d3 hwsim: Include terminating 0 byte in radio name attribute
The kernel expects the radio name attribute to include the string's zero
byte.  Things may still work without this if there is padding after the
attribute.

This has been now patched and the zero byte will be optional when that
patch makes its way through different trees.
2017-03-03 11:50:11 -06:00
Andrew Zaborowski 335ee0c31e hwsim: Add daemon mode with radio information tracking
Add a daemon mode that is entered when no action was specified on the
command line.  In this mode hwsim tracks information on radios through
the netlink events.  The interface to make use of the information is
added in the next patch.
2017-02-23 11:21:18 -06:00
Andrew Zaborowski dfee120333 hwsim: Fix radio_name_attr length calculation 2017-02-23 11:06:45 -06:00
Andrew Zaborowski 070f93fdf8 hwsim: Fix l_genl_family_register return value check 2017-02-23 11:05:16 -06:00
Tim Kourt 34ffadb087 hwsim: Make attribute names consistent 2016-07-13 10:23:31 -05:00
Tim Kourt c6fb438c73 hwsim: Report exit status to the parent 2016-07-13 10:06:52 -05:00
Tim Kourt 0b8d641d2e hwsim: Refactor create/list/destroy action logic 2016-07-07 15:20:59 -05:00
Tim Kourt a7916ebdf2 hwsim: Fix string length bug 2016-07-07 13:44:23 -05:00
Denis Kenzior 8b20019ded hwsim: Add option to enable p2p support 2016-07-07 12:26:16 -05:00
Denis Kenzior 87296b4aab hwsim: Update to new l_main api 2016-06-09 09:56:37 -05:00
Tim Kourt 63a4972672 hwsim: Remove bogus info msg 2016-05-18 14:01:52 -05:00
Tim Kourt 9536c27d35 hwsim: Add params: --name, --nointerface 2016-05-17 17:58:13 -05:00
Tim Kourt 5d29871d89 hwsim: Fixed the errors reported by checkpatch.pl 2016-04-20 21:24:48 -05:00
Andrzej Zaborowski 92841b4976 hwsim: Don't try l_genl_attr_next if _attr_init fails.
This was causing a segfault.
2015-04-17 10:50:56 -05:00
Andrzej Zaborowski 0a6b6d0ca5 hwsim: Fix #define 2015-04-17 10:50:39 -05:00
Denis Kenzior 5594de8d27 hwsim: Use new l_genl send() APIs 2015-02-27 11:00:58 -06:00
Denis Kenzior ff30bb86dd hwsim: Fixup minor style issues 2014-11-14 22:17:30 -06:00
Denis Kenzior 55ddc6f49e hwsim: Call list_callback_done in all cases 2014-11-14 22:14:31 -06:00
Patrik Flykt f1a5dcf6f3 hwsim: Add support for HWSIM_CMD_GET_RADIO
Add a new option to the hwsim binary to fetch all or a given hwsim radio.
Print out radio information which is currently returned in the reply to
user space.

Add new hwsim attributes to the enum and tweak getopt to behave properly
with or without giving the radio id on the command line.
2014-11-14 22:06:06 -06:00
Patrik Flykt c2a140382a hwsim: Exit hwsim if MAC80211_HWSIM vanishes
If the MAC80211_HWSIM netlink family disappears, exit hwsim. This can
happen already at startup, for example if MAC80211_HWSIM functionality is
not compiled in the kernel or respective module loaded.
2014-11-14 21:52:57 -06:00
Denis Kenzior 47f91a47e6 hwsim: Fix up whitespace issues 2014-11-01 21:29:40 -05:00
Jukka Rissanen fb4075da5e hwsim: Receive multicast netlink event for NEW/DEL radio commands
Kernel sends HWSIM_CMD_NEW_RADIO and HWSIM_CMD_DEL_RADIO multicast
events when new radio have been created and when existing one has
been deleted. The events are sent to "config" netlink multicast group.

The hwsim catches these events and uses the information to monitor
what simulated radios are created and deleted in the system.
2014-11-01 21:29:40 -05:00
Denis Kenzior f125a78df8 hwsim: Minor style fix 2014-10-13 12:56:27 -05:00
Jukka Rissanen 1a07cf4ab1 hwsim: Add attribute to destroy radio when program stops
The new attribute causes the radio to be removed if the hwsim process
dies. This is the default behaviour. If user calls the binary with -k
option, then the radio is kept after hwsim quits.
This requires kernel support for HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE
attribute.
2014-10-13 12:53:09 -05:00
Denis Kenzior c3e9ac662a hwsim: Cleanup some style issues 2014-10-07 21:36:10 -05:00
Denis Kenzior 210187fb45 hwsim: Make compile 2014-10-07 21:35:58 -05:00
Jukka Rissanen a052cb5d3c hwsim: Radio id was not parsed properly
When a new radio is created, the kernel returns the new radio id
in the error code. If the error < 0, then that means a real error
and other values are used as a radio id.

When a radio is destroyed, the error code 0 means a success and
other values indicate an error.
2014-10-07 21:31:36 -05:00
Marcel Holtmann 2d75ab55e7 tools: Add simple utility for interacting with mac80221_hwsim 2014-08-08 15:40:43 -07:00