1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * File: pn_dev.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Phonet network device 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Copyright (C) 2008 Nokia Corporation. 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef PN_DEV_H 11*4882a593Smuzhiyun #define PN_DEV_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun struct phonet_device_list { 14*4882a593Smuzhiyun struct list_head list; 15*4882a593Smuzhiyun struct mutex lock; 16*4882a593Smuzhiyun }; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct phonet_device_list *phonet_device_list(struct net *net); 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct phonet_device { 21*4882a593Smuzhiyun struct list_head list; 22*4882a593Smuzhiyun struct net_device *netdev; 23*4882a593Smuzhiyun DECLARE_BITMAP(addrs, 64); 24*4882a593Smuzhiyun struct rcu_head rcu; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun int phonet_device_init(void); 28*4882a593Smuzhiyun void phonet_device_exit(void); 29*4882a593Smuzhiyun int phonet_netlink_register(void); 30*4882a593Smuzhiyun struct net_device *phonet_device_get(struct net *net); 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun int phonet_address_add(struct net_device *dev, u8 addr); 33*4882a593Smuzhiyun int phonet_address_del(struct net_device *dev, u8 addr); 34*4882a593Smuzhiyun u8 phonet_address_get(struct net_device *dev, u8 addr); 35*4882a593Smuzhiyun int phonet_address_lookup(struct net *net, u8 addr); 36*4882a593Smuzhiyun void phonet_address_notify(int event, struct net_device *dev, u8 addr); 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun int phonet_route_add(struct net_device *dev, u8 daddr); 39*4882a593Smuzhiyun int phonet_route_del(struct net_device *dev, u8 daddr); 40*4882a593Smuzhiyun void rtm_phonet_notify(int event, struct net_device *dev, u8 dst); 41*4882a593Smuzhiyun struct net_device *phonet_route_get_rcu(struct net *net, u8 daddr); 42*4882a593Smuzhiyun struct net_device *phonet_route_output(struct net *net, u8 daddr); 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define PN_NO_ADDR 0xff 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun extern const struct seq_operations pn_sock_seq_ops; 47*4882a593Smuzhiyun extern const struct seq_operations pn_res_seq_ops; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #endif 50