Roadmap for ifnet(9) for FreeBSD 11

Anuranjan Shukla anshukla at juniper.net
Mon Jun 2 22:50:36 UTC 2014


Hi John,
The first email in this thread from Marcel has the schedule:

On 5/28/14, 9:34 AM, "Marcel Moolenaar" <marcel at xcllnt.net> wrote:

<‹snip‹>
Schedule:

late May 2014		Juniper adds accessor methods. Access via
			void *, that inside if.c is re-casted to
			(struct ifnet *). This ³ugly² moment is
			required to keep unconverted drivers
			compilable and will go away shortly after.
1st week June 2014	Juniper commits few converted drivers.
June - July		All drivers are being converted. Gleb
			volunteers, but this should be done by as
			many hands as possible.
August 2014		'#define if_t void *' is removed.
			'typedef if_t struct ifnet *' is added.
			actual struct ifnet is hidden.
2014/2015		Better APIs developed and improved, actual
			ifnet representation becomes variable
			sized. New networking stack improvements
			are already unblocked at this moment.





On 6/2/14, 3:38 PM, "John-Mark Gurney" <jmg at funkthat.com> wrote:

>Gleb Smirnoff wrote this message on Thu, May 29, 2014 at 08:04 +0400:
>> On Wed, May 28, 2014 at 08:48:11PM -0700, Rui Paulo wrote:
>> R> On May 28, 2014, at 9:34, Marcel Moolenaar <marcel at xcllnt.net> wrote:
>> R> 
>> R> > All,
>> R> > 
>> R> > The ifnet structure represents a network interface. Right now it
>> R> > is known to all NIC drivers as well as to all protocols. This
>> R> > means that whenever we change the structure, we need at minimum
>> R> > recompile all drivers, but usually also change them. This severely
>> R> > slow downs the development in this area and also makes it hard, if
>> R> > not, impossible to merge things back to stable branches.
>> R> > 
>> R> > There were at least 3 efforts on fixing this:
>> R> > 
>> R> > 1)  Juniper???s JUNOS is a FreeBSD based operating system that has
>> R> >    its own (alternative) network stack, but that leverages the
>> R> >    network drivers from FreeBSD. Juniper mechanically changed all
>> R> >    ifnet dereferences to to accessor methods. This could have
>> R> >    been incorporated as early as 2011, but lacked good follow
>> R> >    through. Marcel Moolenaar was prime contact for this.
>> R> > 
>> R> > 2)  Andre Oppermann was sponsored in 2013 by the FreeBSD
>> R> >    Foundation to make ifnet(9) opaque. This is not complete as of
>> R> >    the time of this writing.
>> R> > 
>> R> > 3)  Gleb Smirnoff also planned to work on opaque ifnet(9), but
>> R> >    that always has been delayed due to 1) and 2).
>> R> 
>> R> This is indeed needed, but it would be nice to understand what would
>>happen if the community has comments about your patch. Will Juniper be
>>able to integrate back those comments?  For example, I think the type
>>"if_t" should be "ifnet_t".  Another comment I have is: why do you have
>>to cast if_t to (struct ifnet *) in all the accessor methods?  It would
>>be better to create a private header typedef'ing if_t to struct ifnet,
>>avoiding the copy & paste casting.
>> 
>> Because for now patch supports compiling unconverted drivers. This
>>requires
>> to pass 'void *' as argument. When all drivers are converted, this will
>>be
>> removed. In if_var.h we would have:
>> 
>> struct ifnet;
>> typedef struct ifnet * if_t;
>> 
>> All casts to (struct ifnet *) will go away.
>
>When?  The schedule did not have a time frame on when this will happen..
>Will it be this year? Next year? Next decade?
>
>-- 
>  John-Mark Gurney				Voice: +1 415 225 5579
>
>     "All that I will do, has been done, All that I have, has not."



More information about the freebsd-arch mailing list