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.

...more soon...

Captive Portal Feature Requests