> Does this patch help?

No, it doesn't. :-(

I've put in some printk statements to check, if ok_push ist set to zero. But 
it isn't: dmesg prints out: "set ok_push to one."

Any Ideas?

Frithjof

static int tcf_mirred_init(struct rtattr *rta, struct rtattr *est,
                           struct tc_action *a, int ovr, int bind)
{
        struct rtattr *tb[TCA_MIRRED_MAX];
        struct tc_mirred *parm;
        struct tcf_mirred *m;
        struct tcf_common *pc;
        struct net_device *dev = NULL;
        int ret = 0;
        int ok_push = 0;

        if (rta == NULL || rtattr_parse_nested(tb, TCA_MIRRED_MAX, rta) < 0)
                return -EINVAL;

        if (tb[TCA_MIRRED_PARMS-1] == NULL ||
            RTA_PAYLOAD(tb[TCA_MIRRED_PARMS-1]) < sizeof(*parm))
                return -EINVAL;
        parm = RTA_DATA(tb[TCA_MIRRED_PARMS-1]);
        if (parm->ifindex) {
                dev = __dev_get_by_index(parm->ifindex);
                if (dev == NULL)
                        return -ENODEV;
                switch (dev->type) {
                        case ARPHRD_TUNNEL:
                        case ARPHRD_TUNNEL6:
                        case ARPHRD_SIT:
                        case ARPHRD_IPGRE:
                        case ARPHRD_VOID:
                        case ARPHRD_NONE:
                        case ARPHRD_PPP:
                                ok_push = 0;
                                printk ("set ok_push to zero.\n");
                                break;
                        default:
                                ok_push = 1;
                                printk ("set ok_push to one.\n");
                                break;
                }
        }

_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

Reply via email to