Loading net/sched/sch_dsmark.c +24 −28 Original line number Original line Diff line number Diff line Loading @@ -431,47 +431,43 @@ static int dsmark_dump_class(struct Qdisc *sch, unsigned long cl, struct sk_buff *skb, struct tcmsg *tcm) struct sk_buff *skb, struct tcmsg *tcm) { { struct dsmark_qdisc_data *p = PRIV(sch); struct dsmark_qdisc_data *p = PRIV(sch); unsigned char *b = skb->tail; struct rtattr *opts = NULL; struct rtattr *rta; DPRINTK("dsmark_dump_class(sch %p,[qdisc %p],class %ld\n", sch, p, cl); DPRINTK("dsmark_dump_class(sch %p,[qdisc %p],class %ld\n", sch, p, cl); if (!cl || cl > p->indices) if (!dsmark_valid_index(p, cl)) return -EINVAL; return -EINVAL; tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl-1); tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl-1); rta = (struct rtattr *) b; RTA_PUT(skb,TCA_OPTIONS,0,NULL); opts = RTA_NEST(skb, TCA_OPTIONS); RTA_PUT(skb,TCA_DSMARK_MASK,1,&p->mask[cl-1]); RTA_PUT_U8(skb,TCA_DSMARK_MASK, p->mask[cl-1]); RTA_PUT(skb,TCA_DSMARK_VALUE,1,&p->value[cl-1]); RTA_PUT_U8(skb,TCA_DSMARK_VALUE, p->value[cl-1]); rta->rta_len = skb->tail-b; return skb->len; return RTA_NEST_END(skb, opts); rtattr_failure: rtattr_failure: skb_trim(skb,b-skb->data); return RTA_NEST_CANCEL(skb, opts); return -1; } } static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) { { struct dsmark_qdisc_data *p = PRIV(sch); struct dsmark_qdisc_data *p = PRIV(sch); unsigned char *b = skb->tail; struct rtattr *opts = NULL; struct rtattr *rta; rta = (struct rtattr *) b; opts = RTA_NEST(skb, TCA_OPTIONS); RTA_PUT(skb,TCA_OPTIONS,0,NULL); RTA_PUT_U16(skb, TCA_DSMARK_INDICES, p->indices); RTA_PUT(skb,TCA_DSMARK_INDICES,sizeof(__u16),&p->indices); if (p->default_index != NO_DEFAULT_INDEX) { if (p->default_index != NO_DEFAULT_INDEX) __u16 tmp = p->default_index; RTA_PUT_U16(skb, TCA_DSMARK_DEFAULT_INDEX, p->default_index); RTA_PUT(skb,TCA_DSMARK_DEFAULT_INDEX, sizeof(__u16), &tmp); } if (p->set_tc_index) if (p->set_tc_index) RTA_PUT(skb, TCA_DSMARK_SET_TC_INDEX, 0, NULL); RTA_PUT_FLAG(skb, TCA_DSMARK_SET_TC_INDEX); rta->rta_len = skb->tail-b; return skb->len; return RTA_NEST_END(skb, opts); rtattr_failure: rtattr_failure: skb_trim(skb,b-skb->data); return RTA_NEST_CANCEL(skb, opts); return -1; } } static struct Qdisc_class_ops dsmark_class_ops = { static struct Qdisc_class_ops dsmark_class_ops = { Loading Loading
net/sched/sch_dsmark.c +24 −28 Original line number Original line Diff line number Diff line Loading @@ -431,47 +431,43 @@ static int dsmark_dump_class(struct Qdisc *sch, unsigned long cl, struct sk_buff *skb, struct tcmsg *tcm) struct sk_buff *skb, struct tcmsg *tcm) { { struct dsmark_qdisc_data *p = PRIV(sch); struct dsmark_qdisc_data *p = PRIV(sch); unsigned char *b = skb->tail; struct rtattr *opts = NULL; struct rtattr *rta; DPRINTK("dsmark_dump_class(sch %p,[qdisc %p],class %ld\n", sch, p, cl); DPRINTK("dsmark_dump_class(sch %p,[qdisc %p],class %ld\n", sch, p, cl); if (!cl || cl > p->indices) if (!dsmark_valid_index(p, cl)) return -EINVAL; return -EINVAL; tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl-1); tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl-1); rta = (struct rtattr *) b; RTA_PUT(skb,TCA_OPTIONS,0,NULL); opts = RTA_NEST(skb, TCA_OPTIONS); RTA_PUT(skb,TCA_DSMARK_MASK,1,&p->mask[cl-1]); RTA_PUT_U8(skb,TCA_DSMARK_MASK, p->mask[cl-1]); RTA_PUT(skb,TCA_DSMARK_VALUE,1,&p->value[cl-1]); RTA_PUT_U8(skb,TCA_DSMARK_VALUE, p->value[cl-1]); rta->rta_len = skb->tail-b; return skb->len; return RTA_NEST_END(skb, opts); rtattr_failure: rtattr_failure: skb_trim(skb,b-skb->data); return RTA_NEST_CANCEL(skb, opts); return -1; } } static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) { { struct dsmark_qdisc_data *p = PRIV(sch); struct dsmark_qdisc_data *p = PRIV(sch); unsigned char *b = skb->tail; struct rtattr *opts = NULL; struct rtattr *rta; rta = (struct rtattr *) b; opts = RTA_NEST(skb, TCA_OPTIONS); RTA_PUT(skb,TCA_OPTIONS,0,NULL); RTA_PUT_U16(skb, TCA_DSMARK_INDICES, p->indices); RTA_PUT(skb,TCA_DSMARK_INDICES,sizeof(__u16),&p->indices); if (p->default_index != NO_DEFAULT_INDEX) { if (p->default_index != NO_DEFAULT_INDEX) __u16 tmp = p->default_index; RTA_PUT_U16(skb, TCA_DSMARK_DEFAULT_INDEX, p->default_index); RTA_PUT(skb,TCA_DSMARK_DEFAULT_INDEX, sizeof(__u16), &tmp); } if (p->set_tc_index) if (p->set_tc_index) RTA_PUT(skb, TCA_DSMARK_SET_TC_INDEX, 0, NULL); RTA_PUT_FLAG(skb, TCA_DSMARK_SET_TC_INDEX); rta->rta_len = skb->tail-b; return skb->len; return RTA_NEST_END(skb, opts); rtattr_failure: rtattr_failure: skb_trim(skb,b-skb->data); return RTA_NEST_CANCEL(skb, opts); return -1; } } static struct Qdisc_class_ops dsmark_class_ops = { static struct Qdisc_class_ops dsmark_class_ops = { Loading