]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - lib/nlattr.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
[linux-2.6.git] / lib / nlattr.c
index 80009a24e21dd553a6204310b083ccd5e8bf6cf3..c4706eb98d3dfc922ec19fdbb0c23a36fab47a58 100644 (file)
@@ -132,6 +132,32 @@ errout:
        return err;
 }
 
+/**
+ * nla_policy_len - Determin the max. length of a policy
+ * @policy: policy to use
+ * @n: number of policies
+ *
+ * Determines the max. length of the policy.  It is currently used
+ * to allocated Netlink buffers roughly the size of the actual
+ * message.
+ *
+ * Returns 0 on success or a negative error code.
+ */
+int
+nla_policy_len(const struct nla_policy *p, int n)
+{
+       int i, len = 0;
+
+       for (i = 0; i < n; i++) {
+               if (p->len)
+                       len += nla_total_size(p->len);
+               else if (nla_attr_minlen[p->type])
+                       len += nla_total_size(nla_attr_minlen[p->type]);
+       }
+
+       return len;
+}
+
 /**
  * nla_parse - Parse a stream of attributes into a tb buffer
  * @tb: destination array with maxtype+1 elements
@@ -467,6 +493,7 @@ EXPORT_SYMBOL(nla_append);
 #endif
 
 EXPORT_SYMBOL(nla_validate);
+EXPORT_SYMBOL(nla_policy_len);
 EXPORT_SYMBOL(nla_parse);
 EXPORT_SYMBOL(nla_find);
 EXPORT_SYMBOL(nla_strlcpy);