#endif /* LWIP_MULTICAST_TX_OPTIONS */
#ifdef LWIP_HOOK_IP4_ROUTE_SRC
+/**
+ * Source based IPv4 routing hook function. This function works only
+ * when destination IP is broadcast IP.
+ */
+struct netif *
+ip4_route_src_hook(const ip4_addr_t *dest, const ip4_addr_t *src)
+{
+ struct netif *netif = NULL;
+
+ /* destination IP is broadcast IP? */
+ if ((src != NULL) && (dest->addr == IPADDR_BROADCAST)) {
+ /* iterate through netifs */
+ for (netif = netif_list; netif != NULL; netif = netif->next) {
+ /* is the netif up, does it have a link and a valid address? */
+ if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) {
+ /* source IP matches? */
+ if (ip4_addr_cmp(src, netif_ip4_addr(netif))) {
+ /* return netif on which to forward IP packet */
+ return netif;
+ }
+ }
+ }
+ }
+
+ return netif;
+}
+
/**
* Source based IPv4 routing must be fully implemented in
- * LWIP_HOOK_IP4_ROUTE_SRC(). This function only provides he parameters.
+ * LWIP_HOOK_IP4_ROUTE_SRC(). This function only provides the parameters.
*/
struct netif *
ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src)