Date: Sun, 28 Jun 1998 01:33:22 -0300 (EST) From: Joao Carlos Mendes Luis <jonny@jonny.eng.br> To: net@FreeBSD.ORG Subject: mrouting and ioctl(SIOCGETVIFCNT) Message-ID: <199806280433.BAA22277@roma.coe.ufrj.br>
next in thread | raw e-mail | index | archive | help
Hi, I'm trying to use ioctl SIOCGETVIFCNT to get traffic statistics on multicast vifs. But my results are very strange: vif0, inp=12573, inb=503855516, outp=35900, outb=1835387904 vif1, inp=35900, inb=1835387904, outp=11262, outb=462654994 vif2, inp=0, inb=0, outp=1039, outb=34649536 vif3, inp=0, inb=0, outp=0, outb=0 On vif2, for example, suppose it has really sent 34649536 bytes, using 1039 packets. The average packet size would be 33348 ! No, this is not real... Is there a known bug in kernel ? It seems to be some kind of host/network format conversion. The program couldn't be simpler (stripping includes): void main( void ) { int vif; int s; struct sioc_vif_req vr; if ( ( s = socket( AF_INET, SOCK_DGRAM, 0 ) ) < 0 ) err( 1, "Cannot open control socket" ); vif = 0; while ( 1 ) { vr.vifi = vif; if ( ioctl( s, SIOCGETVIFCNT, &vr ) < 0 ) { if ( errno == EINVAL ) break; err( 2, "socket(SIOCGETVIFCNT)" ); } printf( "vif%d, inp=%lu, inb=%lu, outp=%lu, outb=%lu\n", vif, vr.icount, vr.ibytes, vr.ocount, vr.obytes ); ++vif; } close( s ); } Jonny -- Joao Carlos Mendes Luis M.Sc. Student jonny@jonny.eng.br Universidade Federal do Rio de Janeiro To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199806280433.BAA22277>