162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * File: pn_dev.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Phonet network device 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright (C) 2008 Nokia Corporation. 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef PN_DEV_H 1162306a36Sopenharmony_ci#define PN_DEV_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/list.h> 1462306a36Sopenharmony_ci#include <linux/mutex.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cistruct net; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct phonet_device_list { 1962306a36Sopenharmony_ci struct list_head list; 2062306a36Sopenharmony_ci struct mutex lock; 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct phonet_device_list *phonet_device_list(struct net *net); 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cistruct phonet_device { 2662306a36Sopenharmony_ci struct list_head list; 2762306a36Sopenharmony_ci struct net_device *netdev; 2862306a36Sopenharmony_ci DECLARE_BITMAP(addrs, 64); 2962306a36Sopenharmony_ci struct rcu_head rcu; 3062306a36Sopenharmony_ci}; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciint phonet_device_init(void); 3362306a36Sopenharmony_civoid phonet_device_exit(void); 3462306a36Sopenharmony_ciint phonet_netlink_register(void); 3562306a36Sopenharmony_cistruct net_device *phonet_device_get(struct net *net); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciint phonet_address_add(struct net_device *dev, u8 addr); 3862306a36Sopenharmony_ciint phonet_address_del(struct net_device *dev, u8 addr); 3962306a36Sopenharmony_ciu8 phonet_address_get(struct net_device *dev, u8 addr); 4062306a36Sopenharmony_ciint phonet_address_lookup(struct net *net, u8 addr); 4162306a36Sopenharmony_civoid phonet_address_notify(int event, struct net_device *dev, u8 addr); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciint phonet_route_add(struct net_device *dev, u8 daddr); 4462306a36Sopenharmony_ciint phonet_route_del(struct net_device *dev, u8 daddr); 4562306a36Sopenharmony_civoid rtm_phonet_notify(int event, struct net_device *dev, u8 dst); 4662306a36Sopenharmony_cistruct net_device *phonet_route_get_rcu(struct net *net, u8 daddr); 4762306a36Sopenharmony_cistruct net_device *phonet_route_output(struct net *net, u8 daddr); 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#define PN_NO_ADDR 0xff 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciextern const struct seq_operations pn_sock_seq_ops; 5262306a36Sopenharmony_ciextern const struct seq_operations pn_res_seq_ops; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#endif 55