https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194453
--- Comment #5 from Hiren Panchasara <hi...@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. _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"