Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Sep 2004 08:55:01 -0400 (EDT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Brooks Davis <brooks@one-eyed-alien.net>
Cc:        current@FreeBSD.org
Subject:   Re: 5.3-RELEASE TODO
Message-ID:  <Pine.NEB.3.96L.1040918085237.88212A-100000@fledge.watson.org>
In-Reply-To: <20040918051758.GA18656@odin.ac.hmc.edu>

index | next in thread | previous in thread | raw e-mail


On Fri, 17 Sep 2004, Brooks Davis wrote:

> On Fri, Sep 17, 2004 at 09:30:19PM +0200, Dag-Erling Smørgrav wrote:
> > Brooks Davis <brooks@one-eyed-alien.net> writes:
> > >                      Thus, so you have to know how much space you will
> > > need before doing any kind of allocation, hence the double loop and the
> > > potential race.
> > 
> > Using sbufs removes the need for loop and greatly simplifies how you
> > deal with overflows.
> 
> Indeed it does.  I'm not fully happy with the hardcoding of a maximum
> size, but I doubt anyone will hit it in practice.  Here's a new and
> improved patch that makes a single pass and uses sbufs. 

Have you tried seeing just how many addresses you can add before
getifaddrs() fails to return the complete list?  128k seems like a lot,
but I instrumente ifconf() locally a couple of weeks ago when I first
became aware of this problem, and discovered that even on my notebook
(which has a wireless card with one IP, and an unused ethernet card) that
I see moderately large buffers being read from user space:

ifconf: 16384 space
ifconf: 2048 space
ifconf: 2048 space
ifconf: 4095 space

This is from a printf of ifc->ifc_len before the loop begins.

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert@fledge.watson.org      Principal Research Scientist, McAfee Research


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1040918085237.88212A-100000>