* checkentry function
@ 2010-10-02 11:59 Nicola Padovano
2010-10-05 5:46 ` Stephen Hemminger
0 siblings, 1 reply; 11+ messages in thread
From: Nicola Padovano @ 2010-10-02 11:59 UTC (permalink / raw)
To: netfilter-devel, netdev
Hello there.
I've written checkentry function to check my new target, in this way:
[CHECK_ENTRY_CODE]
static bool xt_tarpit_check(const char *tablename, const void *entry,
const struct xt_target *target, void *targinfo,
unsigned int hook_mask)
{
if (strcmp(tablename, "filter")) {
printk(KERN_INFO "DEBUG: the tablename (not FILTER) is %s\n",tablename);
return false;
}
return true;
}
[/CHECK_ENTRY_CODE]
but it doesn't work.
In fact if I do:
iptables -A INPUT -t filter -s 192.168.0.1 -p tcp -j TAR
the printk prints this message: DEBUG: the tablename (not FILTER) is: �%H �
so: in the tablename i haven't the string "filter"...what' the matter?
--
Nicola Padovano
e-mail: nicola.padovano@gmail.com
web: http://npadovano.altervista.org
"My only ambition is not be anything at all; it seems the most
sensible thing" (C. Bukowski)
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-02 11:59 checkentry function Nicola Padovano
@ 2010-10-05 5:46 ` Stephen Hemminger
2010-10-05 5:52 ` Nicola Padovano
0 siblings, 1 reply; 11+ messages in thread
From: Stephen Hemminger @ 2010-10-05 5:46 UTC (permalink / raw)
To: Nicola Padovano; +Cc: netfilter-devel, netdev
On Sat, 2 Oct 2010 13:59:30 +0200
Nicola Padovano <nicola.padovano@gmail.com> wrote:
> Hello there.
> I've written checkentry function to check my new target, in this way:
>
> [CHECK_ENTRY_CODE]
> static bool xt_tarpit_check(const char *tablename, const void *entry,
> const struct xt_target *target, void *targinfo,
> unsigned int hook_mask)
> {
> if (strcmp(tablename, "filter")) {
> printk(KERN_INFO "DEBUG: the tablename (not FILTER) is %s\n",tablename);
> return false;
> }
> return true;
> }
> [/CHECK_ENTRY_CODE]
>
> but it doesn't work.
> In fact if I do:
>
> iptables -A INPUT -t filter -s 192.168.0.1 -p tcp -j TAR
>
> the printk prints this message: DEBUG: the tablename (not FILTER) is: �%H �
>
> so: in the tablename i haven't the string "filter"...what' the matter?
>
In current kernels, checkentry returns errno values.
0 = okay
<0 is error (example -EINVAL).
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 5:46 ` Stephen Hemminger
@ 2010-10-05 5:52 ` Nicola Padovano
2010-10-05 6:01 ` Stephen Hemminger
0 siblings, 1 reply; 11+ messages in thread
From: Nicola Padovano @ 2010-10-05 5:52 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netfilter-devel, netdev
> In current kernels, checkentry returns errno values.
> 0 = okay
> <0 is error (example -EINVAL).
0 = ok? and then you say 0 is error? which one?
--
Nicola Padovano
e-mail: nicola.padovano@gmail.com
web: http://npadovano.altervista.org
"My only ambition is not be anything at all; it seems the most
sensible thing" (C. Bukowski)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 5:52 ` Nicola Padovano
@ 2010-10-05 6:01 ` Stephen Hemminger
2010-10-05 6:11 ` Nicola Padovano
0 siblings, 1 reply; 11+ messages in thread
From: Stephen Hemminger @ 2010-10-05 6:01 UTC (permalink / raw)
To: Nicola Padovano; +Cc: netfilter-devel, netdev
On Tue, 5 Oct 2010 07:52:39 +0200
Nicola Padovano <nicola.padovano@gmail.com> wrote:
> > In current kernels, checkentry returns errno values.
> > 0 = okay
> > <0 is error (example -EINVAL).
> 0 = ok? and then you say 0 is error? which one?
>
Negative (ie < 0) is used for error numbers. This is confusing
because in older kernels the checkentry returned a bool which
is defined as 1 okay and 0 for error.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 6:01 ` Stephen Hemminger
@ 2010-10-05 6:11 ` Nicola Padovano
2010-10-05 6:23 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: Nicola Padovano @ 2010-10-05 6:11 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netfilter-devel, netdev
>
> Negative (ie < 0) is used for error numbers. This is confusing
> because in older kernels the checkentry returned a bool which
> is defined as 1 okay and 0 for error.
>
ok i see.
and why i have this output?
DEBUG: the tablename (not FILTER) is: �%H �
I want block my target if the table name is NOT filter...so i write:
[CODE]
...
if (strcmp(tablename, "filter")) {
printk(KERN_INFO "DEBUG: the tablename (not FILTER) is %s\n",tablename);
return ERROR_VALUE; // < 0
}
[/CODE]
but in the tablename variable i haven't the table's right value (but i
have: �%H � a wrong value)...what's the problem?
--
Nicola Padovano
e-mail: nicola.padovano@gmail.com
web: http://npadovano.altervista.org
"My only ambition is not be anything at all; it seems the most
sensible thing" (C. Bukowski)
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 6:11 ` Nicola Padovano
@ 2010-10-05 6:23 ` Eric Dumazet
2010-10-05 11:16 ` Nicola Padovano
0 siblings, 1 reply; 11+ messages in thread
From: Eric Dumazet @ 2010-10-05 6:23 UTC (permalink / raw)
To: Nicola Padovano; +Cc: Stephen Hemminger, netfilter-devel, netdev
Le mardi 05 octobre 2010 à 08:11 +0200, Nicola Padovano a écrit :
> >
> > Negative (ie < 0) is used for error numbers. This is confusing
> > because in older kernels the checkentry returned a bool which
> > is defined as 1 okay and 0 for error.
> >
> ok i see.
>
> and why i have this output?
> DEBUG: the tablename (not FILTER) is: �%H �
>
> I want block my target if the table name is NOT filter...so i write:
>
> [CODE]
> ...
> if (strcmp(tablename, "filter")) {
> printk(KERN_INFO "DEBUG: the tablename (not FILTER) is %s\n",tablename);
> return ERROR_VALUE; // < 0
> }
> [/CODE]
>
> but in the tablename variable i haven't the table's right value (but i
> have: �%H � a wrong value)...what's the problem?
>
>
Because xxx_check() signature is not the one you use.
Could you read source code of _current_ existing modules , and use
copy/paste ?
static int hashlimit_mt_check(const struct xt_mtchk_param *par)
{
...
}
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 6:23 ` Eric Dumazet
@ 2010-10-05 11:16 ` Nicola Padovano
2010-10-05 11:32 ` Jan Engelhardt
0 siblings, 1 reply; 11+ messages in thread
From: Nicola Padovano @ 2010-10-05 11:16 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Stephen Hemminger, netfilter-devel, netdev
>
> Because xxx_check() signature is not the one you use.
>
> Could you read source code of _current_ existing modules , and use
> copy/paste ?
>
> static int hashlimit_mt_check(const struct xt_mtchk_param *par)
> {
> ...
> }
as i've written in a previously mail this is the checkentry function
that i use in my source code to check if the iptables command line is
a right line.
[CHECK_ENTRY_CODE]
static bool xt_tarpit_check(const char *tablename, const void *entry,
const struct xt_target *target, void *targinfo,
unsigned int hook_mask)
{
if (strcmp(tablename, "filter")) {
printk(KERN_INFO "DEBUG: the tablename (not FILTER) is %s\n",tablename);
return false;
}
return true;
}
[/CHECK_ENTRY_CODE]
but it doesn't work...NOTE: the module goes inside the function but
the tablename value is a wrong one (also if I set "-t filter" option
in the iptables command line)
i don't know what "static int hashlimit_mt_check(const struct
xt_mtchk_param *par)" is...
thank you
--
Nicola Padovano
e-mail: nicola.padovano@gmail.com
web: http://npadovano.altervista.org
"My only ambition is not be anything at all; it seems the most
sensible thing" (C. Bukowski)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 11:16 ` Nicola Padovano
@ 2010-10-05 11:32 ` Jan Engelhardt
2010-10-05 11:46 ` Nicola Padovano
0 siblings, 1 reply; 11+ messages in thread
From: Jan Engelhardt @ 2010-10-05 11:32 UTC (permalink / raw)
To: Nicola Padovano; +Cc: Eric Dumazet, Stephen Hemminger, netfilter-devel, netdev
On Tuesday 2010-10-05 13:16, Nicola Padovano wrote:
>>
>> Could you read source code of _current_ existing modules , and use
>> copy/paste ?
>>
>> static int hashlimit_mt_check(const struct xt_mtchk_param *par)
>> {
>> ...
>> }
>
>as i've written in a previously mail this is the checkentry function
>that i use in my source code to check if the iptables command line is
>a right line.
>
>[CHECK_ENTRY_CODE]
>static bool xt_tarpit_check(const char *tablename, const void *entry,
> const struct xt_target *target, void *targinfo,
> unsigned int hook_mask)
>
>i don't know what "static int hashlimit_mt_check(const struct
>xt_mtchk_param *par)" is...
It's the proper function header.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 11:32 ` Jan Engelhardt
@ 2010-10-05 11:46 ` Nicola Padovano
2010-10-05 12:03 ` Jan Engelhardt
2010-10-05 12:07 ` Eric Dumazet
0 siblings, 2 replies; 11+ messages in thread
From: Nicola Padovano @ 2010-10-05 11:46 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Eric Dumazet, Stephen Hemminger, netfilter-devel, netdev
On Tue, Oct 5, 2010 at 1:32 PM, Jan Engelhardt <jengelh@medozas.de> wrote:
> On Tuesday 2010-10-05 13:16, Nicola Padovano wrote:
>>>
>>> Could you read source code of _current_ existing modules , and use
>>> copy/paste ?
>>>
>>> static int hashlimit_mt_check(const struct xt_mtchk_param *par)
>>> {
>>> ...
>>> }
>>
>>as i've written in a previously mail this is the checkentry function
>>that i use in my source code to check if the iptables command line is
>>a right line.
>>
>>[CHECK_ENTRY_CODE]
>>static bool xt_tarpit_check(const char *tablename, const void *entry,
>> const struct xt_target *target, void *targinfo,
>> unsigned int hook_mask)
>>
>>i don't know what "static int hashlimit_mt_check(const struct
>>xt_mtchk_param *par)" is...
>
> It's the proper function header.
>
this is the whole code:
[WHOLE_CODE]
static void function_target(const struct sk_buff *oskb,
struct rtable *ort)
{
...
}
/*
* target function, called everyone the rule is satisfied
* standard behaviour: NF_DROP
*/
static unsigned int xt_tar_target(struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
unsigned int hooknum,
const struct xt_target *target,
const void *targinfo)
{
struct rtable *rt = (void *)skb->_skb_refdst;
function_target(skb,rt);
return NF_DROP;
}
/*
* xt_tarpit_check, it allows only:
* 1. raw table & PRE_ROUTING hook or
* 2. filter table & (LOCAL_IN or FORWARD) hook
*/
static bool xt_function_check(const char *tablename, const void *entry,
const struct xt_target *target, void *targinfo,
unsigned int hook_mask)
{
if (strcmp(tablename, "filter"))
{
printk(KERN_INFO "!=filter %s\n",tablename);
return false;
}
return true;
}
static struct xt_target xt_tar_reg = {
.name = "FUN", /* target name */
.family = AF_INET, /* level 3 protocol */
.proto = IPPROTO_TCP, /* we recognize only tcp protocol */
.target = xt_tar_target, /* pointer to target function */
.checkentry = xt_function_check, /* pointer to check-entry function */
.me = THIS_MODULE,
};
/*
* initing module function
*/
static int __init xt_tar_init(void)
{
return xt_register_target(&xt_tar_reg);
}
/*
* delete module
*/
static void __exit xt_tar_exit(void)
{
xt_unregister_target(&xt_tar_reg);
printk(KERN_INFO "TARPIT> !!!exit!!! \n");
}
module_init(xt_tar_init);
module_exit(xt_tar_exit);
/* information about the module and its author */
MODULE_DESCRIPTION("TARPIT target, info: http://npadovano.altervista.org");
MODULE_AUTHOR("Nicola Padovano <nicola.padovano@gmail.com>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("xt_TAR");
[/WHOLE_CODE]
--
Nicola Padovano
e-mail: nicola.padovano@gmail.com
web: http://npadovano.altervista.org
"My only ambition is not be anything at all; it seems the most
sensible thing" (C. Bukowski)
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 11:46 ` Nicola Padovano
@ 2010-10-05 12:03 ` Jan Engelhardt
2010-10-05 12:07 ` Eric Dumazet
1 sibling, 0 replies; 11+ messages in thread
From: Jan Engelhardt @ 2010-10-05 12:03 UTC (permalink / raw)
To: Nicola Padovano; +Cc: Eric Dumazet, Stephen Hemminger, netfilter-devel, netdev
On Tuesday 2010-10-05 13:46, Nicola Padovano wrote:
>On Tue, Oct 5, 2010 at 1:32 PM, Jan Engelhardt <jengelh@medozas.de> wrote:
>> On Tuesday 2010-10-05 13:16, Nicola Padovano wrote:
>>>>
>>>> Could you read source code of _current_ existing modules , and use
>>>> copy/paste ?
>>>>
>>>> static int hashlimit_mt_check(const struct xt_mtchk_param *par)
>>>> {
>>>> ...
>>>> }
>>>
>
>this is the whole code:
>
>[WHOLE_CODE]
>static bool xt_function_check(const char *tablename, const void *entry,
> const struct xt_target *target, void *targinfo,
> unsigned int hook_mask)
>{
>
> if (strcmp(tablename, "filter"))
> {
> printk(KERN_INFO "!=filter %s\n",tablename);
> return false;
> }
>
> return true;
>}
And as Stephen said, the proper type for current kernels
is
(static) bool xt_function_check(const struct xt_mtchk_param *par).
If you are compiling against such, you should have gotten appropriate
warnings from gcc.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: checkentry function
2010-10-05 11:46 ` Nicola Padovano
2010-10-05 12:03 ` Jan Engelhardt
@ 2010-10-05 12:07 ` Eric Dumazet
1 sibling, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2010-10-05 12:07 UTC (permalink / raw)
To: Nicola Padovano
Cc: Jan Engelhardt, Stephen Hemminger, netfilter-devel, netdev
Le mardi 05 octobre 2010 à 13:46 +0200, Nicola Padovano a écrit :
> On Tue, Oct 5, 2010 at 1:32 PM, Jan Engelhardt <jengelh@medozas.de> wrote:
> > On Tuesday 2010-10-05 13:16, Nicola Padovano wrote:
> >>>
> >>> Could you read source code of _current_ existing modules , and use
> >>> copy/paste ?
> >>>
> >>> static int hashlimit_mt_check(const struct xt_mtchk_param *par)
> >>> {
> >>> ...
> >>> }
> >>
> >>as i've written in a previously mail this is the checkentry function
> >>that i use in my source code to check if the iptables command line is
> >>a right line.
> >>
> >>[CHECK_ENTRY_CODE]
> >>static bool xt_tarpit_check(const char *tablename, const void *entry,
> >> const struct xt_target *target, void *targinfo,
> >> unsigned int hook_mask)
> >>
> >>i don't know what "static int hashlimit_mt_check(const struct
> >>xt_mtchk_param *par)" is...
> >
> > It's the proper function header.
> >
>
> this is the whole code:
>
> [WHOLE_CODE]
> [/WHOLE_CODE]
>
Nicola
For the second and last time, could you please _read_ _current_ kernel
source code, and correct your code, before asking us ?
We do not support prehistoric kernels.
Thank you
Dont ask us if you are not able to find hashlimit_mt_check() or any
checkentry function in current kernel sources.
# find net/netfilter/ | xargs grep -n _check
net/netfilter/nf_conntrack_proto_dccp.c:596: if (net->ct.sysctl_checksum && hooknum == NF_INET_PRE_ROUTING &&
net/netfilter/nf_conntrack_proto_dccp.c:597: nf_checksum_partial(skb, hooknum, dataoff, cscov, IPPROTO_DCCP,
net/netfilter/xt_connmark.c:77:static int connmark_tg_check(const struct xt_tgchk_param *par)
net/netfilter/xt_connmark.c:107:static int connmark_mt_check(const struct xt_mtchk_param *par)
net/netfilter/xt_connmark.c:127: .checkentry = connmark_tg_check,
net/netfilter/xt_connmark.c:138: .checkentry = connmark_mt_check,
net/netfilter/xt_CT.c:57:static int xt_ct_tg_check(const struct xt_tgchk_param *par)
net/netfilter/xt_CT.c:149: .checkentry = xt_ct_tg_check,
...
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-10-05 12:08 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-02 11:59 checkentry function Nicola Padovano
2010-10-05 5:46 ` Stephen Hemminger
2010-10-05 5:52 ` Nicola Padovano
2010-10-05 6:01 ` Stephen Hemminger
2010-10-05 6:11 ` Nicola Padovano
2010-10-05 6:23 ` Eric Dumazet
2010-10-05 11:16 ` Nicola Padovano
2010-10-05 11:32 ` Jan Engelhardt
2010-10-05 11:46 ` Nicola Padovano
2010-10-05 12:03 ` Jan Engelhardt
2010-10-05 12:07 ` Eric Dumazet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).