Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Oct 2010 16:07:59 -0700
From:      Garrett Cooper <gcooper@FreeBSD.org>
To:        =?ISO-8859-1?Q?Dag=2DErling_Sm=F8rgrav?= <des@des.no>
Cc:        freebsd-hackers@freebsd.org, Ivan Voras <ivoras@freebsd.org>
Subject:   Re: Why is TUNABLE_INT discouraged?
Message-ID:  <AANLkTim1E94qWq1TF1111-sYo2dj35Y-XnPq3DT4kpoL@mail.gmail.com>
In-Reply-To: <8662zg586z.fsf@ds4.des.no>
References:  <AANLkTinKaiGFhKRgqQ%2BFjm=02VfWCxULe0a68y-PkJx6@mail.gmail.com> <86fwyq8rsc.fsf@ds4.des.no> <i3kbis$73l$1@dough.gmane.org> <86d3tujh72.fsf@ds4.des.no> <AANLkTi=puD%2B-WeZ%2BFGdtZtw1v%2BNnGD_htwNa%2BEn9fcML@mail.gmail.com> <864of680wv.fsf@ds4.des.no> <AANLkTinraF50O%2Bcp_h1m6TODnoz_7R3WXfjTanh-86mn@mail.gmail.com> <AANLkTikU6fLzWL-n6fCtvaTsXWGis7ydKM1qJaV=WRJ%2B@mail.gmail.com> <8662zkurx9.fsf@ds4.des.no> <AANLkTimbkTQiNgYCYFnTXMpRe9koJGrq1%2BYoq5-fVmFD@mail.gmail.com> <8662zg586z.fsf@ds4.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
--00221532c7aca694360492c40306
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

2010/8/12 Dag-Erling Sm=F8rgrav <des@des.no>:
> Garrett Cooper <gcooper@FreeBSD.org> writes:
>> Dag-Erling Sm=F8rgrav <des@des.no> writes:
>> > It might be a good idea to introduce TUNABLE_POINTER and TUNABLE_SIZE.
>> I would actually argue against doing that because it would only create
>> divergence between sysctl and tunable KPIs...
>
> Not if we also introduce corresponding SYSCTLs. =A0Note that my idea is t=
o
> have these as aliases for the correct primitive types.
>
>> (BTW, when you say TUNABLE_SIZE, I assume it would be a size_t quantity?=
)
>
> Yes.
>
>> Something might need to be done to the values returned by the tunables
>> though, because they don't respect boundaries, and can overflow right
>> now (which exacerbates the issue with values crammed into smaller
>> datatypes)...
>
> Yes. =A0How about this:
>
> =A0- rename getenv_quad() to getenv_signed() and getenv_unsigned()
> =A0- add min / max arguments
> =A0- implement getenv_quad() (and all the others) in terms of
> =A0 getenv_number()
>
> e.g.
>
> int
> getenv_uint(const char *name, unsigned int *data)
> {
> =A0 =A0 =A0 =A0unsigned long long tmp;
> =A0 =A0 =A0 =A0int rval;
>
> =A0 =A0 =A0 =A0if ((rval =3D getenv_unsigned(name, &tmp, 0, UINT_MAX)) =
=3D=3D 0)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0*data =3D (unsigned int)tmp;
> =A0 =A0 =A0 =A0return (rval);
> }
>
> (note that due to the min / max arguments, the complexity of handling
> both signed and unsigned values in the same function probably exceeds
> the complexity of having two very similar functions)

Here's a draft of this work des@ challenged me to a while back. It
works well as demonstrated with my tests. The only catch with
detecting bounds is that if it's the minimum in the case of signed or
maximum representable value in the case of unsigned, then strtoq, etc
will clamp the value to the maximum representable value.

Other than that it works well, and now tunables represented by
unsigned values should work better.

Please let me know what you all think.

Thanks!
-Garrett

PS I added uquad_t for consistency in the APIs, even though quad_t was
deprecated, but I didn't bump __FreeBSD_version__ -- wasn't sure if I
should have done that).

