aboutsummaryrefslogtreecommitdiffstats
path: root/lib/nlattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/nlattr.c')
-rw-r--r--lib/nlattr.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/nlattr.c b/lib/nlattr.c
index 80009a24e21d..c4706eb98d3d 100644
--- a/lib/nlattr.c
+++ b/lib/nlattr.c
@@ -133,6 +133,32 @@ errout:
133} 133}
134 134
135/** 135/**
136 * nla_policy_len - Determin the max. length of a policy
137 * @policy: policy to use
138 * @n: number of policies
139 *
140 * Determines the max. length of the policy. It is currently used
141 * to allocated Netlink buffers roughly the size of the actual
142 * message.
143 *
144 * Returns 0 on success or a negative error code.
145 */
146int
147nla_policy_len(const struct nla_policy *p, int n)
148{
149 int i, len = 0;
150
151 for (i = 0; i < n; i++) {
152 if (p->len)
153 len += nla_total_size(p->len);
154 else if (nla_attr_minlen[p->type])
155 len += nla_total_size(nla_attr_minlen[p->type]);
156 }
157
158 return len;
159}
160
161/**
136 * nla_parse - Parse a stream of attributes into a tb buffer 162 * nla_parse - Parse a stream of attributes into a tb buffer
137 * @tb: destination array with maxtype+1 elements 163 * @tb: destination array with maxtype+1 elements
138 * @maxtype: maximum attribute type to be expected 164 * @maxtype: maximum attribute type to be expected
@@ -467,6 +493,7 @@ EXPORT_SYMBOL(nla_append);
467#endif 493#endif
468 494
469EXPORT_SYMBOL(nla_validate); 495EXPORT_SYMBOL(nla_validate);
496EXPORT_SYMBOL(nla_policy_len);
470EXPORT_SYMBOL(nla_parse); 497EXPORT_SYMBOL(nla_parse);
471EXPORT_SYMBOL(nla_find); 498EXPORT_SYMBOL(nla_find);
472EXPORT_SYMBOL(nla_strlcpy); 499EXPORT_SYMBOL(nla_strlcpy);