]> granicus.if.org Git - libnl/commitdiff
nl: add "const" specifier for nla_policy argument of parse functions
authorThomas Haller <thaller@redhat.com>
Mon, 9 Oct 2017 11:46:44 +0000 (13:46 +0200)
committerThomas Haller <thaller@redhat.com>
Mon, 9 Oct 2017 11:51:29 +0000 (13:51 +0200)
Adding const to a function argument is generally not an API break
(at least, if the argument is a struct, like in this case).

Usually we declare the policy as static variables. The user should
be able to mark them as "const", so that the linker makes the policy
array read-only. Adjust the API to allow for that.

Signed-off-by: Thomas Haller <thaller@redhat.com>
include/netlink-private/tc.h
include/netlink/attr.h
include/netlink/genl/genl.h
include/netlink/msg.h
lib/attr.c
lib/genl/genl.c
lib/msg.c
lib/route/tc.c

index d0cb283c0688363676082007e0cff5c2bbc64f40..939cd182f7e5447daf475c71c0f2775554142a14 100644 (file)
@@ -35,7 +35,7 @@ extern "C" {
 #define TCA_ATTR_MAX           TCA_ATTR_LINKTYPE
 
 extern int tca_parse(struct nlattr **, int, struct rtnl_tc *,
-                    struct nla_policy *);
+                     const struct nla_policy *);
 
 #define RTNL_TC_RTABLE_SIZE    256
 
index 2157fe174b0d4c67e5f59d6c7922ff115fa22e4f..da9eee4e7d1edc4d2499923be1c377aad13622bc 100644 (file)
@@ -89,7 +89,7 @@ extern int            nla_len(const struct nlattr *);
 extern int             nla_ok(const struct nlattr *, int);
 extern struct nlattr * nla_next(const struct nlattr *, int *);
 extern int             nla_parse(struct nlattr **, int, struct nlattr *,
-                                 int, struct nla_policy *);
+                                 int, const struct nla_policy *);
 extern int             nla_validate(const struct nlattr *, int, int,
                                     const struct nla_policy *);
 extern struct nlattr * nla_find(const struct nlattr *, int, int);
@@ -145,7 +145,7 @@ extern struct nlattr *      nla_nest_start(struct nl_msg *, int);
 extern int             nla_nest_end(struct nl_msg *, struct nlattr *);
 extern void            nla_nest_cancel(struct nl_msg *, const struct nlattr *);
 extern int             nla_parse_nested(struct nlattr **, int, struct nlattr *,
-                                        struct nla_policy *);
+                                        const struct nla_policy *);
 extern int             nla_is_nested(const struct nlattr *);
 
 /**
index e455581b40a71938d8a0a1693dc35c24b8c84af6..c4ac137df1ad608c3d39b4fc6c34181f873329a8 100644 (file)
@@ -29,9 +29,9 @@ extern void *         genlmsg_put(struct nl_msg *, uint32_t, uint32_t,
 
 extern int             genlmsg_valid_hdr(struct nlmsghdr *, int);
 extern int             genlmsg_validate(struct nlmsghdr *, int, int,
-                                        struct nla_policy *);
+                                        const struct nla_policy *);
 extern int             genlmsg_parse(struct nlmsghdr *, int, struct nlattr **,
-                                     int, struct nla_policy *);
+                                     int, const struct nla_policy *);
 extern struct genlmsghdr *
                        genlmsg_hdr(struct nlmsghdr *);
 extern void *          genlmsg_data(const struct genlmsghdr *);
index 5aee97d311bf019efa7d0c58772a309a075850e4..51d9aebc03ece02ffdf51fbebb7225140f357ac4 100644 (file)
@@ -66,10 +66,10 @@ extern int            nlmsg_valid_hdr(const struct nlmsghdr *, int);
 extern int               nlmsg_ok(const struct nlmsghdr *, int);
 extern struct nlmsghdr *  nlmsg_next(struct nlmsghdr *, int *);
 extern int               nlmsg_parse(struct nlmsghdr *, int, struct nlattr **,
-                                     int, struct nla_policy *);
+                                     int, const struct nla_policy *);
 extern struct nlattr *   nlmsg_find_attr(struct nlmsghdr *, int, int);
 extern int               nlmsg_validate(struct nlmsghdr *, int, int,
-                                        struct nla_policy *);
+                                        const struct nla_policy *);
 
 extern struct nl_msg *   nlmsg_alloc(void);
 extern struct nl_msg *   nlmsg_alloc_size(size_t);
index 0dca3ecf675d2fe124b9a57b212bf7eeda3e90d0..b81e550b4cd84dca3487e10f47c0fec7b87e6d53 100644 (file)
@@ -240,7 +240,7 @@ static int validate_nla(const struct nlattr *nla, int maxtype,
  * @return 0 on success or a negative error code.
  */
 int nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, int len,
