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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rreq_id_queue.c

?? 一種AODV實現(xiàn)方法
?? C
字號:
/*               Kernel AODV  v2.0National Institute of Standards and Technology               Luke Klein-Berndt-----------------------------------------------------  Version 2.0 new features:     * Updated to AODV draft version 11     * Managed internet gatewaying     * Monitor wireles signal strength     * Many bug fixes!-----------------------------------------------------Originally based upon MadHoc code. I am notsure how much of it is left anymore, but MadHocproved to be a great starting point.MadHoc was written by - Fredrik Lilieblad,Oskar Mattsson, Petra Nylund, Dan Ouchterlonyand Anders Roxenhag Mail: mad-hoc@flyinglinux.netThis software is Open Source under the GNU General Public Licence.*/#include "rreq_id_queue.h"/****************************************************   rreq_id_queue----------------------------------------------------This is used to keep track of messages whichare flooded to prevent rebroadcast of messages****************************************************/struct rreq_id_queue_entry *rreq_id_queue;/****************************************************   init_rreq_id_queue----------------------------------------------------Gets the ball rolling!****************************************************/int init_rreq_id_queue( void ){    rreq_id_queue=NULL;    return 0;}/****************************************************   find_rreq_id_queue_entry----------------------------------------------------will search the queue for an entry with thematching ID and src_ip****************************************************/struct rreq_id_queue_entry *find_rreq_id_queue_entry(u_int32_t src_ip, u_int32_t rreq_id){    struct rreq_id_queue_entry  *tmp_entry;  /* Working entry in the RREQ list */    tmp_entry = rreq_id_queue; /* Start at the header */    //go through the whole queue    while (tmp_entry!=NULL)    {        //if there is a match and it is still valid        if (src_ip == tmp_entry->src_ip && rreq_id == tmp_entry->rreq_id)            if (check_rreq_id_queue_entry_lifetime(tmp_entry) == 0)                return tmp_entry;        //continue on to the next entry        tmp_entry=tmp_entry->next;    }    return NULL;}/****************************************************   read_rreq_id_proc----------------------------------------------------prints out the flood id queue when the procfile is read****************************************************/int read_rreq_id_proc(char *buffer, char **buffer_location, off_t offset, int buffer_length,int *eof,void *data){    int len;    static char *my_buffer;    char temp_buffer[80];    struct rreq_id_queue_entry *tmp_entry;    char tmp[16];    u_int64_t tmp_time;    tmp_entry=rreq_id_queue;    my_buffer=buffer;    sprintf(my_buffer,"\nFlood Id Queue\n---------------------------------\n");    while (tmp_entry!=NULL)    {        tmp_time=tmp_entry->lifetime-getcurrtime();        strcpy(tmp,inet_ntoa(tmp_entry->dst_ip));        sprintf(temp_buffer,"Src IP: %-16s  Dst IP: %-16s Flood ID: %-10u sec/msec: %lu/%lu \n", inet_ntoa(tmp_entry->src_ip),tmp,tmp_entry->rreq_id,(unsigned long)(tmp_time) / 1000, (unsigned long)(tmp_time) % 1000);        strcat(my_buffer,temp_buffer);        tmp_entry=tmp_entry->next;    }    sprintf(temp_buffer,"\n---------------------------------\n");    strcat(my_buffer,temp_buffer);    *buffer_location=my_buffer;    len = strlen(my_buffer);    if (len <= offset+buffer_length) *eof = 1;    *buffer_location = my_buffer + offset;    len -= offset;    if (len>buffer_length) len = buffer_length;    if (len<0) len = 0;    return len;}/****************************************************   print_rreq_id_queue----------------------------------------------------prints out the flood id queue onto the consolescreen****************************************************/void print_rreq_id_queue(){    struct rreq_id_queue_entry *tmp_entry;    char tmp[16];    tmp_entry=rreq_id_queue;    printk("Flood ID list:\n");    while (tmp_entry!=NULL)    {        strcpy(tmp,inet_ntoa(tmp_entry->dst_ip));        printk("Src IP: %-16s  Dst IP: %-16s Flood ID: %-10u  \n", inet_ntoa(tmp_entry->src_ip),tmp,tmp_entry->rreq_id);        tmp_entry=tmp_entry->next;    }}/****************************************************   clean_up_rreq_id_queue----------------------------------------------------Deletes everything in the flood id queue****************************************************/void cleanup_rreq_id_queue(){    struct rreq_id_queue_entry *tmp_entry,*dead_entry;    int count=0;    tmp_entry=rreq_id_queue;#ifdef MESSAGES    print_rreq_id_queue();#endif    while (tmp_entry!=NULL)    {        dead_entry=tmp_entry;        tmp_entry=tmp_entry->next;        kfree(dead_entry);        count++;    }#ifdef MESSAGES    printk("Removed %d Flood ID entries! \n",count);    printk("---------------------------------------------\n");#endif}/****************************************************   insert_rreq_id_queue_entry----------------------------------------------------Inserts an entry into the flood ID queue****************************************************/int insert_rreq_id_queue_entry(u_int32_t ip, u_int32_t dst_ip,u_int32_t id, u_int64_t lt){    struct rreq_id_queue_entry  *new_entry; /* Pointer to the working entry */    /* The header wasn't empty, find the last entry */    /* Allocate memory for the new entry */    if ((new_entry = (struct rreq_id_queue_entry*)kmalloc(sizeof(struct rreq_id_queue_entry),GFP_ATOMIC)) == NULL)    {#ifndef NO_ERROR        printk("INSERT_FLOOD_ID_QUEUE_ENTRY: Error creating flood ID queue entry\n");#endif        /* Failed to allocate memory for new Route Request */        return 1;    }    /* Fill in the information in the new entry */    new_entry->src_ip = ip;    new_entry->dst_ip = dst_ip;    new_entry->rreq_id = id;    new_entry->lifetime = lt;    new_entry->next = rreq_id_queue;    /* Put the new entry in the list */    rreq_id_queue=new_entry;    return 0;}/****************************************************   check_rreq_id_queue_entry_lifetime----------------------------------------------------Checks the lifetime of a flood ID queue entry.Returns 0 if it is valid and 1 if it is not!****************************************************/int check_rreq_id_queue_entry_lifetime(struct rreq_id_queue_entry *tmp_entry){    u_int64_t  curr_time = getcurrtime(); /* Current time */    /* Check if the entry is valid */    if ((tmp_entry!=NULL )&&(curr_time > tmp_entry->lifetime))    {        return 1;    }    if (tmp_entry==NULL)	#ifndef NO_ERROR        printk("check_rreq_id_queue_lifetime passed a NULL\n");	#endif    return 0;}/****************************************************   delete_old_rreq_id_queue_entries----------------------------------------------------Goes through the flood ID queue and deletesall of the old entries****************************************************/void delete_old_rreq_id_queue_entries(void ){    struct rreq_id_queue_entry *tmp_entry,*prev_entry,*dead_entry;    u_int64_t  curr_time = getcurrtime(); /* Current time */    tmp_entry=rreq_id_queue;    prev_entry=NULL;    //go through the entire queue    while(tmp_entry!=NULL)    {        //if the entry has expired        if (curr_time > tmp_entry->lifetime)        {            //if it is the first entry            if(prev_entry==NULL)                rreq_id_queue=NULL;            else                prev_entry->next=tmp_entry->next;            //kill it!            dead_entry=tmp_entry;            tmp_entry=tmp_entry->next;            kfree(dead_entry);        }        else        {            //next entry            prev_entry=tmp_entry;            tmp_entry=tmp_entry->next;        }    }}/****************************************************   delete_rreq_id_queue_entry----------------------------------------------------Deletes a flood id queue entry****************************************************/int delete_rreq_id_queue_entry(struct rreq_id_queue_entry *dead_entry){    struct rreq_id_queue_entry *tmp_entry, *prev_entry;    tmp_entry=rreq_id_queue;    prev_entry=NULL;    //since we don't know the previous entry we have to go    //through entire list to find it!    while (tmp_entry!=NULL)    {        //if we find the entry we wish to delete        if(tmp_entry==dead_entry)        {            if (prev_entry==NULL)                rreq_id_queue=NULL;            else                prev_entry->next=tmp_entry->next;            kfree(tmp_entry);            return 0;        }        tmp_entry=tmp_entry->next;    }    return 1;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费视频网址| 国产精品毛片久久久久久久 | 日韩电影一区二区三区四区| 久久99精品国产麻豆婷婷| 91美女视频网站| 久久色在线观看| 天涯成人国产亚洲精品一区av| 成人一区二区在线观看| 欧美一级精品大片| 亚洲va欧美va国产va天堂影院| 成年人国产精品| 国产欧美综合在线观看第十页| 免费国产亚洲视频| 在线不卡一区二区| 亚洲一二三四久久| 色婷婷亚洲婷婷| 亚洲日本丝袜连裤袜办公室| 成人精品鲁一区一区二区| 亚洲一区av在线| 99久久精品免费看国产免费软件| 久久综合色婷婷| 久久成人免费日本黄色| 日韩一区二区三区在线视频| 婷婷久久综合九色综合绿巨人 | 在线观看91精品国产麻豆| 亚洲欧美色图小说| 91啦中文在线观看| 亚洲激情自拍视频| 欧美图片一区二区三区| 亚洲综合成人网| 欧美色区777第一页| 亚洲成人自拍网| 制服丝袜亚洲精品中文字幕| 亚洲超碰97人人做人人爱| 欧美日韩一区二区在线观看视频| 午夜视黄欧洲亚洲| 91精品国产91热久久久做人人| 丝袜美腿亚洲一区二区图片| 91精品国产一区二区三区| 美女网站在线免费欧美精品| 精品乱人伦一区二区三区| 国产在线播放一区| 欧美高清在线精品一区| 99精品欧美一区二区三区小说 | 国产精品福利av| 91伊人久久大香线蕉| 亚洲超碰97人人做人人爱| 69久久99精品久久久久婷婷| 麻豆专区一区二区三区四区五区| 精品免费国产一区二区三区四区| 国产精一品亚洲二区在线视频| 国产精品国产三级国产a| 欧美三级电影精品| 极品少妇xxxx偷拍精品少妇| 国产精品欧美一区二区三区| 色悠悠亚洲一区二区| 日本不卡一区二区| 国产日产欧产精品推荐色| 色婷婷精品大视频在线蜜桃视频| 日日噜噜夜夜狠狠视频欧美人| 日韩精品一区二区三区四区 | 国产福利精品导航| 亚洲蜜桃精久久久久久久| 欧美一区日韩一区| 成人av集中营| 久久精品99久久久| 一区二区三区四区在线免费观看 | 蜜桃一区二区三区在线观看| 国产午夜久久久久| 欧美亚洲动漫另类| 国产九色sp调教91| 无吗不卡中文字幕| 中文字幕欧美一| 欧美大度的电影原声| 91在线观看污| 国产在线播放一区二区三区| 亚洲一区在线电影| 国产精品女同互慰在线看| 欧美日韩国产成人在线免费| 国产91精品露脸国语对白| 亚洲一区二区三区四区在线观看| 国产日韩av一区二区| 欧美一区二区精品久久911| 99re这里只有精品首页| 麻豆国产欧美一区二区三区| 亚洲午夜日本在线观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产午夜精品一区二区三区视频| 欧美日韩国产另类不卡| 99国产精品久久久| 成人免费黄色在线| 国产又黄又大久久| 久久99精品国产91久久来源| 亚洲成人一区二区| 一区二区三区四区不卡在线| 国产农村妇女精品| 国产日韩欧美麻豆| 久久精品一区二区三区四区| 日韩欧美成人一区| 在线综合+亚洲+欧美中文字幕| 欧美无人高清视频在线观看| 色呦呦国产精品| 色综合一区二区| 日韩欧美在线网站| 欧美无人高清视频在线观看| 91美女片黄在线观看91美女| 国产夫妻精品视频| 国产成人精品aa毛片| 国产美女一区二区三区| 国产精品系列在线观看| 国产成人在线看| 成人18视频在线播放| 成人黄页毛片网站| 99re这里只有精品首页| 日本道在线观看一区二区| 色域天天综合网| 欧美精品日韩一本| 3atv一区二区三区| 久久久久久久一区| 综合av第一页| 亚洲成av人片在www色猫咪| 日本欧美在线看| 韩国毛片一区二区三区| 国产一区二区三区四区在线观看| 国产精品99久久不卡二区| 成人午夜在线播放| 色老汉av一区二区三区| 欧美日韩一区二区在线观看视频| 337p亚洲精品色噜噜噜| 亚洲精品在线观看网站| 国产精品网友自拍| 亚洲一区二区三区影院| 石原莉奈在线亚洲二区| 国产精品资源站在线| av成人老司机| 欧美一区二区视频在线观看2022 | 国产一区二区三区美女| av一区二区三区在线| 欧美日韩国产成人在线91| 欧美mv日韩mv国产网站| 亚洲日本中文字幕区| 午夜精品久久久久久久久久| 精品影视av免费| 99re8在线精品视频免费播放| 欧美在线|欧美| 精品日韩在线观看| 亚洲天堂中文字幕| 久久精品av麻豆的观看方式| 成人蜜臀av电影| 欧美一区二区三区免费大片 | 老司机精品视频一区二区三区| 国产成人av电影免费在线观看| 在线一区二区三区| 日韩欧美中文一区二区| 亚洲欧美日韩国产成人精品影院| 日本欧美一区二区在线观看| 91网站在线观看视频| 欧美成人精品1314www| 亚洲免费在线视频| 国产精品一区免费视频| 欧美日本精品一区二区三区| 久久久精品国产免大香伊| 亚洲成人一区在线| 成人av午夜电影| 久久久久国产免费免费| 日韩av在线发布| 日本韩国欧美一区| 久久精品欧美一区二区三区不卡| 性久久久久久久久久久久| 99久久er热在这里只有精品66| 日韩欧美在线观看一区二区三区| 亚洲精选免费视频| 懂色av一区二区三区免费观看| 欧美一区二区三区不卡| 亚洲午夜电影网| 色综合天天做天天爱| 欧美国产日本韩| 国产一区二区在线观看免费| 日韩一级片在线播放| 亚洲一区在线观看网站| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 在线观看国产日韩| 亚洲欧美日本在线| 不卡区在线中文字幕| 欧美韩日一区二区三区| 国产福利电影一区二区三区| 精品久久99ma| 久久国产精品99久久人人澡| 91精品婷婷国产综合久久竹菊| 亚洲午夜在线视频| 精品视频一区二区三区免费| 亚洲午夜视频在线观看| 日本大香伊一区二区三区| 亚洲免费av高清| 91福利视频久久久久| 亚洲免费看黄网站| 色乱码一区二区三区88| 亚洲综合精品久久| 欧美日韩久久不卡| 日本中文一区二区三区|