Roadmap for ifnet(9) for FreeBSD 11

John-Mark Gurney jmg at funkthat.com
Mon Jun 2 23:10:11 UTC 2014


Anuranjan Shukla wrote this message on Mon, Jun 02, 2014 at 22:50 +0000:
> Hi John,
> The first email in this thread from Marcel has the schedule:

Weird, I read the schedule twice and still missed this:

> August 2014		'#define if_t void *' is removed.
> 			'typedef if_t struct ifnet *' is added.
> 			actual struct ifnet is hidden.

My apologies...

> 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."
> 
> _______________________________________________
> freebsd-arch at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe at freebsd.org"

-- 
  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