#include <linux/gfp.h>
#include <linux/kernel.h>
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/ieee802154.h>
#include <net/netlink.h>
#include <net/genetlink.h>
#include <net/sock.h>
#include <linux/nl802154.h>
#include <linux/export.h>
#include <net/af_ieee802154.h>
#include <net/ieee802154_netdev.h>
#include <net/cfg802154.h>
#include "ieee802154.h"
static int nla_put_hwaddr(struct sk_buff *msg, int type, __le64 hwaddr,
int padattr)
{ … }
static __le64 nla_get_hwaddr(const struct nlattr *nla)
{ … }
static int nla_put_shortaddr(struct sk_buff *msg, int type, __le16 addr)
{ … }
static __le16 nla_get_shortaddr(const struct nlattr *nla)
{ … }
static int ieee802154_nl_start_confirm(struct net_device *dev, u8 status)
{ … }
static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid,
u32 seq, int flags, struct net_device *dev)
{ … }
static struct net_device *ieee802154_nl_get_dev(struct genl_info *info)
{ … }
int ieee802154_associate_req(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_associate_resp(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_disassociate_req(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_start_req(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_scan_req(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_list_iface(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_dump_iface(struct sk_buff *skb, struct netlink_callback *cb)
{ … }
int ieee802154_set_macparams(struct sk_buff *skb, struct genl_info *info)
{ … }
static int
ieee802154_llsec_parse_key_id(struct genl_info *info,
struct ieee802154_llsec_key_id *desc)
{ … }
static int
ieee802154_llsec_fill_key_id(struct sk_buff *msg,
const struct ieee802154_llsec_key_id *desc)
{ … }
int ieee802154_llsec_getparams(struct sk_buff *skb, struct genl_info *info)
{ … }
int ieee802154_llsec_setparams(struct sk_buff *skb, struct genl_info *info)
{ … }
struct llsec_dump_data { … };
static int
ieee802154_llsec_dump_table(struct sk_buff *skb, struct netlink_callback *cb,
int (*step)(struct llsec_dump_data *))
{ … }
static int
ieee802154_nl_llsec_change(struct sk_buff *skb, struct genl_info *info,
int (*fn)(struct net_device*, struct genl_info*))
{ … }
static int
ieee802154_llsec_parse_key(struct genl_info *info,
struct ieee802154_llsec_key *key)
{ … }
static int llsec_add_key(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_add_key(struct sk_buff *skb, struct genl_info *info)
{ … }
static int llsec_remove_key(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_del_key(struct sk_buff *skb, struct genl_info *info)
{ … }
static int
ieee802154_nl_fill_key(struct sk_buff *msg, u32 portid, u32 seq,
const struct ieee802154_llsec_key_entry *key,
const struct net_device *dev)
{ … }
static int llsec_iter_keys(struct llsec_dump_data *data)
{ … }
int ieee802154_llsec_dump_keys(struct sk_buff *skb, struct netlink_callback *cb)
{ … }
static int
llsec_parse_dev(struct genl_info *info,
struct ieee802154_llsec_device *dev)
{ … }
static int llsec_add_dev(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_add_dev(struct sk_buff *skb, struct genl_info *info)
{ … }
static int llsec_del_dev(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_del_dev(struct sk_buff *skb, struct genl_info *info)
{ … }
static int
ieee802154_nl_fill_dev(struct sk_buff *msg, u32 portid, u32 seq,
const struct ieee802154_llsec_device *desc,
const struct net_device *dev)
{ … }
static int llsec_iter_devs(struct llsec_dump_data *data)
{ … }
int ieee802154_llsec_dump_devs(struct sk_buff *skb, struct netlink_callback *cb)
{ … }
static int llsec_add_devkey(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_add_devkey(struct sk_buff *skb, struct genl_info *info)
{ … }
static int llsec_del_devkey(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_del_devkey(struct sk_buff *skb, struct genl_info *info)
{ … }
static int
ieee802154_nl_fill_devkey(struct sk_buff *msg, u32 portid, u32 seq,
__le64 devaddr,
const struct ieee802154_llsec_device_key *devkey,
const struct net_device *dev)
{ … }
static int llsec_iter_devkeys(struct llsec_dump_data *data)
{ … }
int ieee802154_llsec_dump_devkeys(struct sk_buff *skb,
struct netlink_callback *cb)
{ … }
static int
llsec_parse_seclevel(struct genl_info *info,
struct ieee802154_llsec_seclevel *sl)
{ … }
static int llsec_add_seclevel(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_add_seclevel(struct sk_buff *skb, struct genl_info *info)
{ … }
static int llsec_del_seclevel(struct net_device *dev, struct genl_info *info)
{ … }
int ieee802154_llsec_del_seclevel(struct sk_buff *skb, struct genl_info *info)
{ … }
static int
ieee802154_nl_fill_seclevel(struct sk_buff *msg, u32 portid, u32 seq,
const struct ieee802154_llsec_seclevel *sl,
const struct net_device *dev)
{ … }
static int llsec_iter_seclevels(struct llsec_dump_data *data)
{ … }
int ieee802154_llsec_dump_seclevels(struct sk_buff *skb,
struct netlink_callback *cb)
{ … }