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

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

?? rreq.c

?? 一種AODV實現方法
?? 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.h"/****************************************************   rreq----------------------------------------------------Handles the generation of RREQ and recieving****************************************************/extern u_int32_t g_broadcast_ip;extern struct route_table_entry *g_my_entry;void convert_rreq_to_host(struct rreq *tmp_rreq){    tmp_rreq->rreq_id=ntohl(tmp_rreq->rreq_id);    tmp_rreq->dst_seq=ntohl(tmp_rreq->dst_seq);    tmp_rreq->src_seq=ntohl(tmp_rreq->src_seq);}void convert_rreq_to_network(struct rreq *tmp_rreq){    tmp_rreq->rreq_id=htonl(tmp_rreq->rreq_id);    tmp_rreq->dst_seq=htonl(tmp_rreq->dst_seq);    tmp_rreq->src_seq=htonl(tmp_rreq->src_seq);}/****************************************************   recv_rreq----------------------------------------------------Handles the recieving of RREQs****************************************************/int recv_rreq(struct event_queue_entry *working_packet){    struct rreq *working_rreq;    struct interface_list_entry *tmp_interface;    struct rreq       *out_rreq;  /* Forwarded RREQ */    struct route_table_entry   *tmp_entry;       /* Routing table entry */    struct rreq_id_queue_entry *tmp_rreq_id;    u_int64_t          current_time;  /* Current time */    int size_out;    /* Update the hop count */#ifdef MESSAGES    char src_ip[16];    char dst_ip[16];#endif    working_rreq=working_packet->data;    convert_rreq_to_host(working_rreq);    //find what interface the packet was recived on    tmp_interface=find_interface_by_dev(working_packet->dev);    if (tmp_interface==NULL)    {	#ifdef MESSAGES        printk ("RECV_RREQ: Recieved on a RREQ from an unrecognized interface.\n");	#endif        return 1;    }#ifdef TRACE    printk("REC_RREQ: Entered");#endif#ifdef TRACE    strcpy(src_ip,inet_ntoa(working_rreq->src_ip));    strcpy(dst_ip,inet_ntoa(working_rreq->dst_ip));    printk("RREQ: Recieved a RREQ -  src: %s dst: %s \n",src_ip,dst_ip);#endif    /* Look in the route request list to see if the node has       already received this request. */    tmp_rreq_id = find_rreq_id_queue_entry(working_rreq->src_ip, working_rreq->rreq_id);    current_time = getcurrtime(); /* Get the current time */    /* Check if an entry in the route request list was found, and if it's       still valid. If there is a valid entry, this request shouldn't be       checked. */    if (tmp_rreq_id != NULL)   // && (check_rreq_id_queue_entry_lifetime(tmp_rreq_id)==0))    {        return 0;    }    /* Have not received this RREQ within BCAST_ID_SAVE time */    /* Add this RREQ to the list for further checks */    if (insert_rreq_id_queue_entry(working_rreq->src_ip, working_rreq->dst_ip,working_rreq->rreq_id, current_time + PATH_TRAVERSAL_TIME) == 1)    {        /* Couldn't add the entry, ignore and continue */    }    working_rreq->hop_count=working_rreq->hop_count+1;    /* UPDATE REVERSE */    update_route_entry(working_rreq->src_ip,  working_packet->src_ip, working_rreq->hop_count, working_rreq->dst_seq, working_packet->dev);#ifdef TRACE    printk("updated reverse route!\n");#endif    tmp_entry = find_route_table_entry(working_rreq->dst_ip);    if ((working_rreq->dst_ip == tmp_interface->ip) ||            (tmp_entry != NULL && tmp_entry->route_valid && tmp_entry->route_seq_valid) )    {        if (working_rreq->u || seq_less_or_equal(working_rreq->dst_seq,tmp_entry->dst_seq ))            /* The node already had a valid route to the destination */        {            if (!working_rreq->d || (find_interface_by_ip(working_rreq->dst_ip)!=NULL))            {                //If the RREQ is addressed to us and we have the same Seq as the RREQ we up our Seq by one                if ((find_interface_by_ip(working_rreq->dst_ip)!=NULL) && (working_rreq->dst_seq==tmp_entry->dst_seq))                {                    tmp_entry->dst_seq++;                }#ifdef MESSAGES                strcpy(src_ip,inet_ntoa(working_rreq->src_ip));                strcpy(dst_ip,inet_ntoa(working_rreq->dst_ip));                printk("RREQ: Generating RREP -  src: %s dst: %s \n",src_ip,dst_ip);#endif                /* Call for gen_rrep to send a Route Reply */                gen_rrep(working_rreq->src_ip,working_rreq->dst_ip,working_packet->src_ip,working_rreq->dst_seq,working_rreq->g);#ifdef TRACE                printk("REC_RREQ:  for me - exited");#endif                return 0;            }        }    }    /* The node didn't have a valid route to the destination */    if ((working_packet->ttl) <=1)    {#ifdef TRACE        printk("REC_RREQ: No valid route and TTL too small to forward - exited");#endif        return 0;    }#ifdef TRACE    strcpy(src_ip,inet_ntoa(working_rreq->src_ip));    strcpy(dst_ip,inet_ntoa(working_rreq->dst_ip));    printk("RREQ: Forwarding a RREQ -  ttl: %d src: %s dst: %s  \n",working_packet->ttl,src_ip,dst_ip);#endif    if ((out_rreq = (struct rreq*) kmalloc(sizeof (struct rreq),GFP_ATOMIC)) == NULL)    {			#ifdef MESSAGES        printk("RREQ: Error creating a new RREQ\n");			#endif        /* Failed to allocate memory for forwarded RREQ */        return 1;    }    size_out=sizeof(struct rreq);    /* Set the RREQ structure */    out_rreq->type = 1;    out_rreq->j = working_rreq->j;    out_rreq->r = working_rreq->r;    out_rreq->g = working_rreq->g;    out_rreq->d = working_rreq->d;    out_rreq->u = working_rreq->u;    out_rreq->reserved = 0;    out_rreq->hop_count = working_rreq->hop_count;    out_rreq->dst_ip = working_rreq->dst_ip;    out_rreq->src_ip = working_rreq->src_ip;    //we want it to be network byte order    out_rreq->src_seq = htonl(working_rreq->src_seq);    out_rreq->rreq_id = htonl(working_rreq->rreq_id);    /* Set the right sequence number */    if (tmp_entry!=NULL)    {        if (seq_greater(working_rreq->dst_seq, tmp_entry->dst_seq))            out_rreq->dst_seq=htonl(working_rreq->dst_seq);        else            out_rreq->dst_seq=htonl(tmp_entry->dst_seq);    }    else        out_rreq->dst_seq = htonl(working_rreq->dst_seq);    /* Set the destination IP to broadcast */#ifdef TRACE    printk("constructed out RREQ!\n");#endif    /* Call send_datagram to send and forward the RREQ */    local_broadcast(working_packet->ttl-1, out_rreq, sizeof(struct rreq));#ifdef TRACE    printk("REC_RREQ: Unkown route - exited");#endif    kfree(out_rreq);    return 0;}/****************************************************   gen_rreq----------------------------------------------------Generates a RREQ! wahhooo!****************************************************/int gen_rreq(u_int32_t src_ip, u_int32_t dst_ip){    struct route_table_entry *tmp_entry;    struct rreq *out_rreq, *timer_rreq;    u_int8_t  out_ttl;#ifdef TRACE    printk("REC_RREQ: Entered\n");#endif    /* Do not send rreq to the same host again if its already in the timer queue */    if (find_first_timer_queue_entry_of_id_and_flag(dst_ip,EVENT_RREQ) != NULL)        return 0;    /* Allocate memory for the rreq message */    if ((out_rreq = (struct rreq*) kmalloc(sizeof(struct rreq),GFP_ATOMIC)) == NULL)    {#ifndef NO_ERROR        printk("GEN_RREQ: Can't allocate new rreq\n");#endif        return 1;    }    /* Allocate memory for the timer queue position for the rreq */    if ((timer_rreq = kmalloc(sizeof(struct rreq),GFP_ATOMIC))==NULL)    {#ifndef NO_ERROR        printk("GEN_RREQ: Can't allocate for a new timer queue position\n");#endif        /* Couldn't allocate memory */        return 1;    }    /* Get routing table entry for destination */    tmp_entry = find_route_table_entry(dst_ip);    if (tmp_entry == NULL)    {        /* Entry does not exist -> set to initial values*/        out_rreq->dst_seq = 0;        out_rreq->u = TRUE;        out_ttl =  TTL_START;    }    else    {        /* Entry does exist -> get value from rt */        out_rreq->dst_seq = htonl(tmp_entry->dst_seq);        if (tmp_entry->route_seq_valid)        {            out_rreq->u=FALSE;        }        else        {            out_rreq->u=TRUE;        }        out_ttl =  tmp_entry->hop_count + TTL_INCREMENT;    }    /* Get routing table entry for source, when this is ourself this one should allways exist*/    tmp_entry = (find_interface_by_ip(src_ip))->route_entry;    if (tmp_entry == NULL)    {#ifndef NO_ERROR        printk("GEN_RREQ: Can't get route to self\n");#endif        return 1;    }    /* Get our own sequence number */    (tmp_entry->rreq_id)++;    tmp_entry->dst_seq=tmp_entry->dst_seq+1;    out_rreq->src_seq = htonl(tmp_entry->dst_seq);    out_rreq->rreq_id = htonl(tmp_entry->rreq_id);    /* Fill in the package */    out_rreq->dst_ip = dst_ip;    out_rreq->src_ip = src_ip;    out_rreq->type = 1;    out_rreq->hop_count = htonl(0);    out_rreq->j = 0;    out_rreq->r = 0;    out_rreq->d = 0;    out_rreq->reserved = 0;    out_rreq->second_reserved = 0;    out_rreq->g=1;    /* Get the broadcast address and ttl right */    if (insert_rreq_id_queue_entry(out_rreq->src_ip, out_rreq->dst_ip,out_rreq->rreq_id, getcurrtime() + 2* out_ttl * NODE_TRAVERSAL_TIME) == 1)    {#ifndef NO_ERROR        printk("GEN_RREQ: Can't add to broadcast list\n");#endif        return 1;    }    memcpy(timer_rreq,out_rreq,sizeof(struct rreq));    insert_timer_queue_entry(getcurrtime() + NET_TRAVERSAL_TIME,timer_rreq, sizeof(struct rreq),out_rreq->dst_ip,0,out_ttl, EVENT_RREQ);    update_timer_queue();    local_broadcast(out_ttl,out_rreq,sizeof(struct rreq));    kfree(out_rreq);    #ifdef TRACE    printk("GEN_RREQ: Exited\n");#endif    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩激情视频网站| 亚洲一区二区在线视频| 日韩视频一区二区在线观看| 欧美网站一区二区| 欧美日韩国产一级| 欧美福利一区二区| 日韩一级黄色片| 久久久久国色av免费看影院| 久久久蜜臀国产一区二区| 欧美国产精品一区二区三区| 国产精品国产自产拍高清av王其| 亚洲欧洲韩国日本视频| 亚洲日本韩国一区| 婷婷综合另类小说色区| 日韩vs国产vs欧美| 国产高清视频一区| 99精品欧美一区二区三区综合在线| 91免费国产在线| 欧美二区三区91| 精品久久久久一区| 最新不卡av在线| 日韩专区中文字幕一区二区| 乱一区二区av| 成人av影院在线| 欧美午夜影院一区| 欧美成人艳星乳罩| 亚洲丝袜制服诱惑| 蜜臀a∨国产成人精品| 国产99久久久久久免费看农村| 99精品国产视频| 欧美三级三级三级爽爽爽| 日韩限制级电影在线观看| 国产精品久久久久国产精品日日| 亚洲一区二区视频在线| 国产在线播放一区| 欧美性感一类影片在线播放| 久久综合色婷婷| 樱花影视一区二区| 国产一区二区三区免费观看| 欧美性色综合网| 国产午夜精品理论片a级大结局| 亚洲激情男女视频| 国产高清一区日本| 日韩欧美高清在线| 亚洲午夜精品一区二区三区他趣| 久久成人免费电影| 欧美伦理视频网站| 亚洲免费视频成人| 国产精品123区| 欧美成人女星排行榜| 亚洲精品va在线观看| 国产不卡视频在线播放| 91精品国产色综合久久不卡电影 | 日日夜夜免费精品| 成人免费看片app下载| 欧美一级一区二区| 亚洲成人动漫在线免费观看| av不卡在线播放| 久久九九影视网| 精品一区二区三区在线播放| 欧美色网站导航| 一区二区三区加勒比av| 成人av集中营| 国产欧美日韩精品一区| 寂寞少妇一区二区三区| 91精品国产乱| 日韩av一区二区三区四区| 欧美日韩在线精品一区二区三区激情| 国产欧美精品一区二区三区四区 | 国产精品99久| 久久综合久久综合久久| 精品一区二区国语对白| 91精品免费在线观看| 日韩高清在线不卡| 91精品国产欧美一区二区18| 午夜精品福利一区二区三区蜜桃| 日本道在线观看一区二区| 综合久久久久久| 91福利视频在线| 亚洲aⅴ怡春院| 日韩欧美电影在线| 国产高清久久久| 亚洲欧洲精品成人久久奇米网| 99久久精品免费| 一二三区精品福利视频| 欧美日韩电影在线| 久久丁香综合五月国产三级网站| 337p粉嫩大胆色噜噜噜噜亚洲| 国产真实乱偷精品视频免| 久久精品亚洲精品国产欧美kt∨| 国产成人在线免费| 中文字幕制服丝袜一区二区三区 | 欧美大片在线观看一区| 久久国产精品免费| 国产亚洲欧洲997久久综合| 99久久精品免费看国产| 亚洲二区在线视频| 精品久久五月天| 成人av在线资源网站| 亚洲电影中文字幕在线观看| 日韩一区二区三区精品视频| 国产精品亚洲午夜一区二区三区| 亚洲视频一二三| 91精品国产高清一区二区三区蜜臀| 精品无码三级在线观看视频| 国产精品国产三级国产普通话三级 | 国内精品伊人久久久久影院对白| 国产日韩综合av| 91国产成人在线| 理论电影国产精品| 亚洲伦理在线免费看| 欧美大片在线观看一区二区| 91亚洲精品一区二区乱码| 日一区二区三区| 日韩伦理电影网| 精品噜噜噜噜久久久久久久久试看 | 国产精品自在欧美一区| 亚洲激情自拍偷拍| 久久九九99视频| 欧美浪妇xxxx高跟鞋交| 波多野结衣在线一区| 麻豆国产精品一区二区三区 | 欧美a一区二区| 1000部国产精品成人观看| 欧美一区二区三区日韩| 91福利精品第一导航| 国产98色在线|日韩| 日本vs亚洲vs韩国一区三区 | 欧美日韩成人在线| 99精品国产91久久久久久| 国内精品免费在线观看| 日韩黄色免费网站| 一区二区在线观看av| 国产亚洲一区二区三区在线观看| 7777精品伊人久久久大香线蕉完整版| 99re热视频这里只精品| 成人禁用看黄a在线| 国产成人免费视频| 国产一区二区免费看| 日本va欧美va欧美va精品| 午夜视频一区二区三区| 亚洲自拍偷拍九九九| 亚洲免费看黄网站| 亚洲精品菠萝久久久久久久| 国产精品护士白丝一区av| 欧美—级在线免费片| 国产区在线观看成人精品| 国产亚洲一区字幕| 国产精品嫩草99a| 国产精品国产三级国产普通话三级 | 国模一区二区三区白浆| 久久99久久久欧美国产| 国产综合久久久久久鬼色| 另类欧美日韩国产在线| 国产一区在线视频| 成人午夜av影视| 95精品视频在线| 91国内精品野花午夜精品| 欧美色综合网站| 欧美麻豆精品久久久久久| 91精品国产综合久久久蜜臀图片| 欧美一区二区啪啪| 26uuu国产电影一区二区| 2021国产精品久久精品| 欧美高清在线一区| 亚洲欧美日韩国产综合| 亚洲国产成人高清精品| 日本欧美一区二区三区乱码| 麻豆精品在线视频| 成人午夜精品在线| 欧美午夜在线观看| 精品盗摄一区二区三区| 国产午夜亚洲精品不卡| 亚洲乱码一区二区三区在线观看| 亚洲va国产va欧美va观看| 激情国产一区二区 | 另类小说色综合网站| 国产精品一二三| 91久久国产最好的精华液| 91精品婷婷国产综合久久竹菊| 久久免费电影网| 一区二区三区在线视频免费观看| 免费精品视频在线| 99免费精品视频| 日韩午夜精品电影| 亚洲乱码国产乱码精品精小说 | 大胆欧美人体老妇| 欧美日韩国产欧美日美国产精品| 欧美精品一区二区三区四区| 国产精品久久久久国产精品日日| 日韩福利电影在线| 99久久久精品| 精品动漫一区二区三区在线观看| 自拍偷拍亚洲综合| 国产一区二区中文字幕| 欧美丰满一区二区免费视频| 国产精品乱码一区二三区小蝌蚪| 日韩成人免费看| 91福利国产成人精品照片| 国产丝袜美腿一区二区三区|