|
@@ -425,7 +425,7 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
|
|
|
struct rsvp_filter *f, **fp;
|
|
|
struct rsvp_session *s, **sp;
|
|
|
struct tc_rsvp_pinfo *pinfo = NULL;
|
|
|
- struct nlattr *opt = tca[TCA_OPTIONS-1];
|
|
|
+ struct nlattr *opt = tca[TCA_OPTIONS];
|
|
|
struct nlattr *tb[TCA_RSVP_MAX + 1];
|
|
|
struct tcf_exts e;
|
|
|
unsigned int h1, h2;
|
|
@@ -439,7 +439,7 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
|
|
|
- err = tcf_exts_validate(tp, tb, tca[TCA_RATE-1], &e, &rsvp_ext_map);
|
|
|
+ err = tcf_exts_validate(tp, tb, tca[TCA_RATE], &e, &rsvp_ext_map);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
|
|
@@ -449,8 +449,8 @@ 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 = nla_get_u32(tb[TCA_RSVP_CLASSID-1]);
|
|
|
+ if (tb[TCA_RSVP_CLASSID]) {
|
|
|
+ f->res.classid = nla_get_u32(tb[TCA_RSVP_CLASSID]);
|
|
|
tcf_bind_filter(tp, &f->res, base);
|
|
|
}
|
|
|
|
|
@@ -462,7 +462,7 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
|
|
|
err = -EINVAL;
|
|
|
if (handle)
|
|
|
goto errout2;
|
|
|
- if (tb[TCA_RSVP_DST-1] == NULL)
|
|
|
+ if (tb[TCA_RSVP_DST] == NULL)
|
|
|
goto errout2;
|
|
|
|
|
|
err = -ENOBUFS;
|
|
@@ -471,19 +471,19 @@ static int rsvp_change(struct tcf_proto *tp, unsigned long base,
|
|
|
goto errout2;
|
|
|
|
|
|
h2 = 16;
|
|
|
- if (tb[TCA_RSVP_SRC-1]) {
|
|
|
- memcpy(f->src, nla_data(tb[TCA_RSVP_SRC-1]), sizeof(f->src));
|
|
|
+ if (tb[TCA_RSVP_SRC]) {
|
|
|
+ memcpy(f->src, nla_data(tb[TCA_RSVP_SRC]), sizeof(f->src));
|
|
|
h2 = hash_src(f->src);
|
|
|
}
|
|
|
- if (tb[TCA_RSVP_PINFO-1]) {
|
|
|
- pinfo = nla_data(tb[TCA_RSVP_PINFO-1]);
|
|
|
+ if (tb[TCA_RSVP_PINFO]) {
|
|
|
+ pinfo = nla_data(tb[TCA_RSVP_PINFO]);
|
|
|
f->spi = pinfo->spi;
|
|
|
f->tunnelhdr = pinfo->tunnelhdr;
|
|
|
}
|
|
|
- if (tb[TCA_RSVP_CLASSID-1])
|
|
|
- f->res.classid = nla_get_u32(tb[TCA_RSVP_CLASSID-1]);
|
|
|
+ if (tb[TCA_RSVP_CLASSID])
|
|
|
+ f->res.classid = nla_get_u32(tb[TCA_RSVP_CLASSID]);
|
|
|
|
|
|
- dst = nla_data(tb[TCA_RSVP_DST-1]);
|
|
|
+ dst = nla_data(tb[TCA_RSVP_DST]);
|
|
|
h1 = hash_dst(dst, pinfo ? pinfo->protocol : 0, pinfo ? pinfo->tunnelid : 0);
|
|
|
|
|
|
err = -ENOMEM;
|
|
@@ -642,8 +642,7 @@ nla_put_failure:
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
-static struct tcf_proto_ops RSVP_OPS = {
|
|
|
- .next = NULL,
|
|
|
+static struct tcf_proto_ops RSVP_OPS __read_mostly = {
|
|
|
.kind = RSVP_ID,
|
|
|
.classify = rsvp_classify,
|
|
|
.init = rsvp_init,
|