MetaNet is a software project initiated by ErikWalthinsen as an attempt to make building network services easier. At a high level it is a message-passing infrastructure designed to allow programs to tap into each others' control flow. Services such as sockets and HTTP servers are objects with their own set of mailboxes (in the form /daemon/object/message), some of which are hooked by the object itself, some of which are intended for their users to hook.
A good example of the reason for this architecture is the case of DHCP and LDAP. Start with a DHCP server implemented on MetaNet. It will create a listening socket on the right port, and attach a function to catch incoming packets. Those are converted to a DHCP request message, which normally is hooked by a function that does the normal DHCP lookup in the free-pool. That function sends a message to the DHCP-reply mailbox, which triggers a function to send the right packet.
Say you had an LDAP database that held the mapping from hostname/mac to IP, and you wanted to drive DHCP with this. You'd write a function that would hook the DHCP-request message and instead create an LDAP request. A second function would take the LDAP response and reformat it to the DHCP reply, to be handled again by the DHCP code to convert it to a packet and send it to the machine.
Captive Portal Feature Requests
- A simple blog/guestbook so people can leave comments and the node owner can post messages. Perhaps loading in portions of the splash page into a text box (psuedo wiki style) would be a good way to allow node owners to do updates and customize their page with relevant information.
- Some way for ICQ/Jabber address to be listed on the status page so people can find each other.
A UrlDaemon implementation. It could feed status page information and perhaps have a web front end to allow the owner to update the broadcasts.