Exemplo n.º 1
0
/**
 * Gets called by Netlink when the userspace application wants to interact with us.
 *
 * @param skb packet received from userspace.
 */
static void receive_from_userspace(struct sk_buff *skb)
{
	log_debug("Message arrived.");
	mutex_lock(&config_mutex);
	netlink_rcv_skb(skb, &handle_netlink_message);
	mutex_unlock(&config_mutex);
}
Exemplo n.º 2
0
static void nfnetlink_rcv(struct sk_buff *skb)
{
	struct nlmsghdr *nlh = nlmsg_hdr(skb);
	int msglen;

	if (nlh->nlmsg_len < NLMSG_HDRLEN ||
	    skb->len < nlh->nlmsg_len)
		return;

	if (!netlink_net_capable(skb, CAP_NET_ADMIN)) {
		netlink_ack(skb, nlh, -EPERM);
		return;
	}

	if (nlh->nlmsg_type == NFNL_MSG_BATCH_BEGIN) {
		struct nfgenmsg *nfgenmsg;

		msglen = NLMSG_ALIGN(nlh->nlmsg_len);
		if (msglen > skb->len)
			msglen = skb->len;

		if (nlh->nlmsg_len < NLMSG_HDRLEN ||
		    skb->len < NLMSG_HDRLEN + sizeof(struct nfgenmsg))
			return;

		nfgenmsg = nlmsg_data(nlh);
		skb_pull(skb, msglen);
		nfnetlink_rcv_batch(skb, nlh, nfgenmsg->res_id);
	} else {
		netlink_rcv_skb(skb, &nfnetlink_rcv_msg);
	}
}
Exemplo n.º 3
0
void
kni_nl_callback(struct sk_buff *skb)
{
  mutex_lock(&kni_nl_mutex);
  netlink_rcv_skb(skb, &kni_nl_process);
  mutex_unlock(&kni_nl_mutex);
}
Exemplo n.º 4
0
void my_nl_rcv_msg(struct sk_buff *skb)
{

    pr_debug("NAT64:     netlink: message arrived.\n" );

    mutex_lock(&my_mutex);
    netlink_rcv_skb(skb, &my_rcv_msg);
    mutex_unlock(&my_mutex);
}
Exemplo n.º 5
0
/**
 * Gets called by Netlink when the userspace application wants to interact with us.
 *
 * @param skb packet received from userspace.
 */
static void receive_from_userspace(struct sk_buff *skb)
{
	mutex_lock(&config_mutex);
	error_pool_activate();

	netlink_rcv_skb(skb, &handle_netlink_message);
	error_pool_deactivate();

	mutex_unlock(&config_mutex);
}
Exemplo n.º 6
0
static void nfnetlink_rcv(struct sk_buff *skb)
{
	nfnl_lock();
	netlink_rcv_skb(skb, &nfnetlink_rcv_msg);
	nfnl_unlock();
}
Exemplo n.º 7
0
void my_nl_rcv_msg(struct sk_buff *skb)
{
    mutex_lock(&my_mutex);
    netlink_rcv_skb(skb, &my_rcv_msg);
    mutex_unlock(&my_mutex);
}
Exemplo n.º 8
0
static void nfnetlink_rcv(struct sk_buff *skb)
{
	netlink_rcv_skb(skb, &nfnetlink_rcv_msg);
}
Exemplo n.º 9
0
static void hello_nl_rcv(struct sk_buff* skb)
{
	mutex_lock(&nl_mutex);
	netlink_rcv_skb(skb, hello_nl_recv_msg);
	mutex_unlock(&nl_mutex);
}