Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Linux netfilterÔ´Âë·ÖÎö(5)


Îå¡¢ ipt_do_table()º¯Êý£¬Êý¾Ý°üµÄ¹ýÂË
 
5.1          ipt_entry Ïà¹Ø½á¹¹  ip_tables.h
ipt_entry½á¹¹Ç°ÃæÓйýÁË£¬ÔÙ¿´Ò»±é
struct ipt_entry
{
struct ipt_ip ip;
/* ËùҪƥÅäµÄ±¨ÎĵÄIPÍ·ÐÅÏ¢ */
unsigned int nfcache;
/* λÏòÁ¿£¬±êʾ±¾¹æÔò¹ØÐı¨ÎĵÄʲô²¿·Ö£¬ÔÝδʹÓà */
u_int16_t target_offset;
/* targetÇøµÄÆ«ÒÆ£¬Í¨³£targetÇøÎ»ÓÚmatchÇøÖ®ºó£¬¶ømatchÇøÔòÔÚipt_entryµÄĩβ£»
³õʼ»¯Îªsizeof(struct ipt_entry)£¬¼´¼Ù¶¨Ã»ÓÐmatch */
u_int16_t next_offset;
/* ÏÂÒ»Ìõ¹æÔòÏà¶ÔÓÚ±¾¹æÔòµÄÆ«ÒÆ£¬Ò²¼´±¾¹æÔòËùÓÿռäµÄ×ܺͣ¬
³õʼ»¯Îªsizeof(struct ipt_entry)+sizeof(struct ipt_target)£¬¼´Ã»ÓÐmatch */
unsigned int comefrom;
/* λÏòÁ¿£¬±ê¼Çµ÷Óñ¾¹æÔòµÄHOOKºÅ£¬¿ÉÓÃÓÚ¼ì²é¹æÔòµÄÓÐЧÐÔ */
struct ipt_counters counters;
/* ¼Ç¼¸Ã¹æÔò´¦Àí¹ýµÄ±¨ÎÄÊýºÍ±¨ÎÄ×Ü×Ö½ÚÊý */
unsigned char elems[0];
/*target»òÕßÊÇmatchµÄÆðʼλÖà */
}
 
ipt_ip½á¹¹  ip_tables.h
struct ipt_ip {
      struct in_addr src, dst;         /* À´Ô´/Ä¿µÄµØÖ· */
      struct in_addr smsk, dmsk;     /* À´Ô´/Ä¿µÄµØÖ·µÄÑÚÂë */
 
      char iniface[IFNAMSIZ], outiface[IFNAMSIZ];    /*ÊäÈëÊä³öÍøÂç½Ó¿Ú*/
      unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
 
      u_int16_t proto;    /* ЭÒé, 0 = ANY */
     
      u_int8_t flags;      /* ±êÖ¾×Ö¶Î */
      u_int8_t invflags;    /* È¡·´±êÖ¾ */
};
 
 
5.2  ipt_do_tableº¯Êý   ip_tables.c
 
unsigned int
ipt_do_table(struct sk_buff **pskb,
           unsigned int hook,
           const struct net_device *in,
    &


Ïà¹ØÎĵµ£º

Linux netfilterÔ´Âë·ÖÎö(3)

תÌù×Ô£ºhttp://alexanderlaw.blog.hexun.com/8968782_d.html
Èý¡¢ipt_table±íµÄ×¢²á
 
init£¨£©º¯Êý³õʼ»¯Ê±µ÷ÓÃÁËipt_register_tableº¯Êý½øÐбíµÄ×¢²á
 
3.1  ip_tables.c ±íµÄ×¢²á ipt_register_table
int ipt_register_table(struct ipt_table *table)
{
       ......

Linux»·¾³½ø³Ì¼äͨÐÅ£¨¶þ£©£¨Ï£©


Linux»·¾³½ø³Ì¼äͨÐÅ£¨¶þ£©:
Ðźţ¨Ï£©
ÎĵµÑ¡Ïî
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width=& ......

¹ØÓÚLinuxÄÚºËѧϰµÄÎóÇø

¡¡¡¡¡¡¡¡¡¡Ð´¸øLinuxÄÚºËÐÂÊÖ-¹ØÓÚLinuxÄÚºËѧϰµÄÎóÇø
-----¸Ð¾õÕâÆªÎÄÕ²»´í£¬Óзdz£¶à½è¼øµÄµØ·½,so×ªÔØ¹ýÀ´ÁË
¡¡¡¡ÏÈ˵¾äÕý¾­µÄ£ºÆäʵÎÒû×ʸñдÕâÆªÎÄÕ£¬ÒòΪ×Ô¼ºÒ²¾ÍÒ»Á½¸öÔÂÒÔÀ´²Å¿ªÊ¼ÓÐËùÁìÎòµÄ¡£Òò´Ë£¬ÕâÀïºÍÆä˵ÊǹØÓÚLinuxÄÚºËѧϰµÄ¾­Ñ飬²»Èç˵ÊÇ×Ô¼ºµÄ½Ìѵ°É£¬Ï£Íû²»ÒªÈÓ¼¦µ°ÔÒÎÒ^_^
¡¡¡¡¡¡³£³£ÓÐÈËÎÊ£ºÎ ......

ÆÊÎöLinuxϵͳÆô¶¯¹ý³Ì

ÄÚÈÝÌáÒª
¡¡¡¡±¾ÎÄÒÔRedHat9.0ºÍi386ƽ̨ΪÀý£¬ÆÊÎöÁË´ÓÓû§´ò¿ªµçÔ´Ö±µ½ÆÁÄ»³öÏÖÃüÁîÐÐÌáʾ·ûµÄÕû¸öLinuxÆô¶¯¹ý³Ì¡£²¢ÇÒ½éÉÜÁËÆô¶¯ÖÐÉæ¼°µ½µÄ¸÷ÖÖÎļþ¡£
¡¡¡¡ÔĶÁLinuxÔ´´úÂ룬ÎÞÒÉÊÇÉîÈëѧϰLinuxµÄ×îºÃ·½·¨¡£ÔÚ±¾ÎĶÔLinuxÆô¶¯¹ý³ÌµÄ½éÉÜÖУ¬ÎÒÃÇÒ²³¢ÊÔ´ÓÔ´´úÂëµÄÊÓ½ÇÀ´¸üÉîÈëµÄÆÊÎöLinuxµÄÆô¶¯¹ý³Ì£¬ËùÒÔÆäÖÐÒ²¼òµ¥Éæ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