Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /net/sched/act_pedit.c

Filename:/net/sched/act_pedit.c
Lines Added:18
Lines Deleted:11
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25  2.6.26-git7  2.6.26-git8  2.6.26-git9 

Location
[  2.6.25-rc7
  [  net
    [  sched
       o  act_pedit.c

Patch

diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c
index b46fab5..3cc4cb9 100644
--- a/net/sched/act_pedit.c
+++ b/net/sched/act_pedit.c
@@ -33,26 +33,33 @@ static struct tcf_hashinfo pedit_hash_info = {
    .lock   =   &pedit_lock,
 };
 
-static int tcf_pedit_init(struct rtattr *rta, struct rtattr *est,
+static const struct nla_policy pedit_policy[TCA_PEDIT_MAX + 1] = {
+   [TCA_PEDIT_PARMS]   = { .len = sizeof(struct tcf_pedit) },
+};
+
+static int tcf_pedit_init(struct nlattr *nla, struct nlattr *est,
            struct tc_action *a, int ovr, int bind)
 {
-   struct rtattr *tb[TCA_PEDIT_MAX];
+   struct nlattr *tb[TCA_PEDIT_MAX + 1];
    struct tc_pedit *parm;
-   int ret = 0;
+   int ret = 0, err;
    struct tcf_pedit *p;
    struct tcf_common *pc;
    struct tc_pedit_key *keys = NULL;
    int ksize;
 
-   if (rta == NULL || rtattr_parse_nested(tb, TCA_PEDIT_MAX, rta) < 0)
+   if (nla == NULL)
       return -EINVAL;
 
-   if (tb[TCA_PEDIT_PARMS - 1] == NULL ||
-       RTA_PAYLOAD(tb[TCA_PEDIT_PARMS-1]) < sizeof(*parm))
+   err = nla_parse_nested(tb, TCA_PEDIT_MAX, nla, pedit_policy);
+   if (err < 0)
+      return err;
+
+   if (tb[TCA_PEDIT_PARMS] == NULL)
       return -EINVAL;
-   parm = RTA_DATA(tb[TCA_PEDIT_PARMS-1]);
+   parm = nla_data(tb[TCA_PEDIT_PARMS]);
    ksize = parm->nkeys * sizeof(struct tc_pedit_key);
-   if (RTA_PAYLOAD(tb[TCA_PEDIT_PARMS-1]) < sizeof(*parm) + ksize)
+   if (nla_len(tb[TCA_PEDIT_PARMS]) < sizeof(*parm) + ksize)
       return -EINVAL;
 
    pc = tcf_hash_check(parm->index, a, bind, &pedit_hash_info);
@@ -206,15 +213,15 @@ static int tcf_pedit_dump(struct sk_buff *skb, struct tc_action *a,
    opt->refcnt = p->tcf_refcnt - ref;
    opt->bindcnt = p->tcf_bindcnt - bind;
 
-   RTA_PUT(skb, TCA_PEDIT_PARMS, s, opt);
+   NLA_PUT(skb, TCA_PEDIT_PARMS, s, opt);
    t.install = jiffies_to_clock_t(jiffies - p->tcf_tm.install);
    t.lastuse = jiffies_to_clock_t(jiffies - p->tcf_tm.lastuse);
    t.expires = jiffies_to_clock_t(p->tcf_tm.expires);
-   RTA_PUT(skb, TCA_PEDIT_TM, sizeof(t), &t);
+   NLA_PUT(skb, TCA_PEDIT_TM, sizeof(t), &t);
    kfree(opt);
    return skb->len;
 
-rtattr_failure:
+nla_put_failure:
    nlmsg_trim(skb, b);
    kfree(opt);
    return -1;


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.