static int selnl_msglen(int msgtype)
{
int ret = 0;
-
+
switch (msgtype) {
case SELNL_MSG_SETENFORCE:
ret = sizeof(struct selnl_msg_setenforce);
break;
-
+
case SELNL_MSG_POLICYLOAD:
ret = sizeof(struct selnl_msg_policyload);
break;
-
+
default:
BUG();
}
switch (msgtype) {
case SELNL_MSG_SETENFORCE: {
struct selnl_msg_setenforce *msg = NLMSG_DATA(nlh);
-
+
memset(msg, 0, len);
msg->val = *((int *)data);
break;
}
-
+
case SELNL_MSG_POLICYLOAD: {
struct selnl_msg_policyload *msg = NLMSG_DATA(nlh);
-
+
memset(msg, 0, len);
msg->seqno = *((u32 *)data);
break;
sk_buff_data_t tmp;
struct sk_buff *skb;
struct nlmsghdr *nlh;
-
+
len = selnl_msglen(msgtype);
-
+
skb = alloc_skb(NLMSG_SPACE(len), GFP_USER);
if (!skb)
goto oom;
netlink_broadcast(selnl, skb, 0, SELNLGRP_AVC, GFP_USER);
out:
return;
-
+
nlmsg_failure:
kfree_skb(skb);
oom:
SELNLGRP_MAX, NULL, NULL, THIS_MODULE);
if (selnl == NULL)
panic("SELinux: Cannot create netlink socket.");
- netlink_set_nonroot(NETLINK_SELINUX, NL_NONROOT_RECV);
+ netlink_set_nonroot(NETLINK_SELINUX, NL_NONROOT_RECV);
return 0;
}