Lines Matching refs:nla
47 static int validate_nla_bitfield32(const struct nlattr *nla, in validate_nla_bitfield32() argument
50 const struct nla_bitfield32 *bf = nla_data(nla); in validate_nla_bitfield32()
100 const struct nlattr *nla, in nla_validate_int_range() argument
113 value = nla_get_u8(nla); in nla_validate_int_range()
116 value = nla_get_u16(nla); in nla_validate_int_range()
119 value = nla_get_u32(nla); in nla_validate_int_range()
122 value = nla_get_s8(nla); in nla_validate_int_range()
125 value = nla_get_s16(nla); in nla_validate_int_range()
128 value = nla_get_s32(nla); in nla_validate_int_range()
131 value = nla_get_s64(nla); in nla_validate_int_range()
135 if ((validate_min && nla_get_u64(nla) < pt->min) || in nla_validate_int_range()
136 (validate_max && nla_get_u64(nla) > pt->max)) { in nla_validate_int_range()
137 NL_SET_ERR_MSG_ATTR(extack, nla, in nla_validate_int_range()
149 NL_SET_ERR_MSG_ATTR(extack, nla, in nla_validate_int_range()
157 static int validate_nla(const struct nlattr *nla, int maxtype, in validate_nla() argument
163 int minlen = 0, attrlen = nla_len(nla), type = nla_type(nla); in validate_nla()
181 NL_SET_ERR_MSG_ATTR(extack, nla, in validate_nla()
189 !(nla->nla_type & NLA_F_NESTED)) { in validate_nla()
190 NL_SET_ERR_MSG_ATTR(extack, nla, in validate_nla()
195 pt->type != NLA_UNSPEC && (nla->nla_type & NLA_F_NESTED)) { in validate_nla()
196 NL_SET_ERR_MSG_ATTR(extack, nla, in validate_nla()
210 NL_SET_BAD_ATTR(extack, nla); in validate_nla()
226 err = validate_nla_bitfield32(nla, pt->validation_data); in validate_nla()
237 if (!minlen || memchr(nla_data(nla), '\0', minlen) == NULL) { in validate_nla()
248 char *buf = nla_data(nla); in validate_nla()
272 err = __nla_validate(nla_data(nla), nla_len(nla), pt->len, in validate_nla()
295 err = nla_validate_array(nla_data(nla), nla_len(nla), in validate_nla()
310 NL_SET_ERR_MSG_ATTR(extack, nla, in validate_nla()
338 err = nla_validate_int_range(pt, nla, extack); in validate_nla()
344 err = pt->validate(nla, extack); in validate_nla()
353 NL_SET_ERR_MSG_ATTR(extack, nla, "Attribute failed policy validation"); in validate_nla()
363 const struct nlattr *nla; in __nla_validate_parse() local
369 nla_for_each_attr(nla, head, len, rem) { in __nla_validate_parse()
370 u16 type = nla_type(nla); in __nla_validate_parse()
374 NL_SET_ERR_MSG_ATTR(extack, nla, in __nla_validate_parse()
381 int err = validate_nla(nla, maxtype, policy, in __nla_validate_parse()
389 tb[type] = (struct nlattr *)nla; in __nla_validate_parse()
493 const struct nlattr *nla; in nla_find() local
496 nla_for_each_attr(nla, head, len, rem) in nla_find()
497 if (nla_type(nla) == attrtype) in nla_find()
498 return (struct nlattr *)nla; in nla_find()
516 size_t nla_strlcpy(char *dst, const struct nlattr *nla, size_t dstsize) in nla_strlcpy() argument
518 size_t srclen = nla_len(nla); in nla_strlcpy()
519 char *src = nla_data(nla); in nla_strlcpy()
542 char *nla_strdup(const struct nlattr *nla, gfp_t flags) in nla_strdup() argument
544 size_t srclen = nla_len(nla); in nla_strdup()
545 char *src = nla_data(nla), *dst; in nla_strdup()
588 int nla_memcmp(const struct nlattr *nla, const void *data, in nla_memcmp() argument
591 int d = nla_len(nla) - size; in nla_memcmp()
594 d = memcmp(nla_data(nla), data, size); in nla_memcmp()
605 int nla_strcmp(const struct nlattr *nla, const char *str) in nla_strcmp() argument
608 char *buf = nla_data(nla); in nla_strcmp()
609 int attrlen = nla_len(nla); in nla_strcmp()
617 d = memcmp(nla_data(nla), str, len); in nla_strcmp()
638 struct nlattr *nla; in __nla_reserve() local
640 nla = skb_put(skb, nla_total_size(attrlen)); in __nla_reserve()
641 nla->nla_type = attrtype; in __nla_reserve()
642 nla->nla_len = nla_attr_size(attrlen); in __nla_reserve()
644 memset((unsigned char *) nla + nla->nla_len, 0, nla_padlen(attrlen)); in __nla_reserve()
646 return nla; in __nla_reserve()
773 struct nlattr *nla; in __nla_put() local
775 nla = __nla_reserve(skb, attrtype, attrlen); in __nla_put()
776 memcpy(nla_data(nla), data, attrlen); in __nla_put()
794 struct nlattr *nla; in __nla_put_64bit() local
796 nla = __nla_reserve_64bit(skb, attrtype, attrlen, padattr); in __nla_put_64bit()
797 memcpy(nla_data(nla), data, attrlen); in __nla_put_64bit()