i need init and destroy
Frank Cusack
fcusack at fcusack.com
Wed Aug 24 00:07:55 CEST 2005
On August 23, 2005 11:28:20 AM -0400 Alan DeKok <aland at ox.org> wrote:
> Frank Cusack <fcusack at fcusack.com> wrote:
>> Looks like the init and destroy methods went away 5 days ago. My module
>> (rlm_otp) needs them.
>
> Yes. It was discussed here, but I meant to email you privately.
>
>> - How was this tested? struct module_t rlm_otp still contains these
>> methods. How can this even compile?
>
> I delete rlm_otp from the makefile.
>
>> - What are the chances of getting these back? I can do something
>> like pthread_once(otp_init()) and add a refcount to cleanup in detach,
>> but really, init and destroy are superior.
>
> I'm not convinced any module needs them. The other modules that
> used them could be modified easily to not use them. I took a quick
> look through rlm_otp, and didn't see anything that struck me as a
> show-stopper.
>
> If necessary, they can be added back, but I'd like to know what
> rlm_otp is doing with them, and if another approach is equivalent.
It's fairly obvious from the code. I open a single file handle to
/dev/random, shared by all instances, and I setup an hmac key which
I need to sign access-challenge STATE attributes. I close the fd
and clear the hmac in destroy.
You're right, no module *needs* init and destroy. These are easily
simulated with pthread_once() and a refcount, but you can consider
the modules to be classes, and a static constructor and destructor
is a natural for them. init and destroy methods make sense. There's
no reason a module *has* to use them, but they should be there if you
want them.
Please advise.
-frank
More information about the Freeradius-Devel
mailing list