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
Exemple #2
0
    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
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #6
0
    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)