failover.h 1.2 KB

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