Lines Matching refs:nla
24 static struct nlattr *nla_next(const struct nlattr *nla, int *remaining) in nla_next() argument
26 int totlen = NLA_ALIGN(nla->nla_len); in nla_next()
29 return (struct nlattr *) ((char *) nla + totlen); in nla_next()
32 static int nla_ok(const struct nlattr *nla, int remaining) in nla_ok() argument
34 return remaining >= sizeof(*nla) && in nla_ok()
35 nla->nla_len >= sizeof(*nla) && in nla_ok()
36 nla->nla_len <= remaining; in nla_ok()
39 static int nla_type(const struct nlattr *nla) in nla_type() argument
41 return nla->nla_type & NLA_TYPE_MASK; in nla_type()
44 static int validate_nla(struct nlattr *nla, int maxtype, in validate_nla() argument
49 int type = nla_type(nla); in validate_nla()
64 if (libbpf_nla_len(nla) < minlen) in validate_nla()
67 if (pt->maxlen && libbpf_nla_len(nla) > pt->maxlen) in validate_nla()
71 char *data = libbpf_nla_data(nla); in validate_nla()
73 if (data[libbpf_nla_len(nla) - 1] != '\0') in validate_nla()
106 struct nlattr *nla; in libbpf_nla_parse() local
111 libbpf_nla_for_each_attr(nla, head, len, rem) { in libbpf_nla_parse()
112 int type = nla_type(nla); in libbpf_nla_parse()
118 err = validate_nla(nla, maxtype, policy); in libbpf_nla_parse()
127 tb[type] = nla; in libbpf_nla_parse()
149 struct nlattr *nla, in libbpf_nla_parse_nested() argument
152 return libbpf_nla_parse(tb, maxtype, libbpf_nla_data(nla), in libbpf_nla_parse_nested()
153 libbpf_nla_len(nla), policy); in libbpf_nla_parse_nested()