xref: /linux/include/net/failover.h (revision 30c8bd5aa8b2c78546c3e52337101b9c85879320)
1*30c8bd5aSSridhar Samudrala /* SPDX-License-Identifier: GPL-2.0 */
2*30c8bd5aSSridhar Samudrala /* Copyright (c) 2018, Intel Corporation. */
3*30c8bd5aSSridhar Samudrala 
4*30c8bd5aSSridhar Samudrala #ifndef _FAILOVER_H
5*30c8bd5aSSridhar Samudrala #define _FAILOVER_H
6*30c8bd5aSSridhar Samudrala 
7*30c8bd5aSSridhar Samudrala #include <linux/netdevice.h>
8*30c8bd5aSSridhar Samudrala 
9*30c8bd5aSSridhar Samudrala struct failover_ops {
10*30c8bd5aSSridhar Samudrala 	int (*slave_pre_register)(struct net_device *slave_dev,
11*30c8bd5aSSridhar Samudrala 				  struct net_device *failover_dev);
12*30c8bd5aSSridhar Samudrala 	int (*slave_register)(struct net_device *slave_dev,
13*30c8bd5aSSridhar Samudrala 			      struct net_device *failover_dev);
14*30c8bd5aSSridhar Samudrala 	int (*slave_pre_unregister)(struct net_device *slave_dev,
15*30c8bd5aSSridhar Samudrala 				    struct net_device *failover_dev);
16*30c8bd5aSSridhar Samudrala 	int (*slave_unregister)(struct net_device *slave_dev,
17*30c8bd5aSSridhar Samudrala 				struct net_device *failover_dev);
18*30c8bd5aSSridhar Samudrala 	int (*slave_link_change)(struct net_device *slave_dev,
19*30c8bd5aSSridhar Samudrala 				 struct net_device *failover_dev);
20*30c8bd5aSSridhar Samudrala 	int (*slave_name_change)(struct net_device *slave_dev,
21*30c8bd5aSSridhar Samudrala 				 struct net_device *failover_dev);
22*30c8bd5aSSridhar Samudrala 	rx_handler_result_t (*slave_handle_frame)(struct sk_buff **pskb);
23*30c8bd5aSSridhar Samudrala };
24*30c8bd5aSSridhar Samudrala 
25*30c8bd5aSSridhar Samudrala struct failover {
26*30c8bd5aSSridhar Samudrala 	struct list_head list;
27*30c8bd5aSSridhar Samudrala 	struct net_device __rcu *failover_dev;
28*30c8bd5aSSridhar Samudrala 	struct failover_ops __rcu *ops;
29*30c8bd5aSSridhar Samudrala };
30*30c8bd5aSSridhar Samudrala 
31*30c8bd5aSSridhar Samudrala struct failover *failover_register(struct net_device *dev,
32*30c8bd5aSSridhar Samudrala 				   struct failover_ops *ops);
33*30c8bd5aSSridhar Samudrala void failover_unregister(struct failover *failover);
34*30c8bd5aSSridhar Samudrala int failover_slave_unregister(struct net_device *slave_dev);
35*30c8bd5aSSridhar Samudrala 
36*30c8bd5aSSridhar Samudrala #endif /* _FAILOVER_H */
37