亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ip6t_frag.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/* Kernel module to match FRAG parameters. *//* (C) 2001-2002 Andras Kis-Szabo <kisza@sch.bme.hu> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/module.h>#include <linux/skbuff.h>#include <linux/ipv6.h>#include <linux/types.h>#include <net/checksum.h>#include <net/ipv6.h>#include <asm/byteorder.h>#include <linux/netfilter_ipv6/ip6_tables.h>#include <linux/netfilter_ipv6/ip6t_frag.h>MODULE_LICENSE("GPL");MODULE_DESCRIPTION("IPv6 FRAG match");MODULE_AUTHOR("Andras Kis-Szabo <kisza@sch.bme.hu>");#if 0#define DEBUGP printk#else#define DEBUGP(format, args...)#endif#if 0#if     BYTE_ORDER == BIG_ENDIAN#define IP6F_OFF_MASK       0xfff8  /* mask out offset from _offlg */#define IP6F_RESERVED_MASK  0x0006  /* reserved bits in ip6f_offlg */#define IP6F_MORE_FRAG      0x0001  /* more-fragments flag */#else   /* BYTE_ORDER == LITTLE_ENDIAN */#define IP6F_OFF_MASK       0xf8ff  /* mask out offset from _offlg */#define IP6F_RESERVED_MASK  0x0600  /* reserved bits in ip6f_offlg */#define IP6F_MORE_FRAG      0x0100  /* more-fragments flag */#endif#endif#define IP6F_OFF_MASK       0xf8ff  /* mask out offset from _offlg */#define IP6F_RESERVED_MASK  0x0600  /* reserved bits in ip6f_offlg */#define IP6F_MORE_FRAG      0x0100  /* more-fragments flag */struct fraghdr {       __u8    nexthdr;       __u8    hdrlen;       __u16   info;       __u32   id;};/* Returns 1 if the id is matched by the range, 0 otherwise */static inline intid_match(u_int32_t min, u_int32_t max, u_int32_t id, int invert){       int r=0;       DEBUGP("frag id_match:%c 0x%x <= 0x%x <= 0x%x",invert? '!':' ',              min,id,max);       r=(id >= min && id <= max) ^ invert;       DEBUGP(" result %s\n",r? "PASS" : "FAILED");       return r;}static intmatch(const struct sk_buff *skb,      const struct net_device *in,      const struct net_device *out,      const void *matchinfo,      int offset,      const void *protohdr,      u_int16_t datalen,      int *hotdrop){       struct fraghdr *frag = NULL;       const struct ip6t_frag *fraginfo = matchinfo;       unsigned int temp;       int len;       u8 nexthdr;       unsigned int ptr;       unsigned int hdrlen = 0;       /* type of the 1st exthdr */       nexthdr = skb->nh.ipv6h->nexthdr;       /* pointer to the 1st exthdr */       ptr = sizeof(struct ipv6hdr);       /* available length */       len = skb->len - ptr;       temp = 0;        while (ip6t_ext_hdr(nexthdr)) {               struct ipv6_opt_hdr *hdr;              DEBUGP("ipv6_frag header iteration \n");              /* Is there enough space for the next ext header? */                if (len < (int)sizeof(struct ipv6_opt_hdr))                        return 0;              /* No more exthdr -> evaluate */                if (nexthdr == NEXTHDR_NONE) {                     break;              }              /* ESP -> evaluate */                if (nexthdr == NEXTHDR_ESP) {                     break;              }              hdr=(struct ipv6_opt_hdr *)skb->data+ptr;              /* Calculate the header length */                if (nexthdr == NEXTHDR_FRAGMENT) {                        hdrlen = 8;                } else if (nexthdr == NEXTHDR_AUTH)                        hdrlen = (hdr->hdrlen+2)<<2;                else                        hdrlen = ipv6_optlen(hdr);              /* FRAG -> evaluate */                if (nexthdr == NEXTHDR_FRAGMENT) {                     temp |= MASK_FRAGMENT;                     break;              }              /* set the flag */              switch (nexthdr){                     case NEXTHDR_HOP:                     case NEXTHDR_ROUTING:                     case NEXTHDR_FRAGMENT:                     case NEXTHDR_AUTH:                     case NEXTHDR_DEST:                            break;                     default:                            DEBUGP("ipv6_frag match: unknown nextheader %u\n",nexthdr);                            return 0;                            break;              }                nexthdr = hdr->nexthdr;                len -= hdrlen;                ptr += hdrlen;		if ( ptr > skb->len ) {			DEBUGP("ipv6_frag: new pointer too large! \n");			break;		}        }       /* FRAG header not found */       if ( temp != MASK_FRAGMENT ) return 0;       if (len < (int)sizeof(struct fraghdr)){	       *hotdrop = 1;       		return 0;       }       frag = (struct fraghdr *) (skb->data + ptr);       DEBUGP("IPv6 FRAG LEN %u %u ", hdrlen, frag->hdrlen);       DEBUGP("INFO %04X ", frag->info);       DEBUGP("OFFSET %04X ", frag->info & IP6F_OFF_MASK);       DEBUGP("RES %04X ", frag->info & IP6F_RESERVED_MASK);       DEBUGP("MF %04X ", frag->info & IP6F_MORE_FRAG);       DEBUGP("ID %u %08X\n", ntohl(frag->id), ntohl(frag->id));       DEBUGP("IPv6 FRAG id %02X ",       		(id_match(fraginfo->ids[0], fraginfo->ids[1],                           ntohl(frag->id),                           !!(fraginfo->invflags & IP6T_FRAG_INV_IDS))));       DEBUGP("len %02X %04X %02X ",       		fraginfo->hdrlen, hdrlen,       		(!fraginfo->hdrlen ||                           (fraginfo->hdrlen == hdrlen) ^                           !!(fraginfo->invflags & IP6T_FRAG_INV_LEN)));       DEBUGP("res %02X %02X %02X ",        		(fraginfo->flags & IP6T_FRAG_RES), frag->info & IP6F_RESERVED_MASK,       		!((fraginfo->flags & IP6T_FRAG_RES) && (frag->info & IP6F_RESERVED_MASK)));       DEBUGP("first %02X %02X %02X ",        		(fraginfo->flags & IP6T_FRAG_FST), frag->info & IP6F_OFF_MASK,       		!((fraginfo->flags & IP6T_FRAG_FST) && (frag->info & IP6F_OFF_MASK)));       DEBUGP("mf %02X %02X %02X ",        		(fraginfo->flags & IP6T_FRAG_MF), frag->info & IP6F_MORE_FRAG,       		!((fraginfo->flags & IP6T_FRAG_MF) && !((frag->info & IP6F_MORE_FRAG))));       DEBUGP("last %02X %02X %02X\n",        		(fraginfo->flags & IP6T_FRAG_NMF), frag->info & IP6F_MORE_FRAG,       		!((fraginfo->flags & IP6T_FRAG_NMF) && (frag->info & IP6F_MORE_FRAG)));       return (frag != NULL)       		&&       		(id_match(fraginfo->ids[0], fraginfo->ids[1],                           ntohl(frag->id),                           !!(fraginfo->invflags & IP6T_FRAG_INV_IDS)))		&&	      	(!fraginfo->hdrlen ||                           (fraginfo->hdrlen == hdrlen) ^                           !!(fraginfo->invflags & IP6T_FRAG_INV_LEN))		&&		!((fraginfo->flags & IP6T_FRAG_RES) && (frag->info & IP6F_RESERVED_MASK))		&&		!((fraginfo->flags & IP6T_FRAG_FST) && (frag->info & IP6F_OFF_MASK))		&&		!((fraginfo->flags & IP6T_FRAG_MF) && !((frag->info & IP6F_MORE_FRAG)))		&&		!((fraginfo->flags & IP6T_FRAG_NMF) && (frag->info & IP6F_MORE_FRAG));}/* Called when user tries to insert an entry of this type. */static intcheckentry(const char *tablename,          const struct ip6t_ip6 *ip,          void *matchinfo,          unsigned int matchinfosize,          unsigned int hook_mask){       const struct ip6t_frag *fraginfo = matchinfo;       if (matchinfosize != IP6T_ALIGN(sizeof(struct ip6t_frag))) {              DEBUGP("ip6t_frag: matchsize %u != %u\n",                      matchinfosize, IP6T_ALIGN(sizeof(struct ip6t_frag)));              return 0;       }       if (fraginfo->invflags & ~IP6T_FRAG_INV_MASK) {              DEBUGP("ip6t_frag: unknown flags %X\n",                      fraginfo->invflags);              return 0;       }       return 1;}static struct ip6t_match frag_match = {	.name		= "frag",	.match		= &match,	.checkentry	= &checkentry,	.me		= THIS_MODULE,};static int __init init(void){       return ip6t_register_match(&frag_match);}static void __exit cleanup(void){       ip6t_unregister_match(&frag_match);}module_init(init);module_exit(cleanup);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲乱码日产精品bd| 欧美亚一区二区| 亚洲欧美国产三级| 视频在线观看一区二区三区| 99国产精品视频免费观看| 日日夜夜免费精品视频| 成人伦理片在线| 国产伦精品一区二区三区免费| 一区二区三区精品视频| 亚洲一区av在线| 日韩高清在线观看| 一本色道久久加勒比精品| 国产成人av电影在线| 成人一道本在线| 欧美大片国产精品| 日韩欧美激情在线| 亚洲一二三专区| 日韩制服丝袜先锋影音| 日韩高清一区在线| 国内外成人在线| 国产成人午夜精品5599| 调教+趴+乳夹+国产+精品| 亚洲高清视频中文字幕| 国产精品久久久久久亚洲伦| 欧美精品 日韩| av毛片久久久久**hd| 狠狠网亚洲精品| 欧美一级国产精品| 欧美三级午夜理伦三级中视频| 岛国精品在线播放| 色狠狠桃花综合| 精品国产成人系列| 国产精品久久三| 亚洲成人三级小说| 午夜日韩在线观看| 欧美性猛交一区二区三区精品| 欧美一区二区网站| 国产精品毛片a∨一区二区三区| 日韩你懂的在线观看| 日韩精品三区四区| 在线播放一区二区三区| 国产亚洲美州欧州综合国| 日韩一区二区三区四区五区六区| 亚洲自拍偷拍av| 床上的激情91.| 欧美三级欧美一级| 五月开心婷婷久久| 91玉足脚交白嫩脚丫在线播放| 欧美揉bbbbb揉bbbbb| 亚洲高清久久久| 欧美电视剧免费全集观看| 中文字幕在线观看一区| 美女一区二区视频| 91在线观看高清| 亚洲综合图片区| 日韩手机在线导航| 国产毛片精品视频| 337p亚洲精品色噜噜噜| 日韩精品在线一区| 国产91丝袜在线观看| 亚洲欧美一区二区久久 | 久久久精品天堂| 精品成人一区二区三区| 亚洲精品国产精华液| 欧美人xxxx| 亚洲一区在线视频观看| 日韩欧美国产午夜精品| 粉嫩一区二区三区在线看| 日韩免费观看2025年上映的电影| 国产成人日日夜夜| 亚洲一区中文日韩| 在线观看日产精品| 亚洲影院免费观看| 色婷婷综合激情| 精品一区二区三区视频在线观看| 成人亚洲精品久久久久软件| 亚洲欧美激情小说另类| 久久女同性恋中文字幕| 欧美三级电影网| 成人在线一区二区三区| 中文无字幕一区二区三区| 久久精品国产亚洲aⅴ| 91精品国产91久久久久久最新毛片| 国产精品一区免费在线观看| 久久久精品日韩欧美| 777久久久精品| 免费一级欧美片在线观看| 欧美成人女星排名| 亚洲图片你懂的| 美女尤物国产一区| 亚洲日本青草视频在线怡红院 | 99精品偷自拍| 久久成人免费电影| 欧美精品一区男女天堂| 精品伊人久久久久7777人| www久久久久| 亚洲综合色噜噜狠狠| 亚洲国产精品ⅴa在线观看| 日韩一本二本av| 国产露脸91国语对白| 视频一区欧美精品| 亚洲影院久久精品| 欧美成人午夜电影| 成人免费av在线| 亚洲男人的天堂在线aⅴ视频| 欧美性猛交一区二区三区精品| 男人的天堂久久精品| 亚洲永久免费av| 欧美mv日韩mv国产| 日韩一区二区在线免费观看| 国内欧美视频一区二区| 国产精品久久久久影院色老大| 久久综合一区二区| 色香蕉成人二区免费| 日韩精品电影一区亚洲| 亚洲一区二区三区爽爽爽爽爽| 亚洲永久免费视频| 久久精品亚洲麻豆av一区二区 | 国产精品久久久久一区二区三区共| 欧美一卡2卡3卡4卡| 91精品国产aⅴ一区二区| 欧美一级片在线观看| 成人综合婷婷国产精品久久| 亚洲电影中文字幕在线观看| 亚洲在线成人精品| 国产亚洲人成网站| 国产精品麻豆网站| 亚洲欧美另类久久久精品| 日韩精品中文字幕在线一区| 精品久久久久久亚洲综合网| 91年精品国产| 欧美三级中文字幕在线观看| 国产精品1024| 美女视频网站久久| 亚洲一区免费观看| 中文字幕av一区 二区| 亚洲欧美一区二区在线观看| 久久久夜色精品亚洲| 中日韩av电影| 国产网站一区二区三区| 亚洲精品一二三区| 中文字幕不卡在线观看| 亚洲欧美日韩电影| 天堂资源在线中文精品| 久久成人精品无人区| 成人免费黄色大片| 国产精品小仙女| 在线免费观看视频一区| 成人午夜大片免费观看| 国精产品一区一区三区mba桃花| 国产激情视频一区二区在线观看| 一本久久a久久精品亚洲| 日韩一二三区视频| 91麻豆精品国产自产在线观看一区 | 成人一区在线观看| 欧美日韩五月天| 欧美高清在线精品一区| 久久噜噜亚洲综合| 日韩精品资源二区在线| 中文字幕制服丝袜成人av| 日本午夜精品一区二区三区电影| 午夜精品一区二区三区免费视频 | 国产一区二区三区最好精华液| 成人av高清在线| 亚洲成av人片观看| 亚洲国产婷婷综合在线精品| 亚洲一二三四在线观看| 亚洲电影你懂得| 成人免费看视频| 久久这里只有精品视频网| 午夜欧美在线一二页| 99久久国产综合精品色伊| 亚洲精品一区二区三区四区高清 | 亚洲精品日韩综合观看成人91| 国产精品国产自产拍在线| 美女在线视频一区| 欧美性猛片aaaaaaa做受| 51精品视频一区二区三区| 精品久久国产字幕高潮| 亚洲123区在线观看| 精品伊人久久久久7777人| 国产成人免费在线视频| 91丨porny丨首页| 久久精品一区二区三区不卡| 久久精品久久精品| 欧美一级二级三级蜜桃| 欧美激情综合网| 国产乱子伦视频一区二区三区| 日韩精品一区二区三区四区| 婷婷夜色潮精品综合在线| 欧美少妇bbb| 午夜精品成人在线| 国产福利一区二区三区| 一本久久a久久免费精品不卡| 国产精品美日韩| www.综合网.com| 欧美一区二区三区日韩视频| 久久久久久夜精品精品免费| 久久精品国产久精国产| 欧美成人伊人久久综合网|