def send_ue_ho_request(self, ue, cell): """Send a UE_HO_REQUEST message. Args: None Returns: None Raises: None """ ue_ho_request = Container(type=E_TYPE_SINGLE, cellid=ue.cell.pci, modid=get_xid(), length=UE_HO_REQUEST.sizeof(), action=EP_ACT_HANDOVER, dir=EP_DIR_REQUEST, op=EP_OPERATION_UNSPECIFIED, rnti=ue.rnti, target_enb=cell.vbs.enb_id, target_pci=cell.pci, cause=1) modid = self.send_message(ue_ho_request, UE_HO_REQUEST) self.server.pending[ue_ho_request.modid] = ue
def send_message(self, msg, msg_type, action, parser, cellid=0, opcode=EP_OPERATION_UNSPECIFIED, xid=get_xid()): """Send message and set common parameters.""" msg.type = msg_type msg.version = PT_VERSION msg.enbid = b'\x00\x00' + self.vbs.addr.to_raw() msg.cellid = cellid msg.xid = xid msg.flags = Container(dir=1) msg.seq = self.vbs.seq msg.action = action msg.opcode = opcode self.log.info("Sending %s to %s", parser.name, self.vbs) self.stream.write(parser.build(msg)) return msg.xid
def send_register_message_to_self(self): """Send register message to self.""" msg = {'version': PT_VERSION, 'type': PT_REGISTER, 'seq': self.cpp.seq, 'cpp': self.cpp.addr, 'xid': get_xid()} self.handle_message(msg)
def send_bye_message_to_self(self): """Send bye message to self.""" msg = {'version': PT_VERSION, 'type': PT_BYE, 'seq': self.cpp.seq, 'cpp': self.cpp.addr, 'xid': get_xid()} self.handle_message(msg)
def send_del_lvap(self, sta, csa_switch_channel=0): """Send a DEL_LVAP message.""" msg = Container(length=DEL_LVAP.sizeof(), module_id=get_xid(), sta=sta.to_raw(), csa_switch_mode=0, csa_switch_count=3, csa_switch_channel=csa_switch_channel) return self.send_message(PT_DEL_LVAP, msg)
def send_message(self, message_type, message): """Add fixed header fields and send message. """ message['version'] = PT_VERSION message['type'] = message_type message['seq'] = self.cpp.seq message['xid'] = get_xid() LOG.info("Sending %s seq %u xid %u", message['type'], message['seq'], message['xid']) self.write_message(json.dumps(message, cls=EmpowerEncoder)) return message['xid']
def send_ue_reports_request(self): """Send a UE Reports message. Args: None Returns: None Raises: TypeError: if vap is not an VAP object """ ue_report = Container(type=E_TYPE_TRIG, cellid=0, modid=get_xid(), length=UE_REPORT_REQUEST.sizeof(), action=EP_ACT_UE_REPORT, dir=EP_DIR_REQUEST, op=EP_OPERATION_ADD, dummy=0) self.send_message(ue_report, UE_REPORT_REQUEST)
def send_caps_request(self): """Send a CAPS_REQUEST message. Args: vbs: an VBS object Returns: None Raises: TypeError: if vap is not an VAP object """ caps_request = Container(type=E_TYPE_SINGLE, cellid=0, modid=get_xid(), length=CAPS_REQUEST.sizeof(), action=EP_ACT_ECAP, dir=EP_DIR_REQUEST, op=EP_OPERATION_UNSPECIFIED, dummy=0) self.send_message(caps_request, CAPS_REQUEST)
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)