Ben Menchaca | 84f3663 | 2014-02-28 20:57:38 +0000 | [diff] [blame] | 1 | /* |
| 2 | ************************************************************************** |
| 3 | * Copyright (c) 2014, The Linux Foundation. All rights reserved. |
| 4 | * Permission to use, copy, modify, and/or distribute this software for |
| 5 | * any purpose with or without fee is hereby granted, provided that the |
| 6 | * above copyright notice and this permission notice appear in all copies. |
| 7 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 8 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| 9 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| 10 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| 11 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| 12 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
| 13 | * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| 14 | ************************************************************************** |
| 15 | */ |
| 16 | |
| 17 | /* |
Ben Menchaca | 84f3663 | 2014-02-28 20:57:38 +0000 | [diff] [blame] | 18 | * struct ecm_interface_route |
| 19 | * An ecm route supports either v4 or v6 routing information |
| 20 | */ |
| 21 | struct ecm_interface_route { |
| 22 | struct dst_entry *dst; /* Both ipv4 and v6 have a common dst entry */ |
| 23 | union { |
| 24 | struct rtable *rtv4; /* IPv4 route */ |
| 25 | struct rt6_info *rtv6; /* IPv6 route */ |
| 26 | } rt; |
| 27 | bool v4_route; /* True when a v4 route, false when v6 */ |
| 28 | }; |
| 29 | |
| 30 | /* |
| 31 | * External defined functions |
| 32 | */ |
| 33 | extern struct net_device *bond_get_tx_dev(struct sk_buff *skb, uint8_t *src_mac, |
| 34 | uint8_t *dst_mac, void *src, |
| 35 | void *dst, uint16_t protocol, |
| 36 | struct net_device *bond_dev); |
| 37 | bool ecm_interface_mac_addr_get(ip_addr_t addr, uint8_t *mac_addr, bool *on_link, ip_addr_t gw_addr); |
| 38 | bool ecm_interface_find_route_by_addr(ip_addr_t addr, struct ecm_interface_route *ecm_rt); |
| 39 | void ecm_interface_route_release(struct ecm_interface_route *rt); |
| 40 | struct ecm_db_iface_instance *ecm_interface_establish_and_ref(struct net_device *dev); |
| 41 | int32_t ecm_interface_heirarchy_construct(struct ecm_db_iface_instance *interfaces[], ip_addr_t packet_src_addr, ip_addr_t packet_dest_addr, int packet_protocol); |
| 42 | |