I want to use the io-net framework to implement MAC Level bridging of
multiple physical interfaces. We have put a filter layer above the drivers
(which are all in promiscuous mode) to successfully take packets in on one
interface and re-broadcast them on one (or more for broadcast) of the other
interfaces. At the moment, we have an intelligent store-and-forward hub.
The problem we have is two-fold.
(i) We want to be able to address the platform via a single IP address
for configuration purposes. Our current proposal is to tamper with the
cell/endpoint of the incoming packet so that it looks like it came from en0
(which has a well-defined MAC and IP address), thus all of the interfaces
appear to have en0’s characteristics but are connected to physically
separate networks. We would also need to pass on packet destroy function
calls to the real source of the packet to clear up properly.
(ii) Since we want to be able to respond to broadcast/multicast messages
AND pass them out of the other physical interfaces, we need the ability to
pass the packet up AND down from the bridge filter layer. This has obvious
connotations for packet destroy via tx_done. It’s almost as if we create a
copy of the packet with a second npkt_t to cover travel in the opposite
sense. A frightening thought. Apart from not handling broadcast/multicast
has anyone got any suggestions?