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

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

?? route_table.c

?? linux 下的aodv實現源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        while ( tmp_precursor!=NULL)        {            sprintf(temp_buffer,"\t\t-: Precursor -->   %s\n",inet_ntoa(tmp_precursor->ip));            strcat(my_buffer,temp_buffer);            tmp_precursor=tmp_precursor->next;        }#endif        tmp_entry=tmp_entry->next;        }/*unlock table*/route_read_unlock();        strcat(my_buffer,"---------------------------------------------------------------------------------\n\n");    len = strlen(my_buffer);    *buffer_location = my_buffer + offset;    len -= offset;    if (len > buffer_length)        len = buffer_length;    else if (len < 0)        len = 0;    return len;}/****************************************************   print_precursors----------------------------------------------------It will print the precursors for a route tableentry****************************************************/void print_precursors(struct route_table_entry *tmp_entry){    struct precursor_entry  *tmp_precursor;    tmp_precursor=tmp_entry->precursors;    while ( tmp_precursor!=NULL)    {        printk("          -: Precursor -->   %s\n",inet_ntoa(tmp_precursor->ip));        tmp_precursor=tmp_precursor->next;    }}/****************************************************   print_route_table----------------------------------------------------Prints out the current routing table to theconsole screen****************************************************/void print_route_table(){    struct route_table_entry *tmp_entry;    char dst[16];    char hop[16];    tmp_entry=route_table;    printk(KERN_INFO "---------------------------------------------\n");    while (tmp_entry!=NULL)    {        strcpy(hop,inet_ntoa(tmp_entry->next_hop));        strcpy(dst,inet_ntoa(tmp_entry->dst_ip));        printk(KERN_INFO "(  Dst: %s Dst Seq: %d  Hop Count: %d Next Hop: %s  )\n",dst ,tmp_entry->dst_seq,tmp_entry->hop_count,hop);        print_precursors(tmp_entry);        tmp_entry=tmp_entry->next;        // printk("printed one entry\n");    }    printk(KERN_INFO "---------------------------------------------\n");}/****************************************************   cleanup_route_table----------------------------------------------------Erases everything in the routing table and thekernel routing table****************************************************/int  cleanup_route_table(void){    struct route_table_entry *tmp_entry, *dead_entry;    int count=0;    tmp_entry=route_table;    print_route_table();    while(tmp_entry!=NULL)    {        if(delete_kernel_route_entry(tmp_entry->dst_ip, tmp_entry->next_hop) != 0)	  printk(KERN_WARNING "AODV: Error removing Kernel route to: %s\n",inet_ntoa((__u32) tmp_entry->dst_ip));        delete_precursors_from_route_table_entry(tmp_entry);        dead_entry=tmp_entry;        tmp_entry=tmp_entry->next;        kfree(dead_entry);        count++;    }    route_table=NULL;    return 0;}/* * add_precursor * * Description: *   Allocates memory for a new precursor and inserts it in *   the precursor list for the destination given by the argument. * * Arguments: *   struct artentry *tmp_artentry - Routing table entry for the destination *   u_intr32_t tmp_ip - IP address for the precursor to insert * * Returns: *   int - 0 if precursor is successfully created *        -1 otherwise. *//****************************************************   insert_precursor_entry----------------------------------------------------Allocates and adds a precursor to a routeentry****************************************************/int insert_precursor_entry(struct route_table_entry *tmp_entry, u_int32_t tmp_ip){    struct precursor_entry *tmp_precursor;    if(find_precursor_entry(tmp_entry, tmp_ip) == NULL)    {        if((tmp_precursor = kmalloc(sizeof(struct precursor_entry),GFP_ATOMIC)) == NULL)        {            printk(KERN_WARNING "AODV: Error adding precusrosr\n");            return -ENOMEM;        }	        tmp_precursor->next = tmp_entry->precursors;        tmp_precursor->prev = NULL;        tmp_precursor->ip = tmp_ip;        if (tmp_entry->precursors!=NULL)            tmp_entry->precursors->prev = tmp_precursor;        tmp_entry->precursors=tmp_precursor;        return 0;    }    return -EINVAL;}/****************************************************   delete_precursor----------------------------------------------------Deletes a precurs from a route entries list ofprecursors****************************************************/void delete_precursor_entry(struct route_table_entry *tmp_entry, u_int32_t tmp_ip){    struct precursor_entry *tmp_precursor;    if((tmp_precursor = find_precursor_entry(tmp_entry, tmp_ip)) != NULL)    {        if (tmp_precursor->prev!=NULL)            tmp_precursor->prev->next = tmp_precursor->next;        if (tmp_precursor->next!=NULL)            tmp_precursor->next->prev = tmp_precursor->prev;        if (tmp_entry->precursors == tmp_precursor)            tmp_entry->precursors=tmp_precursor->next;        kfree(tmp_precursor);    }}/****************************************************   delete_precursor_entry_from_route_table----------------------------------------------------Removes a precursor from all route table entries****************************************************/void delete_precursor_entry_from_route_table(u_int32_t tmp_ip){    struct route_table_entry *tmp_entry;        /*lock table*/    route_read_lock();            tmp_entry=route_table;    while (tmp_entry!=NULL)    {        delete_precursor_entry(tmp_entry, tmp_ip);        tmp_entry=tmp_entry->next;    }    /*unlock table*/    route_read_unlock();    }/****************************************************   find_precursor_entry----------------------------------------------------Will find a precursor entry in a route tableentries list of precursors****************************************************/struct precursor_entry* find_precursor_entry(struct route_table_entry *tmp_entry, u_int32_t tmp_ip){    struct precursor_entry *tmp_precursor;    tmp_precursor=tmp_entry->precursors;    while (tmp_precursor!=NULL)    {        if(tmp_precursor->ip == tmp_ip)            return tmp_precursor;        tmp_precursor=tmp_precursor->next;    }    return NULL;}/****************************************************   update_reverse_route_entry----------------------------------------------------Will create or update a reverse route to node****************************************************/int update_route_entry(u_int32_t ip, u_int32_t next_hop_ip, u_int8_t hop_count, u_int32_t seq, struct net_device *dev){    struct route_table_entry  *tmp_entry;    u_int64_t        curr_time;    /*lock table*/    tmp_entry = find_route_table_entry(ip); /* Get entry from RT if there is one */    if ((tmp_entry == NULL) || (!tmp_entry->route_valid) ||            (!tmp_entry->route_seq_valid) ||            (seq_greater( seq , tmp_entry->dst_seq)) ||            ((seq == tmp_entry->dst_seq) &&             (hop_count < tmp_entry->hop_count)))    {        /* If there didn't exist an entry in RT to the source, create it */        if (tmp_entry == NULL)        {	  /*unlock table*/	  tmp_entry = create_route_table_entry();	  /*lock table*/	  if (tmp_entry==NULL) // Thanks to M. Musuvathi for catching this!	    return -ENOMEM;	  tmp_entry->dst_ip = ip;        }        else //Since the entry existed we might want to change krt        {            delete_kernel_route_entry(tmp_entry->dst_ip, tmp_entry->next_hop);        }	if (tmp_entry->self_route)	  {	    printk("updating a SELF-ROUTE!!! %s hopcount %d\n",inet_ntoa(next_hop_ip),hop_count);	    if   (!tmp_entry->route_valid) 	      printk("because route was invalid!\n");	                if (!tmp_entry->route_seq_valid) 	      printk("because seq was invalid!\n");	                if (seq_greater( seq , tmp_entry->dst_seq))	      printk("because seq of route was lower!\n");            if ((seq == tmp_entry->dst_seq) && (hop_count < tmp_entry->hop_count))	      printk("becase seq same but hop lower!\n");	  }        /* Update values in the RT entry */        tmp_entry->dst_seq = seq;        tmp_entry->next_hop = next_hop_ip;        tmp_entry->hop_count = hop_count;        tmp_entry->dev= dev;        tmp_entry->route_valid=TRUE;        insert_kernel_route_entry(tmp_entry->dst_ip, tmp_entry->next_hop,tmp_entry->dev->name);        ipq_send_ip(ip);    }    curr_time = getcurrtime(); /* Get current time */    /* Check if the lifetime in RT is valid, if not update it */    tmp_entry->lifetime = curr_time+ACTIVE_ROUTE_TIMEOUT;    return 0;}/****************************************************   delete_precursors_from_route_table_entry----------------------------------------------------Removes all of a route table entries precurosrs****************************************************/void delete_precursors_from_route_table_entry(struct route_table_entry *tmp_entry){    struct precursor_entry *tmp_precursor;    struct precursor_entry *dead_precursor;    tmp_precursor=tmp_entry->precursors;    while (tmp_precursor!=NULL)    {        dead_precursor=tmp_precursor;        tmp_precursor=tmp_precursor->next;        kfree(dead_precursor);    }    tmp_entry->precursors=NULL;}/****************************************************   create_kernel_route_entry----------------------------------------------------Creates a Kernel Routing table entry****************************************************/struct rtentry *create_kernel_route_entry(u_int32_t dst_ip, u_int32_t gw_ip,char *interf){    struct rtentry *new_rtentry;    struct sockaddr_in dst;    struct sockaddr_in gw;    struct sockaddr_in genmask;    if((new_rtentry = kmalloc(sizeof(struct rtentry),GFP_ATOMIC)) == NULL)    {#ifndef NO_ERROR        printk("KRTABLE: Gen- Error generating a route entry\n");#endif        return NULL; /* Malloc failed */    }    dst.sin_family = AF_INET;    gw.sin_family = AF_INET;    genmask.sin_family = AF_INET;    dst.sin_addr.s_addr = dst_ip;    gw.sin_addr.s_addr = gw_ip;    genmask.sin_addr.s_addr=g_broadcast_ip;    new_rtentry->rt_flags = RTF_UP | RTF_HOST | RTF_GATEWAY;    new_rtentry->rt_metric = 0;    //new_rtentry->rt_dev = NULL;    new_rtentry->rt_dev = interf;    new_rtentry->rt_dst = *(struct sockaddr *) &dst;    new_rtentry->rt_gateway = *(struct sockaddr*) &gw;    new_rtentry->rt_genmask = *(struct sockaddr*) &genmask;    return new_rtentry;}/****************************************************   insert_kernel_route_entry----------------------------------------------------Creates an entry in the kernel routing table****************************************************/int insert_kernel_route_entry(u_int32_t dst_ip, u_int32_t gw_ip,char *interf){    struct rtentry  *new_krtentry;    mm_segment_t oldfs;    int error;#ifdef TRACE    char dst[16];    char gw[16];#endif    if ((new_krtentry = create_kernel_route_entry(dst_ip, gw_ip,interf)) == NULL)    {    	#ifndef NO_ERROR        printk("trouble creating route table entry!\n");	#endif        return -1;    }    oldfs = get_fs();    set_fs(get_ds());    error=ip_rt_ioctl(SIOCADDRT, (char*) new_krtentry);#ifdef TRACE    strcpy(dst,inet_ntoa(dst_ip));    strcpy(gw,inet_ntoa(gw_ip));    printk("ADD_KROUTE: Added kroute to: %s thru: %s  \n",dst,gw);#endif    set_fs(oldfs);    kfree(new_krtentry);    return 0;}/****************************************************   delete_kernel_route_entry----------------------------------------------------Removes a entry from the Kernel routing table****************************************************/int delete_kernel_route_entry(u_int32_t dst_ip, u_int32_t gw_ip){    struct rtentry  *new_krtentry;    mm_segment_t oldfs;#ifdef TRACE    char dst[16];    char gw[16];#endif    if ((new_krtentry = create_kernel_route_entry(dst_ip, gw_ip,NULL)) == NULL)        // del_kroute failed        return 1;    oldfs = get_fs();    set_fs(KERNEL_DS);    //For Kernel programming you have to use ip_rt_ioctl to insert routes    if(ip_rt_ioctl(SIOCDELRT, (char*) new_krtentry) == -1)    {#ifndef NO_ERROR        printk("DEL_KRTENTRY: Danger Will Robinson!\n");#endif        set_fs(oldfs);        //SIOCDELRT failed        return 1;    }#ifdef TRACE    strcpy(dst,inet_ntoa(dst_ip));    strcpy(gw,inet_ntoa(gw_ip));    printk("DEL_KROUTE: Deleted kroute to: %s thru: %s  \n",dst,gw);#endif    set_fs(oldfs);    kfree(new_krtentry);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆视频精品| 欧美日韩国产大片| 欧美视频中文一区二区三区在线观看| 欧美性感一区二区三区| 久久人人97超碰com| 一区二区三区四区亚洲| 成人影视亚洲图片在线| 91精品婷婷国产综合久久竹菊| 国产精品国产a| 国内精品国产三级国产a久久| 欧美在线色视频| 国产精品免费看片| 国产一区二区三区不卡在线观看| 欧美高清视频在线高清观看mv色露露十八| 欧美激情在线一区二区| 精品一区二区三区视频在线观看| 日韩一区二区在线观看视频| 狠狠色丁香婷综合久久| 欧美视频日韩视频在线观看| 亚洲丝袜制服诱惑| 成人午夜电影小说| 欧美激情综合五月色丁香小说| 久久99精品久久久| 精品欧美一区二区久久| 日韩成人av影视| 在线成人午夜影院| 天天综合天天做天天综合| 欧美日韩亚洲丝袜制服| 午夜婷婷国产麻豆精品| 欧美日韩激情一区二区| 午夜精品福利一区二区蜜股av | 国产精品亚洲专一区二区三区| 欧美一二三四区在线| 天堂成人国产精品一区| 91麻豆精品国产| 久久精品国产亚洲高清剧情介绍| 日韩午夜激情免费电影| 狠狠色综合日日| 久久久久久日产精品| 国产一区二区三区av电影| 日本一区免费视频| 成人动漫一区二区在线| 亚洲欧美区自拍先锋| 91久久一区二区| 亚洲18色成人| 欧美videos大乳护士334| 国产精品88av| 亚洲老妇xxxxxx| 欧美理论电影在线| 精品影院一区二区久久久| 久久久久青草大香线综合精品| 国产福利精品一区二区| 成人免费在线观看入口| 欧美日韩一区视频| 精品一区二区三区免费视频| 中文字幕免费一区| 欧美亚洲国产一卡| 韩国视频一区二区| 亚洲免费观看高清| 555夜色666亚洲国产免| 国产高清久久久| 亚洲自拍偷拍麻豆| 久久亚洲春色中文字幕久久久| 成人av网站在线| 午夜一区二区三区在线观看| 欧美va在线播放| 色综合久久88色综合天天| 久久国产尿小便嘘嘘| 亚洲视频综合在线| 日韩视频免费直播| 一本到高清视频免费精品| 日韩精品久久理论片| 亚洲国产成人一区二区三区| 欧美区视频在线观看| 国产精品99久久久久久似苏梦涵 | 五月天激情综合网| 欧美激情一区二区在线| 欧美酷刑日本凌虐凌虐| 成人av网站在线观看免费| 麻豆高清免费国产一区| 亚洲男帅同性gay1069| 久久久午夜精品| 欧美日韩欧美一区二区| 99久久精品国产精品久久| 久久99久久99精品免视看婷婷| 一区二区视频免费在线观看| 国产日韩欧美综合在线| 日韩小视频在线观看专区| 在线视频综合导航| 成人激情免费网站| 狠狠色丁香九九婷婷综合五月| 亚洲一区二区三区四区五区黄| 国产精品每日更新| 国产亚洲人成网站| 精品久久免费看| 欧美剧情片在线观看| 色婷婷一区二区| 91在线视频免费观看| 国产成人综合在线| 国产一区二区三区四区五区入口 | 午夜精彩视频在线观看不卡| 亚洲色图欧美偷拍| 国产精品免费人成网站| 国产色产综合产在线视频| 欧美刺激午夜性久久久久久久 | 色一情一伦一子一伦一区| 成人激情校园春色| 风间由美一区二区av101| 久久成人久久爱| 激情久久五月天| 国产九色sp调教91| 国产精品1区2区| 国产精品综合在线视频| 国产精品99久久久久久久vr| 国产成人免费av在线| 国产xxx精品视频大全| 成人午夜免费av| aaa亚洲精品一二三区| 色综合久久久久久久久久久| 色欧美乱欧美15图片| 91久久精品午夜一区二区| 在线中文字幕一区二区| 在线一区二区三区| 欧美色图一区二区三区| 欧美精品久久一区二区三区| 6080日韩午夜伦伦午夜伦| 日韩一区二区中文字幕| 精品久久人人做人人爽| 国产日韩av一区二区| 最好看的中文字幕久久| 亚洲成人中文在线| 麻豆国产精品官网| 国产精品456露脸| 色素色在线综合| 欧美日本韩国一区二区三区视频 | 欧美一区二区视频免费观看| 精品对白一区国产伦| 国产日韩视频一区二区三区| 亚洲美女淫视频| 奇米在线7777在线精品| 国产大片一区二区| 色先锋资源久久综合| 欧美一区二区日韩一区二区| 久久久美女毛片| 亚洲人成电影网站色mp4| 亚洲va欧美va国产va天堂影院| 精品一区二区在线免费观看| 高清不卡一区二区| 欧美久久久久久久久久| 国产蜜臀97一区二区三区| 亚洲午夜一二三区视频| 狠狠色丁香九九婷婷综合五月| 99久久久无码国产精品| 欧美一二三区在线| 亚洲日本丝袜连裤袜办公室| 日本伊人午夜精品| 91性感美女视频| 日韩精品一区在线| 亚洲精品水蜜桃| 国产精品69久久久久水密桃| 欧美日韩精品一区二区天天拍小说| 久久久五月婷婷| 日韩精品一级二级| 色哟哟国产精品免费观看| 久久嫩草精品久久久久| 三级不卡在线观看| 91丝袜高跟美女视频| 精品美女被调教视频大全网站| 亚洲精品视频在线观看网站| 国产精品伊人色| 日韩一级黄色大片| 夜夜爽夜夜爽精品视频| 成人av电影观看| 日韩欧美www| 日本亚洲最大的色成网站www| 一本一道波多野结衣一区二区| 久久久综合激的五月天| 日韩成人av影视| 欧美人动与zoxxxx乱| 一卡二卡欧美日韩| 91网址在线看| 国产精品久久久久精k8| 国产在线观看免费一区| 日韩你懂的电影在线观看| 亚洲成在人线在线播放| 色噜噜狠狠成人网p站| 国产精品福利一区二区| 成人高清免费观看| 欧美国产精品专区| 国产成人精品综合在线观看| 亚洲精品一区二区在线观看| 男人的j进女人的j一区| 91精品啪在线观看国产60岁| 天天综合网天天综合色 | 97se亚洲国产综合在线| 国产精品毛片无遮挡高清| 懂色av噜噜一区二区三区av| 国产人成一区二区三区影院| 国产精品996| 国产精品初高中害羞小美女文|