[Bug 194453] [dummynet] pipe config bw parameter is limited to 2Gbits per second
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Oct 24 20:27:08 UTC 2014
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194453
--- Comment #5 from Hiren Panchasara <hiren at FreeBSD.org> ---
(In reply to boba from comment #4)
> (In reply to Hiren Panchasara from comment #2)
> > (In reply to boba from comment #0)
> > > It's impossible to create "pipe" with bandwidth higher than 2Gbits per
> > > second. Possible due to "signed" type of variable.
> > >
> > > # ipfw pipe 1 config bw 2700mbit/s
> > > ipfw: bandwidth too large
> >
> > I think you are right that its overflowing because of "signed" type.
> >
> > A simple change like this may fix the problem:
> >
> > Index: dummynet.c
> > ===================================================================
> > --- dummynet.c (revision 270969)
> > +++ dummynet.c (working copy)
> > @@ -546,7 +546,7 @@
> > if_name[namelen] = '\0';
> > *bandwidth = 0;
> > } else { /* read bandwidth value */
> > - int bw;
> > + uint32_t bw;
> > char *end = NULL;
> >
> > bw = strtoul(arg, &end, 0);
>
> This patch will not work at all because of following check few lines after
> it:
>
> if (bw < 0)
> errx(EX_DATAERR, "bandwidth too large");
This patch is incomplete. But the check above is needed exactly for the reason
of catching overflowing values.
Afaik, a couple of things need to be done to make the patch complete:
1) make sure whatever datatype we use for bandwidth is uniform across entire
dummynet codebase. i.e. in struct dn_link inside netinet/ip_dummynet.h
2) It currently only handles Mb/s and b/s and not Gb/s while setting bandwidth.
If someone else doesn't beat me to it, I'll try to spend some time next week on
this.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-net
mailing list