--00221532c7aca694360492c40306
Content-Type: application/octet-stream; name="test-tunables-draft1.log"
Content-Disposition: attachment; filename="test-tunables-draft1.log"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gfd3iz6p1

IyBDb25zb2xlIG91dHB1dAojIGZvciBpIGluICovOyBkbyAoY2QgJGkgJiYgc2ggdGVzdCouc2gg
Mj4vZGV2L251bGwpOyBkb25lCnRlc3RfaW50X3R1bmFibGUudHVuYWJsZT0iLTEiCnRlc3RfaW50
X3R1bmFibGUudHVuYWJsZT0iMCIKdGVzdF9pbnRfdHVuYWJsZS50dW5hYmxlPSI0MiIKdGVzdF9p
bnRfdHVuYWJsZS50dW5hYmxlPSJhc2RmMTIzNCIKdGVzdF9pbnRfdHVuYWJsZS50dW5hYmxlPSIt
MjE0NzQ4MzY0NyIKdGVzdF9pbnRfdHVuYWJsZS50dW5hYmxlPSItMjE0NzQ4MzY0OSIKdGVzdF9p
bnRfdHVuYWJsZS50dW5hYmxlPSIyMTQ3NDgzNjQ2Igp0ZXN0X2ludF90dW5hYmxlLnR1bmFibGU9
IjIxNDc0ODM2NDgiCnRlc3RfbG9uZ190dW5hYmxlLnR1bmFibGU9IjAiCnRlc3RfbG9uZ190dW5h
YmxlLnR1bmFibGU9IjQyIgp0ZXN0X2xvbmdfdHVuYWJsZS50dW5hYmxlPSJhc2RmMTIzNCIKdGVz
dF9sb25nX3R1bmFibGUudHVuYWJsZT0iLTkyMjMzNzIwMzY4NTQ3NzU4MDkiCnRlc3RfbG9uZ190
dW5hYmxlLnR1bmFibGU9Ii05MjIzMzcyMDM2ODU0Nzc1ODA3Igp0ZXN0X2xvbmdfdHVuYWJsZS50
dW5hYmxlPSI5MjIzMzcyMDM2ODU0Nzc1ODA2Igp0ZXN0X2xvbmdfdHVuYWJsZS50dW5hYmxlPSI5
MjIzMzcyMDM2ODU0Nzc1ODA4Igp0ZXN0X3BvaW50ZXJfdHVuYWJsZS50dW5hYmxlPSItMSIKdGVz
dF9wb2ludGVyX3R1bmFibGUudHVuYWJsZT0iMCIKdGVzdF9wb2ludGVyX3R1bmFibGUudHVuYWJs
ZT0iNDIiCnRlc3RfcG9pbnRlcl90dW5hYmxlLnR1bmFibGU9IjM3MzU5Mjg1NTkiCnRlc3RfcG9p
bnRlcl90dW5hYmxlLnR1bmFibGU9ImFzZGYxMjM0Igp0ZXN0X3BvaW50ZXJfdHVuYWJsZS50dW5h
YmxlPSI4NTgwNDgxMDIzIgp0ZXN0X3BvaW50ZXJfdHVuYWJsZS50dW5hYmxlPSI4NTgwNDgxMDI1
Igp0ZXN0X3F1YWRfdHVuYWJsZS50dW5hYmxlPSIwIgp0ZXN0X3F1YWRfdHVuYWJsZS50dW5hYmxl
PSI0MiIKdGVzdF9xdWFkX3R1bmFibGUudHVuYWJsZT0iYXNkZjEyMzQiCnRlc3RfcXVhZF90dW5h
YmxlLnR1bmFibGU9Ii05MjIzMzcyMDM2ODU0Nzc1ODA5Igp0ZXN0X3F1YWRfdHVuYWJsZS50dW5h
YmxlPSItOTIyMzM3MjAzNjg1NDc3NTgwNyIKdGVzdF9xdWFkX3R1bmFibGUudHVuYWJsZT0iOTIy
MzM3MjAzNjg1NDc3NTgwNiIKdGVzdF9xdWFkX3R1bmFibGUudHVuYWJsZT0iOTIyMzM3MjAzNjg1
NDc3NTgwOCIKdGVzdF9zaXplX3R1bmFibGUudHVuYWJsZT0iLTEiCnRlc3Rfc2l6ZV90dW5hYmxl
LnR1bmFibGU9IjAiCnRlc3Rfc2l6ZV90dW5hYmxlLnR1bmFibGU9IjQyIgp0ZXN0X3NpemVfdHVu
YWJsZS50dW5hYmxlPSJhc2RmMTIzNCIKdGVzdF9zaXplX3R1bmFibGUudHVuYWJsZT0iOTIyMzM3
MjAzNjg1NDc3NTgwOCIKdGVzdF9zaXplX3R1bmFibGUudHVuYWJsZT0iMTg0NDY3NDQwNzM3MDk1
NTE2MTQiCnRlc3Rfc2l6ZV90dW5hYmxlLnR1bmFibGU9IjE4NDQ2NzQ0MDczNzA5NTUxNjE2Igp0
ZXN0X3N0cmluZ190dW5hYmxlLnR1bmFibGU9IiIKdGVzdF9zdHJpbmdfdHVuYWJsZS50dW5hYmxl
PSJhc2RmMTIzNCIKdGVzdF9zdHJpbmdfdHVuYWJsZS50dW5hYmxlPSJjaGFyYWN0ZXIiCnRlc3Rf
c3RyaW5nX3R1bmFibGUudHVuYWJsZT0iYXNvcnRvZmxvbmdpc2hzdHJpbmciCnRlc3RfdHVuYWJs
ZV9zdWZmaXhlcy50dW5hYmxlPSItMSIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0x
ZyIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0xRyIKdGVzdF90dW5hYmxlX3N1ZmZp
eGVzLnR1bmFibGU9Ii0xayIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0xSyIKdGVz
dF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0xbSIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1
bmFibGU9Ii0xTSIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0xdCIKdGVzdF90dW5h
YmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0xVCIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9
Ii0xeiIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9Ii0xWiIKdGVzdF90dW5hYmxlX3N1
ZmZpeGVzLnR1bmFibGU9IjAiCnRlc3RfdHVuYWJsZV9zdWZmaXhlcy50dW5hYmxlPSIwZyIKdGVz
dF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9IjBHIgp0ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVu
YWJsZT0iMGsiCnRlc3RfdHVuYWJsZV9zdWZmaXhlcy50dW5hYmxlPSIwSyIKdGVzdF90dW5hYmxl
X3N1ZmZpeGVzLnR1bmFibGU9IjBtIgp0ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVuYWJsZT0iME0i
CnRlc3RfdHVuYWJsZV9zdWZmaXhlcy50dW5hYmxlPSIwdCIKdGVzdF90dW5hYmxlX3N1ZmZpeGVz
LnR1bmFibGU9IjBUIgp0ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVuYWJsZT0iMHoiCnRlc3RfdHVu
YWJsZV9zdWZmaXhlcy50dW5hYmxlPSIwWiIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9
IjEiCnRlc3RfdHVuYWJsZV9zdWZmaXhlcy50dW5hYmxlPSIxZyIKdGVzdF90dW5hYmxlX3N1ZmZp
eGVzLnR1bmFibGU9IjFHIgp0ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVuYWJsZT0iMWsiCnRlc3Rf
dHVuYWJsZV9zdWZmaXhlcy50dW5hYmxlPSIxSyIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFi
bGU9IjFtIgp0ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVuYWJsZT0iMU0iCnRlc3RfdHVuYWJsZV9z
dWZmaXhlcy50dW5hYmxlPSIxdCIKdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGU9IjFUIgp0
ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVuYWJsZT0iMXoiCnRlc3RfdHVuYWJsZV9zdWZmaXhlcy50
dW5hYmxlPSIxWiIKdGVzdF91aW50X3R1bmFibGUudHVuYWJsZT0iLTEiCnRlc3RfdWludF90dW5h
YmxlLnR1bmFibGU9IjAiCnRlc3RfdWludF90dW5hYmxlLnR1bmFibGU9IjQyIgp0ZXN0X3VpbnRf
dHVuYWJsZS50dW5hYmxlPSJhc2RmMTIzNCIKdGVzdF91aW50X3R1bmFibGUudHVuYWJsZT0iMjE0
NzQ4MzY0OCIKdGVzdF91aW50X3R1bmFibGUudHVuYWJsZT0iNDI5NDk2NzI5NCIKdGVzdF91aW50
X3R1bmFibGUudHVuYWJsZT0iNDI5NDk2NzI5NiIKdGVzdF91bG9uZ190dW5hYmxlLnR1bmFibGU9
Ii0xIgp0ZXN0X3Vsb25nX3R1bmFibGUudHVuYWJsZT0iMCIKdGVzdF91bG9uZ190dW5hYmxlLnR1
bmFibGU9IjQyIgp0ZXN0X3Vsb25nX3R1bmFibGUudHVuYWJsZT0iYXNkZjEyMzQiCnRlc3RfdWxv
bmdfdHVuYWJsZS50dW5hYmxlPSI5MjIzMzcyMDM2ODU0Nzc1ODA4Igp0ZXN0X3Vsb25nX3R1bmFi
bGUudHVuYWJsZT0iMTg0NDY3NDQwNzM3MDk1NTE2MTQiCnRlc3RfdWxvbmdfdHVuYWJsZS50dW5h
YmxlPSIxODQ0Njc0NDA3MzcwOTU1MTYxNiIKdGVzdF91cXVhZF90dW5hYmxlLnR1bmFibGU9Ii0x
Igp0ZXN0X3VxdWFkX3R1bmFibGUudHVuYWJsZT0iMCIKdGVzdF91cXVhZF90dW5hYmxlLnR1bmFi
bGU9IjQyIgp0ZXN0X3VxdWFkX3R1bmFibGUudHVuYWJsZT0iYXNkZjEyMzQiCnRlc3RfdXF1YWRf
dHVuYWJsZS50dW5hYmxlPSI5MjIzMzcyMDM2ODU0Nzc1ODA4Igp0ZXN0X3VxdWFkX3R1bmFibGUu
dHVuYWJsZT0iMTg0NDY3NDQwNzM3MDk1NTE2MTQiCnRlc3RfdXF1YWRfdHVuYWJsZS50dW5hYmxl
PSIxODQ0Njc0NDA3MzcwOTU1MTYxNiIKIyBEbWVzZyBvdXRwdXQKdGVzdF9pbnRfdHVuYWJsZTog
MAp0ZXN0X2ludF90dW5hYmxlOiAtMQp0ZXN0X2ludF90dW5hYmxlOiAwCnRlc3RfaW50X3R1bmFi
bGU6IDQyCnRlc3RfaW50X3R1bmFibGU6IDAKdGVzdF9pbnRfdHVuYWJsZTogLTIxNDc0ODM2NDcK
dGVzdF9pbnRfdHVuYWJsZTogMAp0ZXN0X2ludF90dW5hYmxlOiAyMTQ3NDgzNjQ2CnRlc3RfaW50
X3R1bmFibGU6IDAKdGVzdF9sb25nX3R1bmFibGU6IDAKdGVzdF9sb25nX3R1bmFibGU6IDAKdGVz
dF9sb25nX3R1bmFibGU6IDQyCnRlc3RfbG9uZ190dW5hYmxlOiAwCnRlc3RfbG9uZ190dW5hYmxl
OiAtOTIyMzM3MjAzNjg1NDc3NTgwOAp0ZXN0X2xvbmdfdHVuYWJsZTogLTkyMjMzNzIwMzY4NTQ3
NzU4MDcKdGVzdF9sb25nX3R1bmFibGU6IDkyMjMzNzIwMzY4NTQ3NzU4MDYKdGVzdF9sb25nX3R1
bmFibGU6IDkyMjMzNzIwMzY4NTQ3NzU4MDcKdGVzdF9wb2ludGVyX3R1bmFibGU6IGZmZmZmZmZm
ZmZmZmZmZmYKdGVzdF9wb2ludGVyX3R1bmFibGU6IDAKdGVzdF9wb2ludGVyX3R1bmFibGU6IDJh
CnRlc3RfcG9pbnRlcl90dW5hYmxlOiBkZWFkYmVlZgp0ZXN0X3BvaW50ZXJfdHVuYWJsZTogMAp0
ZXN0X3BvaW50ZXJfdHVuYWJsZTogMWZmNmZiZmZmCnRlc3RfcG9pbnRlcl90dW5hYmxlOiAxZmY2
ZmMwMDEKdGVzdF9xdWFkX3R1bmFibGU6IDAKdGVzdF9xdWFkX3R1bmFibGU6IDAKdGVzdF9xdWFk
X3R1bmFibGU6IDQyCnRlc3RfcXVhZF90dW5hYmxlOiAwCnRlc3RfcXVhZF90dW5hYmxlOiAtOTIy
MzM3MjAzNjg1NDc3NTgwOAp0ZXN0X3F1YWRfdHVuYWJsZTogLTkyMjMzNzIwMzY4NTQ3NzU4MDcK
dGVzdF9xdWFkX3R1bmFibGU6IDkyMjMzNzIwMzY4NTQ3NzU4MDYKdGVzdF9xdWFkX3R1bmFibGU6
IDkyMjMzNzIwMzY4NTQ3NzU4MDcKdGVzdF9zaXplX3R1bmFibGU6IDAKdGVzdF9zaXplX3R1bmFi
bGU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CnRlc3Rfc2l6ZV90dW5hYmxlOiAwCnRlc3Rfc2l6ZV90
dW5hYmxlOiA0Mgp0ZXN0X3NpemVfdHVuYWJsZTogMAp0ZXN0X3NpemVfdHVuYWJsZTogOTIyMzM3
MjAzNjg1NDc3NTgwOAp0ZXN0X3NpemVfdHVuYWJsZTogMTg0NDY3NDQwNzM3MDk1NTE2MTQKdGVz
dF9zaXplX3R1bmFibGU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CnRlc3Rfc3RyaW5nX3R1bmFibGU6
IAp0ZXN0X3N0cmluZ190dW5hYmxlOiAKdGVzdF9zdHJpbmdfdHVuYWJsZTogYXNkZjEyMzQKdGVz
dF9zdHJpbmdfdHVuYWJsZTogY2hhcmFjdGVyCnRlc3Rfc3RyaW5nX3R1bmFibGU6IGFzb3J0b2Zs
bwp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IDAKdGVzdF90dW5hYmxlX3N1ZmZpeGVzOiAtMQp0ZXN0
X3R1bmFibGVfc3VmZml4ZXM6IC0xMDczNzQxODI0CnRlc3RfdHVuYWJsZV9zdWZmaXhlczogLTEw
NzM3NDE4MjQKdGVzdF90dW5hYmxlX3N1ZmZpeGVzOiAtMTAyNAp0ZXN0X3R1bmFibGVfc3VmZml4
ZXM6IC0xMDI0CnRlc3RfdHVuYWJsZV9zdWZmaXhlczogLTEwNDg1NzYKdGVzdF90dW5hYmxlX3N1
ZmZpeGVzOiAtMTA0ODU3Ngp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IC0xMDk5NTExNjI3Nzc2CnRl
c3RfdHVuYWJsZV9zdWZmaXhlczogLTEwOTk1MTE2Mjc3NzYKdGVzdF90dW5hYmxlX3N1ZmZpeGVz
OiAwCnRlc3RfdHVuYWJsZV9zdWZmaXhlczogMAp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IDAKdGVz
dF90dW5hYmxlX3N1ZmZpeGVzOiAwCnRlc3RfdHVuYWJsZV9zdWZmaXhlczogMAp0ZXN0X3R1bmFi
bGVfc3VmZml4ZXM6IDAKdGVzdF90dW5hYmxlX3N1ZmZpeGVzOiAwCnRlc3RfdHVuYWJsZV9zdWZm
aXhlczogMAp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IDAKdGVzdF90dW5hYmxlX3N1ZmZpeGVzOiAw
CnRlc3RfdHVuYWJsZV9zdWZmaXhlczogMAp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IDAKdGVzdF90
dW5hYmxlX3N1ZmZpeGVzOiAwCnRlc3RfdHVuYWJsZV9zdWZmaXhlczogMQp0ZXN0X3R1bmFibGVf
c3VmZml4ZXM6IDEwNzM3NDE4MjQKdGVzdF90dW5hYmxlX3N1ZmZpeGVzOiAxMDczNzQxODI0CnRl
c3RfdHVuYWJsZV9zdWZmaXhlczogMTAyNAp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IDEwMjQKdGVz
dF90dW5hYmxlX3N1ZmZpeGVzOiAxMDQ4NTc2CnRlc3RfdHVuYWJsZV9zdWZmaXhlczogMTA0ODU3
Ngp0ZXN0X3R1bmFibGVfc3VmZml4ZXM6IDEwOTk1MTE2Mjc3NzYKdGVzdF90dW5hYmxlX3N1ZmZp
eGVzOiAxMDk5NTExNjI3Nzc2CnRlc3RfdHVuYWJsZV9zdWZmaXhlczogMAp0ZXN0X3R1bmFibGVf
c3VmZml4ZXM6IDAKdGVzdF91aW50X3R1bmFibGU6IDAKdGVzdF91aW50X3R1bmFibGU6IDAKdGVz
dF91aW50X3R1bmFibGU6IDAKdGVzdF91aW50X3R1bmFibGU6IDQyCnRlc3RfdWludF90dW5hYmxl
OiAwCnRlc3RfdWludF90dW5hYmxlOiAyMTQ3NDgzNjQ4CnRlc3RfdWludF90dW5hYmxlOiA0Mjk0
OTY3Mjk0CnRlc3RfdWludF90dW5hYmxlOiAwCnRlc3RfdWxvbmdfdHVuYWJsZTogMAp0ZXN0X3Vs
b25nX3R1bmFibGU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CnRlc3RfdWxvbmdfdHVuYWJsZTogMAp0
ZXN0X3Vsb25nX3R1bmFibGU6IDQyCnRlc3RfdWxvbmdfdHVuYWJsZTogMAp0ZXN0X3Vsb25nX3R1
bmFibGU6IDkyMjMzNzIwMzY4NTQ3NzU4MDgKdGVzdF91bG9uZ190dW5hYmxlOiAxODQ0Njc0NDA3
MzcwOTU1MTYxNAp0ZXN0X3Vsb25nX3R1bmFibGU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CnRlc3Rf
dXF1YWRfdHVuYWJsZTogMAp0ZXN0X3VxdWFkX3R1bmFibGU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1
CnRlc3RfdXF1YWRfdHVuYWJsZTogMAp0ZXN0X3VxdWFkX3R1bmFibGU6IDQyCnRlc3RfdXF1YWRf
dHVuYWJsZTogMAp0ZXN0X3VxdWFkX3R1bmFibGU6IDkyMjMzNzIwMzY4NTQ3NzU4MDgKdGVzdF91
cXVhZF90dW5hYmxlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNAp0ZXN0X3VxdWFkX3R1bmFibGU6IDE4
NDQ2NzQ0MDczNzA5NTUxNjE1Cg==
--00221532c7aca694360492c40306--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTim1E94qWq1TF1111-sYo2dj35Y-XnPq3DT4kpoL>