]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/sched/cls_rsvp.h
[NET_SCHED]: Convert classifiers from rtnetlink to new netlink API
[linux-2.6-omap-h63xx.git] / net / sched / cls_rsvp.h
index 22f9ede70e8fb47dbf02b8900c1f1a146c5caa60..2364c79d083774ea5a08838a2ac4483d85859b29 100644 (file)
@@ -399,15 +399,15 @@ static u32 gen_tunnel(struct rsvp_head *data)
 
 static int rsvp_change(struct tcf_proto *tp, unsigned long base,
                       u32 handle,
-                      struct rtattr **tca,
+                      struct nlattr **tca,
                       unsigned long *arg)
 {
        struct rsvp_head *data = tp->root;
        struct rsvp_filter *f, **fp;
        struct rsvp_session *s, **sp;
        struct tc_rsvp_pinfo *pinfo = NULL;
-       struct rtattr *opt = tca[TCA_OPTIONS-1];
-       struct rtattr *tb[TCA_RSVP_MAX];
+       struct nlattr *opt = tca[TCA_OPTIONS-1];
+       struct nlattr *tb[TCA_RSVP_MAX + 1];
        struct tcf_exts e;
        unsigned h1, h2;
        __be32 *dst;
@@ -416,7 +416,7 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
        if (opt == NULL)
                return handle ? -EINVAL : 0;
 
-       if (rtattr_parse_nested(tb, TCA_RSVP_MAX, opt) < 0)
+       if (nla_parse_nested(tb, TCA_RSVP_MAX, opt, NULL) < 0)
                return -EINVAL;
 
        err = tcf_exts_validate(tp, tb, tca[TCA_RATE-1], &e, &rsvp_ext_map);
@@ -429,7 +429,7 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
                if (f->handle != handle && handle)
                        goto errout2;
                if (tb[TCA_RSVP_CLASSID-1]) {
-                       f->res.classid = *(u32*)RTA_DATA(tb[TCA_RSVP_CLASSID-1]);
+                       f->res.classid = *(u32*)nla_data(tb[TCA_RSVP_CLASSID-1]);
                        tcf_bind_filter(tp, &f->res, base);
                }
 
@@ -452,30 +452,30 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
        h2 = 16;
        if (tb[TCA_RSVP_SRC-1]) {
                err = -EINVAL;
-               if (RTA_PAYLOAD(tb[TCA_RSVP_SRC-1]) != sizeof(f->src))
+               if (nla_len(tb[TCA_RSVP_SRC-1]) != sizeof(f->src))
                        goto errout;
-               memcpy(f->src, RTA_DATA(tb[TCA_RSVP_SRC-1]), sizeof(f->src));
+               memcpy(f->src, nla_data(tb[TCA_RSVP_SRC-1]), sizeof(f->src));
                h2 = hash_src(f->src);
        }
        if (tb[TCA_RSVP_PINFO-1]) {
                err = -EINVAL;
-               if (RTA_PAYLOAD(tb[TCA_RSVP_PINFO-1]) < sizeof(struct tc_rsvp_pinfo))
+               if (nla_len(tb[TCA_RSVP_PINFO-1]) < sizeof(struct tc_rsvp_pinfo))
                        goto errout;
-               pinfo = RTA_DATA(tb[TCA_RSVP_PINFO-1]);
+               pinfo = nla_data(tb[TCA_RSVP_PINFO-1]);
                f->spi = pinfo->spi;
                f->tunnelhdr = pinfo->tunnelhdr;
        }
        if (tb[TCA_RSVP_CLASSID-1]) {
                err = -EINVAL;
-               if (RTA_PAYLOAD(tb[TCA_RSVP_CLASSID-1]) != 4)
+               if (nla_len(tb[TCA_RSVP_CLASSID-1]) != 4)
                        goto errout;
-               f->res.classid = *(u32*)RTA_DATA(tb[TCA_RSVP_CLASSID-1]);
+               f->res.classid = *(u32*)nla_data(tb[TCA_RSVP_CLASSID-1]);
        }
 
        err = -EINVAL;
-       if (RTA_PAYLOAD(tb[TCA_RSVP_DST-1]) != sizeof(f->src))
+       if (nla_len(tb[TCA_RSVP_DST-1]) != sizeof(f->src))
                goto errout;
-       dst = RTA_DATA(tb[TCA_RSVP_DST-1]);
+       dst = nla_data(tb[TCA_RSVP_DST-1]);
        h1 = hash_dst(dst, pinfo ? pinfo->protocol : 0, pinfo ? pinfo->tunnelid : 0);
 
        err = -ENOMEM;
@@ -594,7 +594,7 @@ static int rsvp_dump(struct tcf_proto *tp, unsigned long fh,
        struct rsvp_filter *f = (struct rsvp_filter*)fh;
        struct rsvp_session *s;
        unsigned char *b = skb_tail_pointer(skb);
-       struct rtattr *rta;
+       struct nlattr *nla;
        struct tc_rsvp_pinfo pinfo;
 
        if (f == NULL)
@@ -604,32 +604,32 @@ static int rsvp_dump(struct tcf_proto *tp, unsigned long fh,
        t->tcm_handle = f->handle;
 
 
-       rta = (struct rtattr*)b;
-       RTA_PUT(skb, TCA_OPTIONS, 0, NULL);
+       nla = (struct nlattr*)b;
+       NLA_PUT(skb, TCA_OPTIONS, 0, NULL);
 
-       RTA_PUT(skb, TCA_RSVP_DST, sizeof(s->dst), &s->dst);
+       NLA_PUT(skb, TCA_RSVP_DST, sizeof(s->dst), &s->dst);
        pinfo.dpi = s->dpi;
        pinfo.spi = f->spi;
        pinfo.protocol = s->protocol;
        pinfo.tunnelid = s->tunnelid;
        pinfo.tunnelhdr = f->tunnelhdr;
        pinfo.pad = 0;
-       RTA_PUT(skb, TCA_RSVP_PINFO, sizeof(pinfo), &pinfo);
+       NLA_PUT(skb, TCA_RSVP_PINFO, sizeof(pinfo), &pinfo);
        if (f->res.classid)
-               RTA_PUT(skb, TCA_RSVP_CLASSID, 4, &f->res.classid);
+               NLA_PUT(skb, TCA_RSVP_CLASSID, 4, &f->res.classid);
        if (((f->handle>>8)&0xFF) != 16)
-               RTA_PUT(skb, TCA_RSVP_SRC, sizeof(f->src), f->src);
+               NLA_PUT(skb, TCA_RSVP_SRC, sizeof(f->src), f->src);
 
        if (tcf_exts_dump(skb, &f->exts, &rsvp_ext_map) < 0)
-               goto rtattr_failure;
+               goto nla_put_failure;
 
-       rta->rta_len = skb_tail_pointer(skb) - b;
+       nla->nla_len = skb_tail_pointer(skb) - b;
 
        if (tcf_exts_dump_stats(skb, &f->exts, &rsvp_ext_map) < 0)
-               goto rtattr_failure;
+               goto nla_put_failure;
        return skb->len;
 
-rtattr_failure:
+nla_put_failure:
        nlmsg_trim(skb, b);
        return -1;
 }