12b27bdccSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2f8ff6028SRemi Denis-Courmont /* 3f8ff6028SRemi Denis-Courmont * File: pn_dev.h 4f8ff6028SRemi Denis-Courmont * 5f8ff6028SRemi Denis-Courmont * Phonet network device 6f8ff6028SRemi Denis-Courmont * 7f8ff6028SRemi Denis-Courmont * Copyright (C) 2008 Nokia Corporation. 8f8ff6028SRemi Denis-Courmont */ 9f8ff6028SRemi Denis-Courmont 10f8ff6028SRemi Denis-Courmont #ifndef PN_DEV_H 11f8ff6028SRemi Denis-Courmont #define PN_DEV_H 12f8ff6028SRemi Denis-Courmont 13*949d6b40SJakub Kicinski #include <linux/list.h> 14*949d6b40SJakub Kicinski #include <linux/mutex.h> 15*949d6b40SJakub Kicinski 16*949d6b40SJakub Kicinski struct net; 17*949d6b40SJakub Kicinski 18f8ff6028SRemi Denis-Courmont struct phonet_device_list { 19f8ff6028SRemi Denis-Courmont struct list_head list; 20eeb74a9dSRémi Denis-Courmont struct mutex lock; 21f8ff6028SRemi Denis-Courmont }; 22f8ff6028SRemi Denis-Courmont 239a3b7a42Sremi.denis-courmont@nokia struct phonet_device_list *phonet_device_list(struct net *net); 24f8ff6028SRemi Denis-Courmont 25f8ff6028SRemi Denis-Courmont struct phonet_device { 26f8ff6028SRemi Denis-Courmont struct list_head list; 27f8ff6028SRemi Denis-Courmont struct net_device *netdev; 28f8ff6028SRemi Denis-Courmont DECLARE_BITMAP(addrs, 64); 2988e7594aSJiri Pirko struct rcu_head rcu; 30f8ff6028SRemi Denis-Courmont }; 31f8ff6028SRemi Denis-Courmont 3276e02cf6Sremi.denis-courmont@nokia int phonet_device_init(void); 33f8ff6028SRemi Denis-Courmont void phonet_device_exit(void); 34660f706dSremi.denis-courmont@nokia int phonet_netlink_register(void); 35f8ff6028SRemi Denis-Courmont struct net_device *phonet_device_get(struct net *net); 36f8ff6028SRemi Denis-Courmont 37f8ff6028SRemi Denis-Courmont int phonet_address_add(struct net_device *dev, u8 addr); 38f8ff6028SRemi Denis-Courmont int phonet_address_del(struct net_device *dev, u8 addr); 39f8ff6028SRemi Denis-Courmont u8 phonet_address_get(struct net_device *dev, u8 addr); 4052404881SRémi Denis-Courmont int phonet_address_lookup(struct net *net, u8 addr); 41c7a1a4c8SRémi Denis-Courmont void phonet_address_notify(int event, struct net_device *dev, u8 addr); 42f8ff6028SRemi Denis-Courmont 4355748ac0SRémi Denis-Courmont int phonet_route_add(struct net_device *dev, u8 daddr); 4455748ac0SRémi Denis-Courmont int phonet_route_del(struct net_device *dev, u8 daddr); 45f062f41dSRémi Denis-Courmont void rtm_phonet_notify(int event, struct net_device *dev, u8 dst); 46e67f88ddSEric Dumazet struct net_device *phonet_route_get_rcu(struct net *net, u8 daddr); 4755748ac0SRémi Denis-Courmont struct net_device *phonet_route_output(struct net *net, u8 daddr); 4855748ac0SRémi Denis-Courmont 49f8ff6028SRemi Denis-Courmont #define PN_NO_ADDR 0xff 50f8ff6028SRemi Denis-Courmont 51c3506372SChristoph Hellwig extern const struct seq_operations pn_sock_seq_ops; 52c3506372SChristoph Hellwig extern const struct seq_operations pn_res_seq_ops; 53c1dc13e9SRémi Denis-Courmont 54f8ff6028SRemi Denis-Courmont #endif 55