/** * 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); }
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); } }
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); }
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); }
/** * 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); }
static void nfnetlink_rcv(struct sk_buff *skb) { nfnl_lock(); netlink_rcv_skb(skb, &nfnetlink_rcv_msg); nfnl_unlock(); }
void my_nl_rcv_msg(struct sk_buff *skb) { mutex_lock(&my_mutex); netlink_rcv_skb(skb, &my_rcv_msg); mutex_unlock(&my_mutex); }
static void nfnetlink_rcv(struct sk_buff *skb) { netlink_rcv_skb(skb, &nfnetlink_rcv_msg); }
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); }