a defect in ipfw dummynet

bycn82 bycn82 at gmail.com
Sat May 24 17:08:36 UTC 2014

Hi ,

After I think it twice, I think the code and the document are OK, But the problem is from the examples/document on the internet,  Because the existing logic is not accurate. So users can use different measurements instead of these four which mentioned in the document.  For example most of time I would like to use `kbps` and `KBps`, (It is my fault, I did not follow the document, )


I would like to recommend to make some changes in the document only, 


Current document

bw    bandwidth | device

           Bandwidth,   measured in [K|M]{bit/s|Byte/s}.


Change to 

bw    bandwidth | device
           Bandwidth,   support 4 measurements,(Kbit/s, Mbit/s, KByte/s, MByte/s) all others are officially not recommended.


With this document, Some mistakes can be prevented . for example this one:

>ipfw pipe 1 config bw 1BIT/s





Best Regards,




From: bycn82 [mailto:bycn82 at gmail.com] 
Sent: 25 May, 2014 0:19
To: Alexander V. Chernikov; Luigi Rizzo
Cc: FreeBSD Net
Subject: a defect in ipfw dummynet


Hi Alexander,


Since you guys are working on the “named table” feature. So I have stopped implementing it using my way. Hence I got some time to read more about the existing codes.  This afternoon I just started to read the dummynet part, then I have another question to ask. Maybe it is not a small defect, Or just because there are some more story which I don’t know.  anyway.


For example,

when we run command as below, 

>ipfw pipe config 1 100kbps

the userspace program need to read the bandwidth value which is “100kbps”, And I found the code as below, 

                if ((*end == 'B' &&

                                _substrcmp2(end, "Bi", "Bit/s") != 0) ||

                                _substrcmp2(end, "by", "bytes") == 0)

                                bw *= 8;


Sure it works. But I want to ask  whether it can be more readable If we list down all the possibilities and directly “hard code” in the source, At least it can be more accurate. 


With current logic, we have change to  have below situation.


root at FB10Head:~ # ipfw pipe config 1 bw 1ByeBye                    <- the command will be considered as “1 Byte per second”

root at FB10Head:~ # ipfw pipe 1 show

00001:   8.000 bit/s     0 ms burst 0 

q131073  50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail

sched 65537 type FIFO flags 0x0 0 buckets 0 active

root at FB10Head:~ #






Best Regards,



More information about the freebsd-net mailing list