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

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

?? my_list.c

?? 一個使用raw socket 構造數據包的實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************** 版權所有 (C)2007, 深圳市中興通訊股份有限公司。** 文件名稱:my_list.c* 文件標識:* 內容摘要: 轉發表的處理函數* 其它說明:* 當前版本:* 作    者:丁 鵬* 完成日期:2007/12/11** 修改記錄1:   *    修改日期: *    版 本 號:*    修 改 人:                    *    修改內容:**********************************************************//*********************************************************** *                      頭文件                             ************************************************************/#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <linux/if_ether.h>#include <linux/if_packet.h>#include <netinet/ip.h>#include <sys/ioctl.h>#include <net/if.h>#define __FAVOR_BSD#include <netinet/tcp.h>#include <netinet/udp.h>#undef __FAVOR_BSD#include <netinet/in.h>#include <errno.h>#include <string.h>#include <netinet/tcp.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>#include <strings.h>#include "packet_gen.h"#include "my_list.h"/*********************************************************** *                     全局變量                            ************************************************************/ struct fib_rules  *g_fibTable;struct fib_rules  *fibTableHead;/*********************************************************** *                     全局函數                            ************************************************************/int rules_memcmp(const void * cs,const void * ct,size_t count);void rules_print();int fib_rules_init(void);int fib_rules_destroy(void);int fib_rules_length(void);int fib_rules_insert(struct fib_key *pfib_key);int fib_rules_remove(struct fib_key *pfib_key);int rules_memcmp(const void * cs,const void * ct,size_t count);int fib_rules_removeRule(struct  in_addr *pip_src);FIB_RULE *rules_isExist(struct in_addr *ip_src);/*********************************************************************** 函數名稱:fib_rules_init* 功能描述:轉發表初始化* 輸入參數:* 輸出參數:無* 返 回 值:無* 其它說明:無* 修改日期      版本號  修改人      修改內容* ---------------------------------------------------------------------* 2007/12/11             丁鵬              創建************************************************************************/int fib_rules_init(void){    fibTableHead = malloc(sizeof(struct fib_rules));    if(fibTableHead == NULL)    {        printf("fib_rules_int: malloc fib memory err\n");        return -1;    }    memset(fibTableHead, 0x00, sizeof(struct fib_rules));    fibTableHead->next = fibTableHead->prev = NULL;    return 1;}/*********************************************************************** 函數名稱:fib_rules_destroy* 功能描述:轉發表銷毀* 輸入參數:* 輸出參數:無* 返 回 值:無* 其它說明:無* 修改日期      版本號  修改人      修改內容* ---------------------------------------------------------------------* 2007/12/11             丁鵬              創建************************************************************************/int fib_rules_destroy(void){    struct fib_rules    *pFibRule, *pNode = fibTableHead;    struct  fib_address *pAddr, *pAddNode;    int i=0;    int j = 0;    pNode = pNode->next;    while(pNode != NULL)    {        pFibRule = pNode;          /* find dst address */        pAddr = pNode->pdstaddr;        while(pAddr != NULL)        {            pAddNode = pAddr;            pAddNode->next = NULL;            free(pAddNode);            pAddr = pAddr->next;            i++;            printf("i = %d\n" , i);        }                    pNode->pdstaddr  = NULL;        free(pNode);        pNode    = pFibRule->next;        j++;        printf("j = %d\n" , j);    }    free(fibTableHead);    fibTableHead = NULL;    return 1;}/*********************************************************************** 函數名稱:fib_rules_length* 功能描述:取得轉發表長度* 輸入參數:* 輸出參數:無* 返 回 值:無* 其它說明:無* 修改日期      版本號  修改人      修改內容* ---------------------------------------------------------------------* 2007/12/11             丁鵬              創建************************************************************************/int fib_rules_length(void){    unsigned int num = 0;    struct fib_rules *pNode = fibTableHead;         while(pNode != NULL)    {        num ++;        pNode = pNode->next;    }        return num;}/*********************************************************************** 函數名稱:fib_rules_insert* 功能描述:在轉發表中插入一個規則* 輸入參數:pfib_key  規則關鍵字* 輸出參數:無* 返 回 值:無* 其它說明:轉發表 轉發項中根據src 源ip地址確定轉發策略            轉發策略有 轉發給外網                            1. 轉發到一個外網口                            2. 轉發到多個外網口                       轉發給內網                            1. 轉發到一個內網口                            2. 轉發到一個內網口* 修改日期      版本號  修改人      修改內容* ---------------------------------------------------------------------* 2007/12/11             丁鵬              創建************************************************************************/int fib_rules_insert(struct fib_key *pfib_key){      struct fib_rules *pNode = fibTableHead;     struct fib_rules *pTail = fibTableHead;        struct fib_rules *new_rules;    struct fib_address *fib_addr = NULL;    struct fib_address *fib_addr_next;    struct fib_address *new_addr;    unsigned char *key;    unsigned char *rule_key;    int            keylen;    /*鏈表頭為空,說明鏈表還沒有初始化*/        if (fibTableHead == NULL)    {        printf("error! fibtable has not been inited! \n");        fib_rules_init();    }            /* 第一個鏈表元素 */    /* 第一次創建 */    if(fibTableHead->next == NULL)    {        printf("the fist creat----\n");        /* 在鏈表尾部插入 */        new_rules = (struct fib_rules *)malloc(sizeof(struct fib_rules));        if(new_rules == NULL)        {            printf("fib_rules_insert: malloc the fib_rules err\n");            return 0;        }        new_addr = (struct fib_address *)malloc(sizeof(struct fib_address));        if(new_addr == NULL)        {            printf("fib_rules_insert: malloc the fib_address err\n");            free(new_rules);            return 0;        }                pTail->next = new_rules;                new_rules->direction = pfib_key->direction;                 memcpy((unsigned char *)&new_rules->ip_src, (unsigned char *)&pfib_key->ip_src, sizeof(struct in_addr));        new_rules->pdstaddr = (struct fib_address *)new_addr;        new_rules->next = NULL;        new_rules->prev = pTail;                if (pfib_key->direction == FIB_EXTERNEL_NETWORK)        {            memcpy(&new_addr->ip_dst, &pfib_key->ip_dst, sizeof(struct fib_address));          }        else if(pfib_key->direction == FIB_INTERNEL_NETWORK)        {            memcpy(&new_addr->chipnum, &pfib_key->chipnum, sizeof(int));        }                 new_addr->next = NULL;        new_addr->prev = new_addr;        new_rules->pdstaddr = new_addr;        printf("fib_rules_insert: insert a new rule\n");        return 1;    }/*end if(fibTableHead->next == NULL) */        pNode = fibTableHead->next;    while (pNode != NULL)    {        printf("1----\n");        pTail = pNode;              /* 遍歷鏈表,判斷是否有滿足條件的節點,有則再判斷添加的dst是否存在,若dst不存在,則只添加對應的dst */        if (rules_memcmp(&pNode->ip_src, &pfib_key->ip_src, sizeof(struct in_addr)) == 0)        {                    printf("ip_src equal----\n");            /* 從一個ip地址來的只能是轉給外網或內網中的一種策略 */            if(pNode->direction != pfib_key->direction)            {                printf("the fib rules's  direction is't equal to pfib_key's direction\n");                return 0;            }                              /* 再比較dst */            printf("direction FIB_EXTERNEL_NETWORK----\n");            fib_addr_next = pNode->pdstaddr;            while(fib_addr_next != NULL)            {                printf("fib addr != null---\n");                fib_addr = fib_addr_next;                      if (pNode->direction == FIB_EXTERNEL_NETWORK)                {                    rule_key = (unsigned char *)&fib_addr->ip_dst;                    key      = (unsigned char *)&pfib_key->ip_dst;                    keylen   = sizeof(struct in_addr);                    /* 再比較dst */                    printf("direction FIB_INTERNEL_NETWORK----\n");                }                else if(pNode->direction == FIB_INTERNEL_NETWORK)                {                    rule_key = (unsigned char *)&fib_addr->chipnum;                    key      = (unsigned char *)&pfib_key->chipnum;                    keylen   = sizeof(int);                }/*end  if (pNode->direction == FIB_EXTERNEL_NETWORK) */                   if(rules_memcmp(rule_key, key, keylen) == 0)                {                    printf("the dst address exist\n");                    return -1;                }                fib_addr_next =   fib_addr_next->next;            } /* end while */            new_addr = (struct fib_address *)malloc(sizeof(struct fib_address));            if(new_addr == NULL)            {                printf("fib_rules_insert: malloc the fib_address err\n");                return 0;            }                                      if (pNode->direction == FIB_EXTERNEL_NETWORK)            {                memcpy(&new_addr->ip_dst, &pfib_key->ip_dst, sizeof(struct fib_address));              }            else if(pNode->direction == FIB_INTERNEL_NETWORK)            {                memcpy(&new_addr->chipnum, &pfib_key->chipnum, sizeof(int));            } /* end direction */            new_addr->next  = NULL;            /* 這種情況一般不會發生,pdstaddr is null----no fib_address, else has pdstaddr */            if(fib_addr == NULL)            {                printf("unlikely pdstadd null");                pNode->pdstaddr = new_addr;                 new_addr->prev = new_addr;                printf("fib_rules_insert: creat a new dst  list\n");            }            else            {                fib_addr->next = new_addr;                new_addr->prev = fib_addr;                printf("fib_rules_insert: insert a new dst into the list\n");            } /*end fib_addr */            } /* if (rules_memcmp(&pNode->ip_src, &pfib_key->ip_src, sizeof(struct in_addr)) == 0) */        pNode = pNode->next;    } /* end while */    /* create a new rules */    if(pNode == NULL)    {        printf("create a new rules----\n");        /* 在鏈表尾部插入 */        new_rules = (struct fib_rules *)malloc(sizeof(struct fib_rules));        if(new_rules == NULL)        {            printf("fib_rules_insert: malloc the fib_rules err\n");            return 0;        }        new_addr = (struct fib_address *)malloc(sizeof(struct fib_address));        if(new_addr == NULL)        {            printf("fib_rules_insert: malloc the fib_address err\n");            free(new_rules);            return 0;        }        new_rules->direction = pfib_key->direction;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人晚上爱看视频| 国产一区91精品张津瑜| 成人av影院在线| 一区二区三区在线视频免费观看 | 国产亚洲一区二区在线观看| 高清不卡一二三区| 亚洲福利一区二区三区| 欧美成人a在线| av在线不卡网| 免费一级片91| 欧美国产视频在线| 欧美夫妻性生活| 国产成人精品一区二区三区四区| 一区二区久久久久久| 日韩精品一区二区三区在线播放| 97精品电影院| 激情偷乱视频一区二区三区| 亚洲少妇屁股交4| 欧美成人一区二区| 在线观看一区日韩| 国产一区二区久久| 日韩极品在线观看| 久久精品人人做人人综合| 欧美日韩精品专区| 91色porny蝌蚪| 国产精品99久久久| 日韩av成人高清| 一区二区三区四区激情| 9191精品国产综合久久久久久 | 午夜日韩在线观看| 亚洲婷婷综合色高清在线| 91精品国产高清一区二区三区蜜臀| 九色|91porny| 日韩成人免费电影| 亚洲成人免费在线| 亚洲欧洲日产国码二区| 国产亚洲欧美一级| 日韩欧美国产三级电影视频| 91丨九色porny丨蝌蚪| 国产黄人亚洲片| 美女免费视频一区| 亚洲午夜精品在线| 亚洲欧美日韩国产另类专区| 日韩一区二区精品在线观看| 在线观看日韩电影| 色噜噜狠狠成人中文综合| 国产不卡一区视频| 国产夫妻精品视频| 国内精品写真在线观看| 蜜桃视频一区二区三区 | 久久夜色精品国产欧美乱极品| 欧美丰满高潮xxxx喷水动漫| 成人激情午夜影院| 高清免费成人av| 国产高清成人在线| 国产精品伊人色| 人人爽香蕉精品| 免费在线观看成人| 久久99国内精品| 国内精品伊人久久久久av一坑| 久久国产麻豆精品| 亚洲成人av资源| 五月婷婷综合在线| 日本美女一区二区| 紧缚捆绑精品一区二区| 久草在线在线精品观看| 日韩精品一区二区三区老鸭窝| 日韩网站在线看片你懂的| 国产网红主播福利一区二区| 亚洲欧美一区二区三区国产精品| 亚洲aaa精品| 激情综合五月婷婷| 色综合天天综合网国产成人综合天 | 精品国产欧美一区二区| 国产欧美日本一区二区三区| 亚洲免费毛片网站| 久久电影网站中文字幕| 不卡一区二区中文字幕| 欧美日韩高清一区二区不卡| 久久理论电影网| 一区二区三区视频在线看| 久久99精品久久久久| 色菇凉天天综合网| 精品国产123| 亚洲免费观看视频| 精品一区二区三区香蕉蜜桃| 色综合一个色综合亚洲| 日韩欧美中文字幕制服| 一区二区中文视频| 精品综合免费视频观看| 色哟哟日韩精品| 久久久久久久精| 图片区小说区国产精品视频 | 在线成人午夜影院| 国产精品久久久久久久久免费桃花| 天天免费综合色| www.日韩在线| 久久午夜电影网| 日本中文字幕一区二区视频 | 欧美挠脚心视频网站| 亚洲欧洲性图库| 国产精品自拍三区| 制服丝袜日韩国产| 樱花影视一区二区| 成人国产视频在线观看| 精品欧美一区二区久久 | 9人人澡人人爽人人精品| 丝瓜av网站精品一区二区| 国产成人免费在线观看| 宅男在线国产精品| 亚洲香肠在线观看| 不卡av免费在线观看| 欧美变态tickle挠乳网站| 亚洲高清免费视频| 色偷偷成人一区二区三区91| 久久久久久久久97黄色工厂| 久久99久久久久久久久久久| 欧美老年两性高潮| 亚洲国产精品人人做人人爽| 99精品国产一区二区三区不卡| 久久久噜噜噜久噜久久综合| 青青草原综合久久大伊人精品| 欧美在线看片a免费观看| 国产精品免费免费| 韩国精品一区二区| 26uuu成人网一区二区三区| 日韩精品三区四区| 欧美精三区欧美精三区| 性感美女久久精品| 欧美精品1区2区3区| 亚洲午夜免费电影| 欧美日韩国产一级| 性欧美疯狂xxxxbbbb| 欧美剧情电影在线观看完整版免费励志电影| 亚洲欧美另类小说| 色猫猫国产区一区二在线视频| 中文字幕视频一区| 91麻豆成人久久精品二区三区| 国产精品久久久久aaaa| 99re这里只有精品视频首页| 亚洲男人的天堂一区二区| 99re热这里只有精品免费视频| 18欧美乱大交hd1984| 91亚洲资源网| 亚洲最大成人综合| 欧美日韩视频在线第一区 | 五月婷婷久久综合| 91精品国产综合久久精品性色| 日日夜夜精品视频免费| 欧美一区午夜精品| 激情久久久久久久久久久久久久久久| 精品久久久久久久久久久院品网| 经典三级在线一区| 中文字幕一区日韩精品欧美| 色综合中文字幕| 天堂影院一区二区| 亚洲精品一区二区三区四区高清| 国产91精品一区二区麻豆网站| 日韩美女啊v在线免费观看| 欧美三级视频在线观看| 另类的小说在线视频另类成人小视频在线 | 色噜噜狠狠色综合中国| 亚洲18色成人| 久久影院视频免费| 一本到三区不卡视频| 日韩成人午夜精品| 国产日本欧洲亚洲| 欧洲一区二区三区在线| 蜜臀av一区二区在线观看| 国产日韩欧美麻豆| 欧美性猛交xxxxxx富婆| 国内久久精品视频| 亚洲主播在线播放| www成人在线观看| 色欧美乱欧美15图片| 九九久久精品视频| 一区二区在线观看av| 欧美精品一区二区三区高清aⅴ| 99久久99久久精品国产片果冻 | 国产精品视频麻豆| 欧美另类高清zo欧美| 成人听书哪个软件好| 日韩国产高清在线| 国产精品久久久久影院亚瑟| 欧美一区二区视频免费观看| 丁香六月久久综合狠狠色| 婷婷丁香久久五月婷婷| 国产精品理论片在线观看| 日韩视频一区二区| 91久久精品一区二区| 国产一区二区三区最好精华液| 亚洲在线观看免费| 中文乱码免费一区二区| 欧美一区二区在线播放| 色综合久久久网| 成人综合激情网| 精品在线播放免费| 丝袜美腿亚洲综合| 一区二区三区久久| 国产精品超碰97尤物18|