1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #
- # HWSIM generic netlink controller code
- # Copyright (c) 2014 Intel Corporation
- #
- # Author: Johannes Berg <johannes.berg@intel.com>
- #
- # This software may be distributed under the terms of the BSD license.
- # See README for more details.
- import netlink
- # constants
- HWSIM_CMD_CREATE_RADIO = 4
- HWSIM_CMD_DESTROY_RADIO = 5
- HWSIM_ATTR_CHANNELS = 9
- HWSIM_ATTR_RADIO_ID = 10
- # the controller class
- class HWSimController(object):
- def __init__(self):
- self._conn = netlink.Connection(netlink.NETLINK_GENERIC)
- self._fid = netlink.genl_controller.get_family_id('MAC80211_HWSIM')
- def create_radio(self, n_channels=None):
- attrs = []
- if n_channels:
- attrs.append(netlink.U32Attr(HWSIM_ATTR_CHANNELS, n_channels))
- msg = netlink.GenlMessage(self._fid, HWSIM_CMD_CREATE_RADIO,
- flags = netlink.NLM_F_REQUEST |
- netlink.NLM_F_ACK,
- attrs = attrs)
- return msg.send_and_recv(self._conn).ret
- def destroy_radio(self, radio_id):
- attrs = [netlink.U32Attr(HWSIM_ATTR_RADIO_ID, radio_id)]
- msg = netlink.GenlMessage(self._fid, HWSIM_CMD_DESTROY_RADIO,
- flags = netlink.NLM_F_REQUEST |
- netlink.NLM_F_ACK,
- attrs = attrs)
- msg.send_and_recv(self._conn)
- if __name__ == '__main__':
- import sys
- c = HWSimController()
- if sys.argv[1] == 'create':
- if len(sys.argv) > 2:
- n_channels = int(sys.argv[2])
- else:
- n_channels = 0
- print 'Created radio %d' % c.create_radio(n_channels=n_channels)
- elif sys.argv[1] == 'destroy':
- print c.destroy_radio(int(sys.argv[2]))
|