xref: /openbmc/linux/net/ieee802154/ieee802154.h (revision 1802d0be)
11802d0beSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
278fe738dSDmitry Eremin-Solenikov /*
378fe738dSDmitry Eremin-Solenikov  * Copyright (C) 2007, 2008, 2009 Siemens AG
478fe738dSDmitry Eremin-Solenikov  */
578fe738dSDmitry Eremin-Solenikov #ifndef IEEE_802154_LOCAL_H
678fe738dSDmitry Eremin-Solenikov #define IEEE_802154_LOCAL_H
778fe738dSDmitry Eremin-Solenikov 
878fe738dSDmitry Eremin-Solenikov int __init ieee802154_nl_init(void);
979fe1a2aSAlexander Aring void ieee802154_nl_exit(void);
1078fe738dSDmitry Eremin-Solenikov 
1178fe738dSDmitry Eremin-Solenikov #define IEEE802154_OP(_cmd, _func)			\
1278fe738dSDmitry Eremin-Solenikov 	{						\
1378fe738dSDmitry Eremin-Solenikov 		.cmd	= _cmd,				\
1478fe738dSDmitry Eremin-Solenikov 		.doit	= _func,			\
1578fe738dSDmitry Eremin-Solenikov 		.dumpit	= NULL,				\
1678fe738dSDmitry Eremin-Solenikov 		.flags	= GENL_ADMIN_PERM,		\
1778fe738dSDmitry Eremin-Solenikov 	}
1878fe738dSDmitry Eremin-Solenikov 
1978fe738dSDmitry Eremin-Solenikov #define IEEE802154_DUMP(_cmd, _func, _dump)		\
2078fe738dSDmitry Eremin-Solenikov 	{						\
2178fe738dSDmitry Eremin-Solenikov 		.cmd	= _cmd,				\
2278fe738dSDmitry Eremin-Solenikov 		.doit	= _func,			\
2378fe738dSDmitry Eremin-Solenikov 		.dumpit	= _dump,			\
2478fe738dSDmitry Eremin-Solenikov 	}
2578fe738dSDmitry Eremin-Solenikov 
26339b4ca5SDmitry Eremin-Solenikov struct genl_info;
27339b4ca5SDmitry Eremin-Solenikov 
2878fe738dSDmitry Eremin-Solenikov struct sk_buff *ieee802154_nl_create(int flags, u8 req);
2978fe738dSDmitry Eremin-Solenikov int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group);
30339b4ca5SDmitry Eremin-Solenikov struct sk_buff *ieee802154_nl_new_reply(struct genl_info *info,
31339b4ca5SDmitry Eremin-Solenikov 					int flags, u8 req);
32339b4ca5SDmitry Eremin-Solenikov int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info);
3378fe738dSDmitry Eremin-Solenikov 
3478fe738dSDmitry Eremin-Solenikov extern struct genl_family nl802154_family;
351c582d91SJohannes Berg 
361c582d91SJohannes Berg /* genetlink ops/groups */
371c582d91SJohannes Berg int ieee802154_list_phy(struct sk_buff *skb, struct genl_info *info);
381c582d91SJohannes Berg int ieee802154_dump_phy(struct sk_buff *skb, struct netlink_callback *cb);
391c582d91SJohannes Berg int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info);
401c582d91SJohannes Berg int ieee802154_del_iface(struct sk_buff *skb, struct genl_info *info);
411c582d91SJohannes Berg 
422a94fe48SJohannes Berg enum ieee802154_mcgrp_ids {
432a94fe48SJohannes Berg 	IEEE802154_COORD_MCGRP,
442a94fe48SJohannes Berg 	IEEE802154_BEACON_MCGRP,
452a94fe48SJohannes Berg };
461c582d91SJohannes Berg 
471c582d91SJohannes Berg int ieee802154_associate_req(struct sk_buff *skb, struct genl_info *info);
481c582d91SJohannes Berg int ieee802154_associate_resp(struct sk_buff *skb, struct genl_info *info);
491c582d91SJohannes Berg int ieee802154_disassociate_req(struct sk_buff *skb, struct genl_info *info);
501c582d91SJohannes Berg int ieee802154_scan_req(struct sk_buff *skb, struct genl_info *info);
511c582d91SJohannes Berg int ieee802154_start_req(struct sk_buff *skb, struct genl_info *info);
521c582d91SJohannes Berg int ieee802154_list_iface(struct sk_buff *skb, struct genl_info *info);
531c582d91SJohannes Berg int ieee802154_dump_iface(struct sk_buff *skb, struct netlink_callback *cb);
54e462ded6SPhoebe Buckheister int ieee802154_set_macparams(struct sk_buff *skb, struct genl_info *info);
5578fe738dSDmitry Eremin-Solenikov 
563e9c156eSPhoebe Buckheister int ieee802154_llsec_getparams(struct sk_buff *skb, struct genl_info *info);
573e9c156eSPhoebe Buckheister int ieee802154_llsec_setparams(struct sk_buff *skb, struct genl_info *info);
583e9c156eSPhoebe Buckheister int ieee802154_llsec_add_key(struct sk_buff *skb, struct genl_info *info);
593e9c156eSPhoebe Buckheister int ieee802154_llsec_del_key(struct sk_buff *skb, struct genl_info *info);
603e9c156eSPhoebe Buckheister int ieee802154_llsec_dump_keys(struct sk_buff *skb,
613e9c156eSPhoebe Buckheister 			       struct netlink_callback *cb);
623e9c156eSPhoebe Buckheister int ieee802154_llsec_add_dev(struct sk_buff *skb, struct genl_info *info);
633e9c156eSPhoebe Buckheister int ieee802154_llsec_del_dev(struct sk_buff *skb, struct genl_info *info);
643e9c156eSPhoebe Buckheister int ieee802154_llsec_dump_devs(struct sk_buff *skb,
653e9c156eSPhoebe Buckheister 			       struct netlink_callback *cb);
663e9c156eSPhoebe Buckheister int ieee802154_llsec_add_devkey(struct sk_buff *skb, struct genl_info *info);
673e9c156eSPhoebe Buckheister int ieee802154_llsec_del_devkey(struct sk_buff *skb, struct genl_info *info);
683e9c156eSPhoebe Buckheister int ieee802154_llsec_dump_devkeys(struct sk_buff *skb,
693e9c156eSPhoebe Buckheister 				  struct netlink_callback *cb);
703e9c156eSPhoebe Buckheister int ieee802154_llsec_add_seclevel(struct sk_buff *skb, struct genl_info *info);
713e9c156eSPhoebe Buckheister int ieee802154_llsec_del_seclevel(struct sk_buff *skb, struct genl_info *info);
723e9c156eSPhoebe Buckheister int ieee802154_llsec_dump_seclevels(struct sk_buff *skb,
733e9c156eSPhoebe Buckheister 				    struct netlink_callback *cb);
743e9c156eSPhoebe Buckheister 
7578fe738dSDmitry Eremin-Solenikov #endif
76