-             struct nla_policy *policy)
+             const struct nla_policy *policy)
 {
        struct nlattr *nla;
        int rem, err;
@@ -997,7 +997,7 @@ void nla_nest_cancel(struct nl_msg *msg, const struct nlattr *attr)
  * @return 0 on success or a negative error code.
  */
 int nla_parse_nested(struct nlattr *tb[], int maxtype, struct nlattr *nla,
-                    struct nla_policy *policy)
+                    const struct nla_policy *policy)
 {
        return nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy);
 }
index a663ad83228aefe96aa029e1854a4a123638b428..c79fd2418a5dc1d9becedd4d75bbd3a4df83467f 100644 (file)
@@ -150,7 +150,7 @@ int genlmsg_valid_hdr(struct nlmsghdr *nlh, int hdrlen)
  * @return 0 on success or a negative error code.
  */
 int genlmsg_validate(struct nlmsghdr *nlh, int hdrlen, int maxtype,
-                    struct nla_policy *policy)
+                    const struct nla_policy *policy)
 {
        struct genlmsghdr *ghdr;
 
@@ -190,7 +190,7 @@ int genlmsg_validate(struct nlmsghdr *nlh, int hdrlen, int maxtype,
  * @return 0 on success or a negative error code.
  */
 int genlmsg_parse(struct nlmsghdr *nlh, int hdrlen, struct nlattr *tb[],
-                 int maxtype, struct nla_policy *policy)
+                 int maxtype, const struct nla_policy *policy)
 {
        struct genlmsghdr *ghdr;
 
index 3e27d4e0be71300a06a98e3751bc3ce62ae37716..0a523405a42e25b6626c81f605307205bfe0247b 100644 (file)
--- a/lib/msg.c
+++ b/lib/msg.c
@@ -212,7 +212,7 @@ struct nlmsghdr *nlmsg_next(struct nlmsghdr *nlh, int *remaining)
  * See nla_parse()
  */
 int nlmsg_parse(struct nlmsghdr *nlh, int hdrlen, struct nlattr *tb[],
-               int maxtype, struct nla_policy *policy)
+               int maxtype, const struct nla_policy *policy)
 {
        if (!nlmsg_valid_hdr(nlh, hdrlen))
                return -NLE_MSG_TOOSHORT;
@@ -243,7 +243,7 @@ struct nlattr *nlmsg_find_attr(struct nlmsghdr *nlh, int hdrlen, int attrtype)
  * @arg policy         validation policy
  */
 int nlmsg_validate(struct nlmsghdr *nlh, int hdrlen, int maxtype,
-                  struct nla_policy *policy)
+                  const struct nla_policy *policy)
 {
        if (!nlmsg_valid_hdr(nlh, hdrlen))
                return -NLE_MSG_TOOSHORT;
index f5b23f0fbc7471068e48519419cc1a23ee0ab58d..5dc43e175f06617bd581050c467fb3d1fbe27a51 100644 (file)
@@ -37,7 +37,7 @@ static struct nla_policy tc_policy[TCA_MAX+1] = {
 };
 
 int tca_parse(struct nlattr **tb, int maxattr, struct rtnl_tc *g,
-             struct nla_policy *policy)
+             const struct nla_policy *policy)
 {
        
        if (g->ce_mask & TCA_ATTR_OPTS)