mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 10:37:51 +07:00
cc47f66e6b
With the current client announcement implementation, in case of roaming, an update is triggered on the new AP serving the client. At that point the new information is spread around by means of the OGM broadcasting mechanism. Until this operations is not executed, no node is able to correctly route traffic towards the client. This obviously causes packet drops and introduces a delay in the time needed by the client to recover its connections. A new packet type called ROAMING_ADVERTISEMENT is added to account this issue. This message is sent in case of roaming from the new AP serving the client to the old one and will contain the client MAC address. In this way an out-of-OGM update is immediately committed, so that the old node can update its global translation table. Traffic reaching this node will then be redirected to the correct destination utilising the fresher information. Thus reducing the packet drops and the connection recovery delay. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
48 lines
2.0 KiB
C
48 lines
2.0 KiB
C
/*
|
|
* Copyright (C) 2007-2011 B.A.T.M.A.N. contributors:
|
|
*
|
|
* Marek Lindner, Simon Wunderlich
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of version 2 of the GNU General Public
|
|
* License as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301, USA
|
|
*
|
|
*/
|
|
|
|
#ifndef _NET_BATMAN_ADV_ROUTING_H_
|
|
#define _NET_BATMAN_ADV_ROUTING_H_
|
|
|
|
void slide_own_bcast_window(struct hard_iface *hard_iface);
|
|
void receive_bat_packet(const struct ethhdr *ethhdr,
|
|
struct batman_packet *batman_packet,
|
|
const unsigned char *tt_buff,
|
|
struct hard_iface *if_incoming);
|
|
void update_routes(struct bat_priv *bat_priv, struct orig_node *orig_node,
|
|
struct neigh_node *neigh_node);
|
|
int route_unicast_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_icmp_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_unicast_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_ucast_frag_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_bcast_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_vis_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_bat_packet(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
int recv_roam_adv(struct sk_buff *skb, struct hard_iface *recv_if);
|
|
struct neigh_node *find_router(struct bat_priv *bat_priv,
|
|
struct orig_node *orig_node,
|
|
const struct hard_iface *recv_if);
|
|
void bonding_candidate_del(struct orig_node *orig_node,
|
|
struct neigh_node *neigh_node);
|
|
|
|
#endif /* _NET_BATMAN_ADV_ROUTING_H_ */
|