Registering a filter module with io-net

Hi,

I have written a very simple filter module for io-net but I am getting
following error while I try to load it.

\

mount -vvvv -Tio-net nfm-filter.so

Parsed: mount from [nfm-filter.so] mount on [NULL] type
exec: mount_io-net -o implied -o nostat nfm-filter.so /
Using internal mount (mount_io-net not found)
Type [io-net] Flags 0x80080000
Device [nfm-filter.so] Directory [/]
Options []
mount: Can’t mount / (type io-net)
mount: Possible reason: No such device or address


Please help me. I have tried my module with absolute path also i.e.

mount -vvvv -Tio-net /tmp/active/bin/nfm-filter.so

but it also gives same error.

Following is the code snippet that io-net will access from my module.

static io_net_registrant_t filter_reg = {
_REG_FILTER_ABOVE,
“nfm_filter.so”,
“en”,
“en”,
NULL,
&filter_funcs,
0
};

static int my_filter_init(void *dll_hdl, dispatch_t *dpp,
io_net_self_t *ion, char *options)
{
filter_dll_hdl = dll_hdl;
filter_ion = ion;
filter_dpp = dpp;

if(filter_ion->reg(filter_dll_hdl, &filter_reg,
&filter_reg_hdl, NULL, NULL) == -1)
{
fprintf(stderr, "\nreg-ERROR ");
return (-1);
}

}

ashish19 <ashish_its@yahoo.co-dot-in.no-spam.invalid> wrote:

Hi,

I have written a very simple filter module for io-net but I am getting
following error while I try to load it.


mount -vvvv -Tio-net nfm-filter.so

Parsed: mount from [nfm-filter.so] mount on [NULL] type
exec: mount_io-net -o implied -o nostat nfm-filter.so /
Using internal mount (mount_io-net not found)
Type [io-net] Flags 0x80080000
Device [nfm-filter.so] Directory [/]
Options []
mount: Can’t mount / (type io-net)
mount: Possible reason: No such device or address



Please help me. I have tried my module with absolute path also i.e.

mount -vvvv -Tio-net /tmp/active/bin/nfm-filter.so

but it also gives same error.

Following is the code snippet that io-net will access from my module.

static io_net_registrant_t filter_reg = {
_REG_FILTER_ABOVE,
“nfm_filter.so”,
“en”,
“en”,
NULL,
&filter_funcs,
0
};

static int my_filter_init(void *dll_hdl, dispatch_t *dpp,
io_net_self_t *ion, char *options)
{
filter_dll_hdl = dll_hdl;
filter_ion = ion;
filter_dpp = dpp;

if(filter_ion->reg(filter_dll_hdl, &filter_reg,
&filter_reg_hdl, NULL, NULL) == -1)
{
fprintf(stderr, "\nreg-ERROR ");
return (-1);
}

}

Do you have a io_net_dll_entry symbol? This struct is the
initial entry point io-net looks for:

io_net_dll_entry_t io_net_dll_entry = {
2,
my_filter_init,
NULL
};

io-net should then at least poke your my_filter_init() func.

Sean Boudreau <seanb@qnx.com> wrote:

ashish19 <> ashish_its@yahoo.co-dot-in.no-spam.invalid> > wrote:
Hi,

I have written a very simple filter module for io-net but I am getting
following error while I try to load it.


mount -vvvv -Tio-net nfm-filter.so

Parsed: mount from [nfm-filter.so] mount on [NULL] type
exec: mount_io-net -o implied -o nostat nfm-filter.so /
Using internal mount (mount_io-net not found)
Type [io-net] Flags 0x80080000
Device [nfm-filter.so] Directory [/]
Options []
mount: Can’t mount / (type io-net)
mount: Possible reason: No such device or address



Please help me. I have tried my module with absolute path also i.e.

mount -vvvv -Tio-net /tmp/active/bin/nfm-filter.so

but it also gives same error.

Following is the code snippet that io-net will access from my module.

static io_net_registrant_t filter_reg = {
_REG_FILTER_ABOVE,
“nfm_filter.so”,
“en”,
“en”,
NULL,
&filter_funcs,
0
};

static int my_filter_init(void *dll_hdl, dispatch_t *dpp,
io_net_self_t *ion, char *options)
{
filter_dll_hdl = dll_hdl;
filter_ion = ion;
filter_dpp = dpp;

if(filter_ion->reg(filter_dll_hdl, &filter_reg,
&filter_reg_hdl, NULL, NULL) == -1)
{
fprintf(stderr, "\nreg-ERROR ");
return (-1);
}

}



Do you have a io_net_dll_entry symbol? This struct is the
initial entry point io-net looks for:

io_net_dll_entry_t io_net_dll_entry = {
2,
my_filter_init,
NULL
};

io-net should then at least poke your my_filter_init() func.

And your my_filter_init() should return EOK on success. Looks
like you’re running off the end and returning void.

-seanb