hi *, in the struct ipt_entry (which defines a rule) why do we have "target_offset" and "next_offset" in struct ipt_entry { /*...*/ /* Size of ipt_entry + matches */ u_int16_t target_offset; /* Size of ipt_entry + matches + target */ u_int16_t next_offset; /*...*/ }; as pointers to get to ipt_entry_target structure and the next ipt_entry structures respectively? couldnt we have "struct ipt_entry_target *target" and "struct ipt_entry *next_entry" or something like that in struct ipt_entry { /*...*/ struct ipt_entry_target *target; struct ipt_entry *next_entry; /*...*/ }; instead of offset values, for which we have to perform addition operation as extra? is there any specific reason for having offset values like that instead of pointers to structure types ? it may not be much of a overhead performing the calculations, but why? avati -- God is Dead -- Nietzsche Nietzsche is Dead -- God Nietzsche is God -- The Dead -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/