Lines Matching refs:nla

66 static int validate_nla_bitfield32(const struct nlattr *nla,
69 const struct nla_bitfield32 *bf = nla_data(nla);
170 const struct nlattr *nla,
179 value = nla_get_u8(nla);
182 value = nla_get_u16(nla);
185 value = nla_get_u32(nla);
188 value = nla_get_u64(nla);
191 value = nla_get_u64(nla);
194 value = nla_len(nla);
197 value = ntohs(nla_get_be16(nla));
200 value = ntohl(nla_get_be32(nla));
213 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
226 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
229 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
283 const struct nlattr *nla,
291 value = nla_get_s8(nla);
294 value = nla_get_s16(nla);
297 value = nla_get_s32(nla);
300 value = nla_get_s64(nla);
309 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
318 const struct nlattr *nla,
331 return nla_validate_range_unsigned(pt, nla, extack, validate);
336 return nla_validate_int_range_signed(pt, nla, extack);
344 const struct nlattr *nla,
351 value = nla_get_u8(nla);
354 value = nla_get_u16(nla);
357 value = nla_get_u32(nla);
360 value = nla_get_u64(nla);
363 value = ntohs(nla_get_be16(nla));
366 value = ntohl(nla_get_be32(nla));
373 NL_SET_ERR_MSG_ATTR(extack, nla, "reserved bit set");
380 static int validate_nla(const struct nlattr *nla, int maxtype,
386 int minlen = 0, attrlen = nla_len(nla), type = nla_type(nla);
404 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
412 !(nla->nla_type & NLA_F_NESTED)) {
413 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
418 pt->type != NLA_UNSPEC && (nla->nla_type & NLA_F_NESTED)) {
419 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
428 NL_SET_BAD_ATTR(extack, nla);
444 err = validate_nla_bitfield32(nla, pt->bitfield32_valid);
455 if (!minlen || memchr(nla_data(nla), '\0', minlen) == NULL) {
466 char *buf = nla_data(nla);
490 err = __nla_validate_parse(nla_data(nla), nla_len(nla),
514 err = nla_validate_array(nla_data(nla), nla_len(nla),
529 NL_SET_ERR_MSG_ATTR(extack, nla,
557 err = nla_validate_int_range(pt, nla, extack, validate);
562 err = nla_validate_mask(pt, nla, extack);
568 err = pt->validate(nla, extack);
577 NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
588 const struct nlattr *nla;
600 nla_for_each_attr(nla, head, len, rem) {
601 u16 type = nla_type(nla);
605 NL_SET_ERR_MSG_ATTR(extack, nla,
613 int err = validate_nla(nla, maxtype, policy,
621 tb[type] = (struct nlattr *)nla;
725 const struct nlattr *nla;
728 nla_for_each_attr(nla, head, len, rem)
729 if (nla_type(nla) == attrtype)
730 return (struct nlattr *)nla;
739 * @nla: Attribute to copy the string from.
746 * * srclen - Returns @nla length (not including the trailing %NUL).
747 * * -E2BIG - If @dstsize is 0 or greater than U16_MAX or @nla length greater
750 ssize_t nla_strscpy(char *dst, const struct nlattr *nla, size_t dstsize)
752 size_t srclen = nla_len(nla);
753 char *src = nla_data(nla);
781 * @nla: attribute to copy the string from
786 char *nla_strdup(const struct nlattr *nla, gfp_t flags)
788 size_t srclen = nla_len(nla);
789 char *src = nla_data(nla), *dst;
828 * @nla: netlink attribute
832 int nla_memcmp(const struct nlattr *nla, const void *data,
835 int d = nla_len(nla) - size;
838 d = memcmp(nla_data(nla), data, size);
846 * @nla: netlink string attribute
849 int nla_strcmp(const struct nlattr *nla, const char *str)
852 char *buf = nla_data(nla);
853 int attrlen = nla_len(nla);
861 d = memcmp(nla_data(nla), str, len);
882 struct nlattr *nla;
884 nla = skb_put(skb, nla_total_size(attrlen));
885 nla->nla_type = attrtype;
886 nla->nla_len = nla_attr_size(attrlen);
888 memset((unsigned char *) nla + nla->nla_len, 0, nla_padlen(attrlen));
890 return nla;
1016 struct nlattr *nla;
1018 nla = __nla_reserve(skb, attrtype, attrlen);
1019 memcpy(nla_data(nla), data, attrlen);
1037 struct nlattr *nla;
1039 nla = __nla_reserve_64bit(skb, attrtype, attrlen, padattr);
1040 memcpy(nla_data(nla), data, attrlen);