0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef __NET_MCTPDEVICE_H
0011 #define __NET_MCTPDEVICE_H
0012
0013 #include <linux/list.h>
0014 #include <linux/types.h>
0015 #include <linux/refcount.h>
0016
0017 struct mctp_sk_key;
0018
0019 struct mctp_dev {
0020 struct net_device *dev;
0021
0022 refcount_t refs;
0023
0024 unsigned int net;
0025
0026 const struct mctp_netdev_ops *ops;
0027
0028
0029 u8 *addrs;
0030 size_t num_addrs;
0031 spinlock_t addrs_lock;
0032
0033 struct rcu_head rcu;
0034 };
0035
0036 struct mctp_netdev_ops {
0037 void (*release_flow)(struct mctp_dev *dev,
0038 struct mctp_sk_key *key);
0039 };
0040
0041 #define MCTP_INITIAL_DEFAULT_NET 1
0042
0043 struct mctp_dev *mctp_dev_get_rtnl(const struct net_device *dev);
0044 struct mctp_dev *__mctp_dev_get(const struct net_device *dev);
0045
0046 int mctp_register_netdev(struct net_device *dev,
0047 const struct mctp_netdev_ops *ops);
0048 void mctp_unregister_netdev(struct net_device *dev);
0049
0050 void mctp_dev_hold(struct mctp_dev *mdev);
0051 void mctp_dev_put(struct mctp_dev *mdev);
0052
0053 void mctp_dev_set_key(struct mctp_dev *dev, struct mctp_sk_key *key);
0054 void mctp_dev_release_key(struct mctp_dev *dev, struct mctp_sk_key *key);
0055
0056 #endif