Lines Matching refs:nlh

139 ynl_ext_ack_check(struct ynl_sock *ys, const struct nlmsghdr *nlh,
148 if (!(nlh->nlmsg_flags & NLM_F_ACK_TLVS))
151 mnl_attr_for_each(attr, nlh, hlen) {
191 start = mnl_nlmsg_get_payload_offset(ys->nlh,
193 end = mnl_nlmsg_get_payload_tail(ys->nlh);
217 start = mnl_nlmsg_get_payload_offset(ys->nlh,
219 end = mnl_nlmsg_get_payload_tail(ys->nlh);
256 static int ynl_cb_error(const struct nlmsghdr *nlh, void *data)
258 const struct nlmsgerr *err = mnl_nlmsg_get_payload(nlh);
268 if (!(nlh->nlmsg_flags & NLM_F_CAPPED))
271 ynl_ext_ack_check(yarg->ys, nlh, hlen);
276 static int ynl_cb_done(const struct nlmsghdr *nlh, void *data)
281 err = *(int *)NLMSG_DATA(nlh);
286 ynl_ext_ack_check(yarg->ys, nlh, sizeof(int));
293 static int ynl_cb_noop(const struct nlmsghdr *nlh, void *data)
396 struct nlmsghdr *nlh;
400 nlh = ys->nlh = mnl_nlmsg_put_header(ys->tx_buf);
401 nlh->nlmsg_type = id;
402 nlh->nlmsg_flags = flags;
403 nlh->nlmsg_seq = ++ys->seq;
405 return nlh;
413 struct nlmsghdr *nlh;
416 nlh = ynl_msg_start(ys, id, flags);
422 data = mnl_nlmsg_put_extra_header(nlh, sizeof(gehdr));
425 return nlh;
470 int ynl_cb_null(const struct nlmsghdr *nlh, void *data)
516 static int ynl_get_family_info_cb(const struct nlmsghdr *nlh, void *data)
523 mnl_attr_for_each(attr, nlh, sizeof(struct genlmsghdr)) {
550 struct nlmsghdr *nlh;
553 nlh = ynl_gemsg_start_req(ys, GENL_ID_CTRL, CTRL_CMD_GETFAMILY, 1);
554 mnl_attr_put_strz(nlh, CTRL_ATTR_FAMILY_NAME, family_name);
556 err = mnl_socket_sendto(ys->sock, nlh, nlh->nlmsg_len);
698 static int ynl_ntf_parse(struct ynl_sock *ys, const struct nlmsghdr *nlh)
706 gehdr = mnl_nlmsg_get_payload(nlh);
718 ret = info->cb(nlh, &yarg);
722 rsp->family = nlh->nlmsg_type;
735 static int ynl_ntf_trampoline(const struct nlmsghdr *nlh, void *data)
739 return ynl_ntf_parse(yarg->ys, nlh);
792 ynl_check_alien(struct ynl_sock *ys, const struct nlmsghdr *nlh, __u32 rsp_cmd)
796 if (mnl_nlmsg_get_payload_len(nlh) < sizeof(*gehdr)) {
802 gehdr = mnl_nlmsg_get_payload(nlh);
804 return ynl_ntf_parse(ys, nlh);
809 static int ynl_req_trampoline(const struct nlmsghdr *nlh, void *data)
814 ret = ynl_check_alien(yrs->yarg.ys, nlh, yrs->rsp_cmd);
818 return yrs->cb(nlh, &yrs->yarg);
847 static int ynl_dump_trampoline(const struct nlmsghdr *nlh, void *data)
854 ret = ynl_check_alien(ds->ys, nlh, ds->rsp_cmd);
872 return ds->cb(nlh, &yarg);