def send_add_lvap(self, lvap, block, set_mask): """Send a ADD_LVAP message. Args: lvap: an LVAP object Returns: None Raises: TypeError: if lvap is not an LVAP object. """ flags = Container(authenticated=lvap.authentication_state, associated=lvap.association_state, set_mask=set_mask) encap = EtherAddress("00:00:00:00:00:00") if lvap.encap: encap = lvap.encap add_lvap = Container(version=PT_VERSION, type=PT_ADD_LVAP, length=51, seq=self.wtp.seq, module_id=lvap.module_id, flags=flags, assoc_id=lvap.assoc_id, hwaddr=block.hwaddr.to_raw(), channel=block.channel, band=block.band, supported_band=lvap.supported_band, sta=lvap.addr.to_raw(), encap=encap.to_raw(), net_bssid=lvap.net_bssid.to_raw(), lvap_bssid=lvap.lvap_bssid.to_raw(), ssids=[]) if lvap.ssid: b_ssid = lvap.ssid.to_raw() tmp = Container(length=len(b_ssid), ssid=b_ssid) add_lvap.ssids.append(tmp) add_lvap.length = add_lvap.length + len(b_ssid) + 1 else: add_lvap.ssids.append(Container(length=0, ssid=b'')) add_lvap.length = add_lvap.length + 1 for ssid in lvap.ssids: b_ssid = ssid.to_raw() tmp = Container(length=len(b_ssid), ssid=b_ssid) add_lvap.ssids.append(tmp) add_lvap.length = add_lvap.length + len(b_ssid) + 1 LOG.info("Add lvap %s", lvap) print(add_lvap) msg = ADD_LVAP.build(add_lvap) self.stream.write(msg)
def send_add_lvap(self, lvap, block, set_mask): """Send a ADD_LVAP message.""" flags = Container(authenticated=lvap.authentication_state, associated=lvap.association_state, set_mask=set_mask) encap = EtherAddress("00:00:00:00:00:00") if lvap.encap: encap = lvap.encap bssid = EtherAddress() if lvap.bssid: bssid = lvap.bssid ssid = SSID() if lvap.ssid: ssid = lvap.ssid msg = Container(length=78, flags=flags, assoc_id=lvap.assoc_id, module_id=get_xid(), hwaddr=block.hwaddr.to_raw(), channel=block.channel, band=block.band, supported_band=lvap.supported_band, sta=lvap.addr.to_raw(), encap=encap.to_raw(), bssid=bssid.to_raw(), ssid=ssid.to_raw(), networks=[]) for network in lvap.networks: msg.length = msg.length + 6 + WIFI_NWID_MAXSIZE + 1 msg.networks.append( Container(bssid=network[0].to_raw(), ssid=network[1].to_raw())) xid = self.send_message(PT_ADD_LVAP, msg) lvap.pending.append(xid)
def send_add_lvap(self, lvap, block, set_mask): """Send a ADD_LVAP message. Args: lvap: an LVAP object Returns: None Raises: TypeError: if lvap is not an LVAP object. """ flags = Container(authenticated=lvap.authentication_state, associated=lvap.association_state, set_mask=set_mask) encap = EtherAddress("00:00:00:00:00:00") if lvap.encap: encap = lvap.encap add_lvap = Container(version=PT_VERSION, type=PT_ADD_LVAP, length=44, seq=self.wtp.seq, flags=flags, assoc_id=lvap.assoc_id, hwaddr=block.hwaddr.to_raw(), channel=block.channel, band=block.band, sta=lvap.addr.to_raw(), encap=encap.to_raw(), net_bssid=lvap.net_bssid.to_raw(), lvap_bssid=lvap.lvap_bssid.to_raw(), ssids=[]) if lvap.ssid: b_ssid = lvap.ssid.to_raw() tmp = Container(length=len(b_ssid), ssid=b_ssid) add_lvap.ssids.append(tmp) add_lvap.length = add_lvap.length + len(b_ssid) + 1 else: add_lvap.ssids.append(Container(length=0, ssid=b'')) add_lvap.length = add_lvap.length + 1 for ssid in lvap.ssids: b_ssid = ssid.to_raw() tmp = Container(length=len(b_ssid), ssid=b_ssid) add_lvap.ssids.append(tmp) add_lvap.length = add_lvap.length + len(b_ssid) + 1 LOG.info("Add lvap %s", lvap) msg = ADD_LVAP.build(add_lvap) self.stream.write(msg)
def __start_adv(self): """Star ctrl advertising.""" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) info = fcntl.ioctl(sock.fileno(), 0x8927, struct.pack('256s', self.__ifname[:15].encode('utf-8'))) src = EtherAddress(':'.join(['%02x' % char for char in info[18:24]])) dst = EtherAddress("FF:FF:FF:FF:FF:FF") adv = Container(dst=dst.to_raw(), src=src.to_raw(), eth_type=0xEEEE, ctrl=self.__ctrl_ip.packed, port=self.__ctrl_port) self.__msg = CTRL_ADV.build(adv) self.__auto_cfg = \ tornado.ioloop.PeriodicCallback(self.__auto_cfg_loop, 2000) self.__auto_cfg.start()