|
|
@ -75,6 +75,39 @@ out: |
|
|
|
return -ENOBUFS; |
|
|
|
return -ENOBUFS; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct sk_buff *ieee802154_nl_new_reply(struct genl_info *info, |
|
|
|
|
|
|
|
int flags, u8 req) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
void *hdr; |
|
|
|
|
|
|
|
struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!msg) |
|
|
|
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hdr = genlmsg_put_reply(msg, info, |
|
|
|
|
|
|
|
&nl802154_family, flags, req); |
|
|
|
|
|
|
|
if (!hdr) { |
|
|
|
|
|
|
|
nlmsg_free(msg); |
|
|
|
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return msg; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
/* XXX: nlh is right at the start of msg */ |
|
|
|
|
|
|
|
void *hdr = genlmsg_data(NLMSG_DATA(msg->data)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (genlmsg_end(msg, hdr) < 0) |
|
|
|
|
|
|
|
goto out; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return genlmsg_reply(msg, info); |
|
|
|
|
|
|
|
out: |
|
|
|
|
|
|
|
nlmsg_free(msg); |
|
|
|
|
|
|
|
return -ENOBUFS; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int __init ieee802154_nl_init(void) |
|
|
|
int __init ieee802154_nl_init(void) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int rc; |
|
|
|
int rc; |
|
|
|