Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Nov 2014 03:09:07 +0300
From:      "Alexander V. Chernikov" <melifaro@ipfw.ru>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        svn-src-projects@freebsd.org, src-committers@freebsd.org, "Alexander V. Chernikov" <melifaro@freebsd.org>
Subject:   Re: svn commit: r274256 - in projects/routing/sys: net netinet netinet6 netpfil/pf
Message-ID:  <D04D87A8-801B-482C-9D76-18B82FD8EA0E@ipfw.ru>
In-Reply-To: <20141108104426.X2034@besplex.bde.org>
References:  <201411072252.sA7Mq3u6006585@svn.freebsd.org> <20141108104426.X2034@besplex.bde.org>

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

> On 08 Nov 2014, at 02:49, Bruce Evans <brde@optusnet.com.au> wrote:
>=20
> On Fri, 7 Nov 2014, Alexander V. Chernikov wrote:
>=20
>> Log:
>> Split radix implementation and system route table structure:
>> use new 'struct radix_head' for radix.
>=20
>> Modified: projects/routing/sys/net/radix.c
>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>> --- projects/routing/sys/net/radix.c	Fri Nov  7 22:02:44 2014	=
(r274255)
>> +++ projects/routing/sys/net/radix.c	Fri Nov  7 22:52:02 2014	=
(r274256)
>> ...
>> @@ -1132,13 +1134,13 @@ rn_inithead_internal(void **head, int of
>> 	tt->rn_bit =3D -1 - off;
>> 	*ttt =3D *tt;
>> 	ttt->rn_key =3D rn_ones;
>> -	rnh->rnh_addaddr =3D rn_addroute;
>> -	rnh->rnh_deladdr =3D rn_delete;
>> -	rnh->rnh_matchaddr =3D rn_match;
>> -	rnh->rnh_lookup =3D rn_lookup;
>> -	rnh->rnh_walktree =3D rn_walktree;
>> -	rnh->rnh_walktree_from =3D rn_walktree_from;
>> -	rnh->rnh_treetop =3D t;
>> +	rnh->rnh_addaddr =3D (rn_addaddr_f_t *)rn_addroute;
>> +	rnh->rnh_deladdr =3D (rn_deladdr_f_t *)rn_delete;
>> +	rnh->rnh_matchaddr =3D (rn_matchaddr_f_t *)rn_match;
>> +	rnh->rnh_lookup =3D (rn_lookup_f_t *)rn_lookup;
>> +	rnh->rnh_walktree =3D (rn_walktree_t *)rn_walktree;
>> +	rnh->rnh_walktree_from =3D (rn_walktree_from_t =
*)rn_walktree_from;
>> +	rnh->rh.rnh_treetop =3D t;
>> 	return (1);
>> }
>>=20
>=20
> A previous commit added lots of function typedefs.  As I feared, most =
uses
> of these are to give undefined behaviour by bogusly casting using the
> typedefs.  Unless the function types are actually the same.  Then the
> bogus casts have no effect.
Yes, these changes are not final.

Currently we use radix for the following:
1) main routing table (where we have =E2=80=9Croute entries=E2=80=9D, =
=E2=80=9Cmultipath=E2=80=9D and other routing-specific stuff). We also =
need to redefine some of callbacks for different address families.
2) prefix lists in NFS server, pf and ipfw firewall (and some other =
places). Here we don=E2=80=99t need callback re-definition, embedded =
locking and other stuff.=20

My goal is to significantly change structure/binding of radix to routing =
table (change locking model, change callbacks and so on) so I=E2=80=99m =
trying to decouple
radix code from current routing-specific table structures as much as I =
can.

>=20
> These typedefs don't seem to be used to obfuscate function definitions =
yet.
>=20
> Bruce
>=20




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D04D87A8-801B-482C-9D76-18B82FD8EA0E>