Lines Matching refs:nlh
2761 struct nlmsghdr *nlh; in __nlmsg_put() local
2764 nlh = (struct nlmsghdr *)skb_put(skb, NLMSG_ALIGN(size)); in __nlmsg_put()
2765 nlh->nlmsg_type = type; in __nlmsg_put()
2766 nlh->nlmsg_len = size; in __nlmsg_put()
2767 nlh->nlmsg_flags = flags; in __nlmsg_put()
2768 nlh->nlmsg_pid = portid; in __nlmsg_put()
2769 nlh->nlmsg_seq = seq; in __nlmsg_put()
2771 memset(nlmsg_data(nlh) + len, 0, NLMSG_ALIGN(size) - size); in __nlmsg_put()
2772 return nlh; in __nlmsg_put()
2786 struct nlmsghdr *nlh; in netlink_dump() local
2850 nlh = nlmsg_put_answer(skb, cb, NLMSG_DONE, sizeof(len), NLM_F_MULTI); in netlink_dump()
2851 if (!nlh) in netlink_dump()
2854 nl_dump_check_consistent(cb, nlh); in netlink_dump()
2856 memcpy(nlmsg_data(nlh), &len, sizeof(len)); in netlink_dump()
2881 const struct nlmsghdr *nlh, in __netlink_dump_start() argument
2923 cb->nlh = nlh; in __netlink_dump_start()
2953 void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err) in netlink_ack() argument
2965 payload += nlmsg_len(nlh); in netlink_ack()
2983 rep = __nlmsg_put(skb, NETLINK_CB(in_skb).portid, nlh->nlmsg_seq, in netlink_ack()
2987 memcpy(&errmsg->msg, nlh, payload > sizeof(*errmsg) ? nlh->nlmsg_len : sizeof(*nlh)); in netlink_ack()
2995 struct nlmsghdr *nlh; in netlink_rcv_skb() local
3001 nlh = nlmsg_hdr(skb); in netlink_rcv_skb()
3004 if (nlh->nlmsg_len < NLMSG_HDRLEN || skb->len < nlh->nlmsg_len) in netlink_rcv_skb()
3008 if (!(nlh->nlmsg_flags & NLM_F_REQUEST)) in netlink_rcv_skb()
3012 if (nlh->nlmsg_type < NLMSG_MIN_TYPE) in netlink_rcv_skb()
3015 err = cb(skb, nlh); in netlink_rcv_skb()
3020 if (nlh->nlmsg_flags & NLM_F_ACK || err) in netlink_rcv_skb()
3021 netlink_ack(skb, nlh, err); in netlink_rcv_skb()
3024 msglen = NLMSG_ALIGN(nlh->nlmsg_len); in netlink_rcv_skb()