Lines Matching refs:nla
29 static int nla_len(const struct nlattr *nla) in nla_len() argument
31 return nla->nla_len - NLA_HDRLEN; in nla_len()
34 static struct nlattr *nla_next(const struct nlattr *nla, int *remaining) in nla_next() argument
36 int totlen = NLA_ALIGN(nla->nla_len); in nla_next()
39 return (struct nlattr *) ((char *) nla + totlen); in nla_next()
42 static int nla_ok(const struct nlattr *nla, int remaining) in nla_ok() argument
44 return remaining >= sizeof(*nla) && in nla_ok()
45 nla->nla_len >= sizeof(*nla) && in nla_ok()
46 nla->nla_len <= remaining; in nla_ok()
49 static void *nla_data(const struct nlattr *nla) in nla_data() argument
51 return (char *) nla + NLA_HDRLEN; in nla_data()
54 static int nla_type(const struct nlattr *nla) in nla_type() argument
56 return nla->nla_type & NLA_TYPE_MASK; in nla_type()
59 static int validate_nla(struct nlattr *nla, int maxtype, in validate_nla() argument
64 int type = nla_type(nla); in validate_nla()
79 if (nla_len(nla) < minlen) in validate_nla()
82 if (pt->maxlen && nla_len(nla) > pt->maxlen) in validate_nla()
86 char *data = nla_data(nla); in validate_nla()
87 if (data[nla_len(nla) - 1] != '\0') in validate_nla()
120 struct nlattr *nla; in nla_parse() local
125 nla_for_each_attr(nla, head, len, rem) { in nla_parse()
126 int type = nla_type(nla); in nla_parse()
132 err = validate_nla(nla, maxtype, policy); in nla_parse()
141 tb[type] = nla; in nla_parse()