Giter Club home page Giter Club logo

Comments (3)

majbthrd avatar majbthrd commented on August 22, 2024

I also looked for the same thing in the patches and similarly could not find anything.

I came to the unsatisfactory conclusion that the host MIPS RouterOS just transfers execution to the MetaROUTER ISR whenever it feels like it wants to, and this was 'good enough' for MetaROUTER Linux to function.

The MIPS "Count" register value does work and could be used as a method of evaluating whether a user timer has elapsed since the last time the MetaROUTER instance executed.

I used the "Count" register to gauge how often execution was transferred to the MetaROUTER instance. I can't remember the numbers (they varied), but it was in the 10s to 100s of times per second.

IMPORTANT: this github project was specifically published to demonstrate how MetaROUTER instances cause RouterOS to crash:

demo MetaROUTER image to crash RouterOS (with source code)
https://forum.mikrotik.com/viewtopic.php?f=15&t=113265

I really would like for there to be MetaROUTER "apps". I see lots of potential for this to provide custom functionality not in RouterOS proper. However, Mikrotik seems to have abandoned MetaROUTER from the moment it was released, and certainly shows no interest in this non-standard usage. The semi-official Linux openwrt MetaROUTER images already crashes, and this MetaDIE example definitely does crash the host RouterOS.

from metarouter-apps.

divereigh avatar divereigh commented on August 22, 2024

from metarouter-apps.

majbthrd avatar majbthrd commented on August 22, 2024

Yes, the macro "read_c0_count" in metarouter.h is intended as a convenient way to read that register.

I did not see a MetaROUTER patch related to timers, so I have to presume that the openwrt Linux kernel does timers in its "normal" way, whatever "normal" is. Linux kernel (MIPS or otherwise) knowledge is outside my wheelhouse. However, yes, it is my suspicion that MIPS Linux uses the Count (CP0 Register 9, Select 0) and Compare (CP0 Register 11, Select 0) registers, since this is the only timer functionality that I am aware of in the MIPS processor.

My pessimism is borne from this: just servicing MetaROUTER packets (never mind implementing timers to generate more packets) can be enough to crash the host RouterOS. I've found this to be true in 2013, and still true in 2016. This makes it impossible to implement a MetaROUTER "app" that has appealing functionality, and that in turn prevents further interest.

Discussion on Mikrotik's forum seems to just confirm the notion that Mikrotik's MetaROUTER (openwrt Linux) is nothing but a toy that should not be considered useable. I've tried a few openwrt-based implementations in long-term usage, and have only got my fingers burned. MetaROUTER instances spontaneously become unresponsive after 12-48 hours of usage and have to be manually rebooted.

Yeah, there are plenty of Mikrotik RouterOS bugs like that. "/port remote-access", for example, can't detect if a connection has been dropped, and it will refuse subsequent connections (even though the connection no longer exists).

from metarouter-apps.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.