mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-25 16:11:45 +00:00
[NetLabel]: rework the Netlink attribute handling (part 1)
At the suggestion of Thomas Graf, rewrite NetLabel's use of Netlink attributes to better follow the common Netlink attribute usage. Signed-off-by: Paul Moore <paul.moore@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4fe5d5c07a
commit
fcd4828064
7 changed files with 77 additions and 605 deletions
|
@ -74,85 +74,3 @@ int netlbl_netlink_init(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* NetLabel Common Protocol Functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* netlbl_netlink_send_ack - Send an ACK message
|
||||
* @info: the generic NETLINK information
|
||||
* @genl_family: the generic NETLINK family ID value
|
||||
* @ack_cmd: the generic NETLINK family ACK command value
|
||||
* @ret_code: return code to use
|
||||
*
|
||||
* Description:
|
||||
* This function sends an ACK message to the sender of the NETLINK message
|
||||
* specified by @info.
|
||||
*
|
||||
*/
|
||||
void netlbl_netlink_send_ack(const struct genl_info *info,
|
||||
u32 genl_family,
|
||||
u8 ack_cmd,
|
||||
u32 ret_code)
|
||||
{
|
||||
size_t data_size;
|
||||
struct sk_buff *skb;
|
||||
|
||||
data_size = GENL_HDRLEN + 2 * NETLBL_LEN_U32;
|
||||
skb = netlbl_netlink_alloc_skb(0, data_size, GFP_KERNEL);
|
||||
if (skb == NULL)
|
||||
return;
|
||||
|
||||
if (netlbl_netlink_hdr_put(skb,
|
||||
info->snd_pid,
|
||||
0,
|
||||
genl_family,
|
||||
ack_cmd) == NULL)
|
||||
goto send_ack_failure;
|
||||
|
||||
if (nla_put_u32(skb, NLA_U32, info->snd_seq) != 0)
|
||||
goto send_ack_failure;
|
||||
if (nla_put_u32(skb, NLA_U32, ret_code) != 0)
|
||||
goto send_ack_failure;
|
||||
|
||||
netlbl_netlink_snd(skb, info->snd_pid);
|
||||
return;
|
||||
|
||||
send_ack_failure:
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
/*
|
||||
* NETLINK I/O Functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* netlbl_netlink_snd - Send a NetLabel message
|
||||
* @skb: NetLabel message
|
||||
* @pid: destination PID
|
||||
*
|
||||
* Description:
|
||||
* Sends a unicast NetLabel message over the NETLINK socket.
|
||||
*
|
||||
*/
|
||||
int netlbl_netlink_snd(struct sk_buff *skb, u32 pid)
|
||||
{
|
||||
return genlmsg_unicast(skb, pid);
|
||||
}
|
||||
|
||||
/**
|
||||
* netlbl_netlink_snd - Send a NetLabel message
|
||||
* @skb: NetLabel message
|
||||
* @pid: sending PID
|
||||
* @group: multicast group id
|
||||
*
|
||||
* Description:
|
||||
* Sends a multicast NetLabel message over the NETLINK socket to all members
|
||||
* of @group except @pid.
|
||||
*
|
||||
*/
|
||||
int netlbl_netlink_snd_multicast(struct sk_buff *skb, u32 pid, u32 group)
|
||||
{
|
||||
return genlmsg_multicast(skb, pid, group, GFP_KERNEL);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue