From: Denys Fedoryshchenko <denys@visp.net.lb>
To: Patrick McHardy <kaber@trash.net>
Cc: netdev@vger.kernel.org,
Stephen Hemminger <shemminger@linux-foundation.org>
Subject: Re: iproute2 / match / meta bug?
Date: Tue, 29 Jul 2008 09:35:50 +0300 [thread overview]
Message-ID: <200807290935.50100.denys@visp.net.lb> (raw)
In-Reply-To: <200807290925.46731.denys@visp.net.lb>
Yes, there is typo seems, i check git also, bug is there.
No idea how it works with you :-\ Maybe on your arch ULONG_MAX == LONG_MAX
So at least patch looks like: (maybe it is incorrect, i will resend if required from work as attachment)
diff -Naur iproute2/tc/em_meta.c b/tc/em_meta.c
--- iproute2/tc/em_meta.c 2008-07-29 06:31:51.000000000 +0000
+++ b/tc/em_meta.c 2008-07-29 06:31:38.000000000 +0000
@@ -262,7 +262,7 @@
}
num = bstrtoul(arg);
- if (num != LONG_MAX) {
+ if (num != ULONG_MAX) {
obj->kind = TCF_META_TYPE_INT << 12;
obj->kind |= TCF_META_ID_VALUE;
*dst = (unsigned long) num;
@@ -320,7 +320,7 @@
a = bstr_next(a);
shift = bstrtoul(a);
- if (shift == LONG_MAX) {
+ if (shift == ULONG_MAX) {
PARSE_ERR(a, "meta: invalid shift, must " \
"be numeric");
return PARSE_FAILURE;
@@ -338,7 +338,7 @@
a = bstr_next(a);
mask = bstrtoul(a);
- if (mask == LONG_MAX) {
+ if (mask == ULONG_MAX) {
PARSE_ERR(a, "meta: invalid mask, must be " \
"numeric");
return PARSE_FAILURE;
because
unsigned long bstrtoul(const struct bstr *b)
{
char *inv = NULL;
unsigned long l;
char buf[b->len+1];
memcpy(buf, b->data, b->len);
buf[b->len] = '\0';
l = strtoul(buf, &inv, 0);
if (l == ULONG_MAX || inv == buf)
return ULONG_MAX;
return l;
}
On Tuesday 29 July 2008, Denys Fedoryshchenko wrote:
> According man of stroul
>
> RETURN VALUE
> The strtoul() function returns either the result of the conversion or, if there was a leading minus sign, the negation of the result
> of the conversion represented as an unsigned value, unless the original (non-negated) value would overflow; in the latter case, str-
> toul() returns ULONG_MAX and sets the global variable errno to ERANGE. Precisely the same holds for strtoull() (with ULLONG_MAX
> instead of ULONG_MAX).
>
> ULONG_MAX is NOT LONG_MAX
>
> So it must not work i guess (2.6.26 release).
> Maybe in git it is fixed, dunno, i will check it now.
>
>
> On Tuesday 29 July 2008, Patrick McHardy wrote:
> > Denys Fedoryshchenko wrote:
> > > Well, the issue not with ifb0 only. It is just not parsing rules correctly i think:
> > >
> > > rich tc # ./tc filter add dev ifb0 protocol all basic match meta\(protocol eq 1234\) classid 1:100
> > > rich tc # ./tc filter add dev ifb0 protocol all basic match meta\(data_len eq 1234\) classid 1:100
> > >
> > > filter parent 1: protocol all pref 49151 basic
> > > filter parent 1: protocol all pref 49151 basic handle 0x1 flowid 1:100
> > > meta(-1 eq 1234)
> > >
> > > filter parent 1: protocol all pref 49152 basic
> > > filter parent 1: protocol all pref 49152 basic handle 0x1 flowid 1:100
> > > meta(-1 eq 1234)
> > >
> >
> > Works fine here with a fresh git checkout:
> >
> > # tc filter add dev dummy0 protocol all parent 1: basic match
> > meta\(protocol eq 1234\) classid 1:100
> > # tc -s -d filter show dev dummy0
> > filter parent 1: protocol all pref 49151 basic
> > filter parent 1: protocol all pref 49151 basic handle 0x1 flowid 1:100
> > meta(protocol mask 0x00000000 eq 1234)
> >
> > filter parent 1: protocol all pref 49152 basic
> >
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe netdev" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2008-07-29 6:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-29 5:43 iproute2 / match / meta bug? Denys Fedoryshchenko
2008-07-29 5:54 ` Patrick McHardy
2008-07-29 6:11 ` Denys Fedoryshchenko
2008-07-29 6:18 ` Patrick McHardy
2008-07-29 6:25 ` Denys Fedoryshchenko
2008-07-29 6:35 ` Denys Fedoryshchenko [this message]
2008-07-29 8:16 ` Denys Fedoryshchenko
2008-07-29 6:18 ` Denys Fedoryshchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200807290935.50100.denys@visp.net.lb \
--to=denys@visp.net.lb \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
--cc=shemminger@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.