bridgeif: improve documentation

This commit is contained in:
goldsimon
2017-04-04 21:54:52 +02:00
parent 8ed2bd4771
commit 97f4033a8a
4 changed files with 47 additions and 6 deletions

View File

@@ -44,6 +44,29 @@
* On receive, the port netif calls into the bridge (via its netif->input function) and
* the bridge selects the port(s) (and/or its netif->input function) to pass the received pbuf to.
*
* Usage:
* - add the port netifs just like you would when using them as dedicated netif without a bridge
* - only NETIF_FLAG_ETHARP/NETIF_FLAG_ETHERNET netifs are supported as bridge ports
* - add the bridge port netifs without IPv4 addresses (i.e. pass 'NULL, NULL, NULL')
* - don't add IPv6 addresses to the port netifs!
* - set up the bridge configuration in a global variable of type 'bridgeif_initdata_t' that contains
* - the MAC address of the bridge
* - some configuration options controlling the memory consumption (maximum number of ports
* and FDB entries)
* - e.g. for a bridge MAC address 00-01-02-03-04-05, 2 bridge ports, 1024 FDB entries + 16 static MAC entries:
* bridgeif_initdata_t mybridge_initdata = BRIDGEIF_INITDATA1(2, 1024, 16, MAKE_ETH_ADDR(0, 1, 2, 3, 4, 5));
* - add the bridge netif (with IPv4 config):
* struct netif bridge_netif;
* netif_add(&bridge_netif, &my_ip, &my_netmask, &my_gw, &mybridge_initdata, bridgeif_init, tcpip_input);
* NOTE: the passed 'input' function depends on BRIDGEIF_PORT_NETIFS_OUTPUT_DIRECT setting,
* which controls where the forwarding is done (netif low level input context vs. tcpip_thread)
* - set up all ports netifs and the bridge netif
*
* - When adding a port netif, NETIF_FLAG_ETHARP flag will be removed from a port
* to prevent ETHARP working on that port netif (we only want one IP per bridge not per port).
* - When adding a port netif, its input function is changed to call into the bridge.
*
*
* @todo:
* - compact static FDB entries (instead of walking the whole array)
* - add FDB query/read access
@@ -555,6 +578,10 @@ bridgeif_tcpip_input(struct pbuf *p, struct netif *netif)
* @ingroup bridgeif
* Initialization function passed to netif_add().
*
* ATTENTION: A pointer to a @ref bridgeif_initdata_t must be passed as 'state'
* to @ref netif_add when adding the bridge. I supplies MAC address
* and controls memory allocation (number of ports, FDB size).
*
* @param netif the lwip network interface structure for this ethernetif
* @return ERR_OK if the loopif is initialized
* ERR_MEM if private data couldn't be allocated
@@ -569,8 +596,10 @@ bridgeif_init(struct netif *netif)
LWIP_ASSERT("netif != NULL", (netif != NULL));
#if !BRIDGEIF_PORT_NETIFS_OUTPUT_DIRECT
LWIP_ASSERT("bridgeif does not need tcpip_input, use netif_input/ethernet_input instead",
netif->input != tcpip_input);
if (netif->input == tcpip_input) {
LWIP_DEBUGF(BRIDGEIF_DEBUG|LWIP_DBG_ON, ("bridgeif does not need tcpip_input, use netif_input/ethernet_input instead",
netif->input != tcpip_input));
}
#endif
if (bridgeif_netif_client_id == 0xFF) {