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

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

?? utils.c

?? linux 下的aodv實(shí)現(xiàn)源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*               Kernel AODV  v2.1National Institute of Standards and Technology               Luke Klein-Berndt-----------------------------------------------------  Version 2.1 new features:     * Much more stable!     * Added locks around important areas     * Multihop Internet gatewaying now works     * Multicast hack added     * 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 "utils.h"/****************************************************   utils.h----------------------------------------------------Contains many misc funcations that providebasic functionality.****************************************************/extern u_int32_t g_broadcast_ip;extern u_int32_t g_my_ip;extern struct route_table_entry *g_my_entry;static struct sockaddr_in sin; //the port we are sending from#ifdef AODV_MULTICASTstatic struct socket *multicast_sock;#endif#ifdef AODV_SIGNALstatic struct socket *iw_sock;#endif/****************************************************   init_sock----------------------------------------------------Creates a socket for sending out data****************************************************/#ifdef AODV_MULTICASTint init_multicast_sock(void){    int error;  struct ifreq interface;  mm_segment_t oldfs;  int bool=1;  char loop=0;  char ttl;  int choice=1;    	  error=sock_create(PF_INET, SOCK_RAW, IPPROTO_RAW, &(multicast_sock));      memset(&sin,0,sizeof(sin));  sin.sin_family = AF_INET;  sin.sin_addr.s_addr=g_my_ip;  sin.sin_port         = htons(AODVPORT);    multicast_sock->sk->reuse =1;  multicast_sock->sk->allocation = GFP_ATOMIC;  multicast_sock->sk->priority = GFP_ATOMIC;    error = multicast_sock->ops->bind(multicast_sock,(struct sockaddr*)&sin,sizeof(struct sockaddr_in));    /*  #ifdef ARM	strncpy(interface.ifr_ifrn.ifrn_name, "eth0", IFNAMSIZ);#else	strncpy(interface.ifr_ifrn.ifrn_name, "eth1", IFNAMSIZ);#endif  */  if (g_my_entry)    strncpy(interface.ifr_ifrn.ifrn_name, g_my_entry->dev->name, IFNAMSIZ);  else    strncpy(interface.ifr_ifrn.ifrn_name, "eth0", IFNAMSIZ);  oldfs = get_fs();  set_fs(get_ds());  //	error=sys_fcntl(&(multicast_sock->sk),F_SETFL,O_NONBLOCK);  //printk("error: %d\n",error);  if (sock_setsockopt(multicast_sock,IPPROTO_IP,SO_BINDTODEVICE, (char *) &interface, sizeof(interface))<0)    {      printk(KERN_WARNING " Couldn't bind to route!\n");     }  if ((error=sock_setsockopt(multicast_sock,IPPROTO_IP,SO_DONTROUTE,(char *) &choice, sizeof(int)))<0)    {      printk(KERN_WARNING " Couldn't mark not to route! %d\n",error);     }    if (error<0)    {      printk(KERN_ERR "Kernel AODV: Error, %d  binding socket. This means that some other \n",error);      printk(KERN_ERR "        daemon is (or was a short time axgo) using port %i.\n",AODVPORT);      return 0;    }    if((error =multicast_sock->ops->setsockopt(multicast_sock, IPPROTO_IP, IP_HDRINCL, (char *)&bool, sizeof(bool)))<0)    {      printk(KERN_WARNING "Error:  %d In init_sock... I have problem in setting the multicast socket to have the IP hdr (%d) ...\n", error, bool);          }  /*  //Set the interface on which the multicast packets will be sent  if((error=sock->ops->setsockopt(sock, IPPROTO_IP, IP_MULTICAST_IF, (char *)& ip, sizeof(ip)))<0)  {  printk("Error: %d In init_sock... I have a problem setting the interface on which the multicast packets leave...\n", error);  }    if((error=sock->ops->setsockopt(sock, IPPROTO_IP, IP_MULTICAST_LOOP, (char *)&loop, sizeof(loop)))<0)  {  printk("Error: %d In init_sock...I have a problem in unsetting the LOOP_BACK for the multicast packets...\n", error);  	}	  */	  set_fs(oldfs);  return 0;}#endifint init_sock(struct socket *sock, u_int32_t ip, char *dev_name){    int error;    struct ifreq interface;    mm_segment_t oldfs;    //set the address we are sending from    memset(&sin,0,sizeof(sin));    sin.sin_family = AF_INET;    sin.sin_addr.s_addr=ip;    sin.sin_port         = htons(AODVPORT);    sock->sk->reuse =1;    sock->sk->allocation = GFP_ATOMIC;    sock->sk->priority = GFP_ATOMIC;    error = sock->ops->bind(sock,(struct sockaddr*)&sin,sizeof(struct sockaddr_in));    strncpy(interface.ifr_ifrn.ifrn_name,dev_name,IFNAMSIZ);    oldfs = get_fs();    set_fs(KERNEL_DS); //thank to Soyeon Anh and Dinesh Dharmaraju for spotting this bug!    error=sock_setsockopt(sock,SOL_SOCKET,SO_BINDTODEVICE, (char *) &interface, sizeof(interface))<0;    set_fs(oldfs);            if (error<0)    {      printk(KERN_ERR "Kernel AODV: Error, %d  binding socket. This means that some other \n",error);      printk(KERN_ERR "        daemon is (or was a short time axgo) using port %i.\n",AODVPORT);      return 0;    }        return 0;}/****************************************************   close_sock----------------------------------------------------Closes the socket****************************************************/void close_sock(void){    struct interface_list_entry *tmp_interface,*dead_interface;#ifdef AODV_MULTICAST    sock_release(multicast_sock);#endif    tmp_interface=find_first_interface_entry();    while(tmp_interface!=NULL)    {        sock_release(tmp_interface->sock);        dead_interface=tmp_interface;        tmp_interface=tmp_interface->next;        kfree(dead_interface);    }}#ifdef AODV_SIGNALvoid init_iw_sock(void){    int error;    error = sock_create(AF_INET,SOCK_DGRAM,0,&iw_sock);    if (error<0)      {        printk(KERN_ERR "Error during creation of socket; terminating, %d\n",error);    }}void close_iw_sock(void){    sock_release(iw_sock);}#endif#ifdef AODV_SIGNALint set_spy(){    int errno;    int			i;    int			nbr;		/* Number of valid addresses */    mm_segment_t oldfs;    struct neighbor_list_entry *tmp_neigh;    struct interface_list_entry *tmp_interface;    struct sockaddr iw_sa[IW_MAX_SPY];    struct iwreq		wrq;    unsigned char *ucp;    tmp_interface=find_first_interface_entry();    while (tmp_interface!=NULL)      {	        if ((tmp_interface->dev->get_wireless_stats!=NULL) && (tmp_interface->dev->do_ioctl!=NULL))        {	  i=0;	  	  tmp_neigh=find_first_neighbor_list_entry();	  	  while (tmp_neigh!=NULL)             {	      	      //ucp=(unsigned char *)&(tmp_neigh->ip);	      	      if ((tmp_interface->dev==tmp_neigh->dev))// && (((ucp[3] & 0xff)<111) &&((ucp[3] & 0xff)>100)  ))                {		  if ( i<IW_MAX_SPY)		    {		      memcpy((char *) &(iw_sa[i].sa_data), (char *) &(tmp_neigh->hw_addr),sizeof(struct sockaddr));		      i++;		      tmp_neigh->link=255;		    }		  /*  else		      {		      update_link_by_hw(tmp_neigh->hw_addr,255);		      tmp_neigh->link=255;		      }*/		                  }                tmp_neigh=tmp_neigh->next;            }            strncpy(wrq.ifr_name, tmp_interface->dev->name, IFNAMSIZ);            wrq.u.data.pointer = (caddr_t) &(iw_sa);            wrq.u.data.length = i;            wrq.u.data.flags = 0;            oldfs = get_fs();            set_fs(KERNEL_DS);            errno=tmp_interface->dev->do_ioctl(tmp_interface->dev, (struct ifreq * ) &wrq,SIOCSIWSPY);            set_fs(oldfs);            if (errno<0)                printk(KERN_WARNING "AODV: Error with SIOCSIWSPY: %d\n", errno);        }        tmp_interface=tmp_interface->next;    }}int get_range_info(struct net_device *dev,char *		ifname, struct iw_range *	range){    struct iwreq		wrq;    char			buffer[sizeof(struct iw_range) * 2];	/* Large enough */    /* Cleanup */    memset(buffer, 0, sizeof(range));    strcpy(wrq.ifr_name, ifname);    wrq.u.data.pointer = (caddr_t) buffer;    wrq.u.data.length = 0;    wrq.u.data.flags = 0;    if(dev->do_ioctl(dev, (struct ifreq * ) &wrq,SIOCGIWRANGE) < 0)        return(-1);    /* Copy stuff at the right place, ignore extra */    memcpy((char *) range, buffer, sizeof(struct iw_range));    return(0);}void get_wireless_stats(){    int n,i,has_range=0;    char		buffer[(sizeof(struct iw_quality) +	sizeof(struct sockaddr)) * IW_MAX_SPY];    u_int8_t temp;    struct iwreq		wrq;    struct neighbor_list_entry *tmp_neigh;    struct interface_list_entry *tmp_interface;    struct sockaddr 	hwa[IW_MAX_SPY];    struct iw_quality 	qual[IW_MAX_SPY];    struct iw_range	range;    tmp_interface=find_first_interface_entry();    while (tmp_interface!=NULL)    {        if ((tmp_interface->dev->get_wireless_stats!=NULL) && (tmp_interface->dev->do_ioctl!=NULL))        {            strncpy(wrq.ifr_name,tmp_interface->dev->name , IFNAMSIZ);            wrq.u.data.pointer = (caddr_t) buffer;            wrq.u.data.length = 0;            wrq.u.data.flags = 0;            tmp_interface->dev->do_ioctl(tmp_interface->dev,(struct ifreq * ) &wrq,SIOCGIWSPY );	    if(get_range_info(tmp_interface->dev, tmp_interface->dev->name , &(range)) >= 0)	      {                has_range = 1;	      }            n = wrq.u.data.length;            memcpy(hwa, buffer, n * sizeof(struct sockaddr));            memcpy(qual, buffer + n*sizeof(struct sockaddr), n*sizeof(struct iw_quality));            for(i = 0; i < n; i++)            {                if(has_range && (qual[i].level != 0))                {                    if (range.max_qual.qual!=0)                    {			update_link_by_hw(hwa[i].sa_data,qual[i].level);			                    }                }                else                {                    update_link_by_hw(hwa[i].sa_data,qual[i].level);                }                    }        }        tmp_interface=tmp_interface->next;    }}int read_signal_proc(char *buffer, char **buffer_location, off_t offset, int buffer_length,int *eof,void *data){    static char *my_buffer;    char temp_buffer[200];    struct neighbor_list_entry *tmp_entry;    int len;    char dst[16];    int n,i;    char  stats_buffer[(sizeof(struct iw_quality) +	sizeof(struct sockaddr)) * IW_MAX_SPY];    struct iwreq		wrq;    struct interface_list_entry *tmp_interface;    struct sockaddr *hwa;    struct iw_quality *qual;    mm_segment_t oldfs;    //    struct sockaddr 	hwa[IW_MAX_SPY];    //struct iw_quality 	qual[IW_MAX_SPY];    my_buffer=buffer;    strcpy(my_buffer,"");    tmp_interface=find_first_interface_entry();    //reset_route_table_link();    while (tmp_interface!=NULL)    {        if ((tmp_interface->dev->get_wireless_stats!=NULL) && (tmp_interface->dev->do_ioctl!=NULL))        {            strncpy(wrq.ifr_name,tmp_interface->dev->name , IFNAMSIZ);            wrq.u.data.pointer = (caddr_t) stats_buffer;            wrq.u.data.length = 64; //IW_MAX_GET_SPY;            wrq.u.data.flags = 0;        oldfs = get_fs();        set_fs(KERNEL_DS);            tmp_interface->dev->do_ioctl(tmp_interface->dev,(struct ifreq * ) &wrq,SIOCGIWSPY );        set_fs(oldfs);            n = wrq.u.data.length;	    	    hwa = (struct sockaddr *) stats_buffer;	    qual = (struct iw_quality *) (stats_buffer + (sizeof(struct sockaddr) * n));					              for(i = 0; i < n; i++)            {	      //printk ("%u  %d\n",hwa[i].sa_data,qual[i].level - 0x100);	      //update_link_by_hw(hwa[i].sa_data,qual[i].level);	     tmp_entry= find_neighbor_list_entry_by_hw(hwa[i].sa_data);	     if(tmp_entry!=NULL)	       {		 strcpy(dst,inet_ntoa(tmp_entry->ip));		 sprintf(temp_buffer,"1 %s, %d \n",dst ,qual[i].level - 0x100);		 strcat(my_buffer,temp_buffer);	      	       }                    }        }        tmp_interface=tmp_interface->next;    }    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;}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美区| 日韩欧美久久久| 日韩成人免费电影| 国产精品国产三级国产普通话99 | 中文字幕巨乱亚洲| 欧美精品久久一区二区三区| 国产·精品毛片| 六月丁香婷婷色狠狠久久| 亚洲精品你懂的| 国产精品欧美经典| 日韩精品在线网站| 亚洲色欲色欲www| 在线观看亚洲一区| 国产目拍亚洲精品99久久精品 | 欧美经典一区二区| 中文字幕日韩一区二区| 欧美mv日韩mv国产网站app| 欧洲精品一区二区| 99综合影院在线| 国产精品主播直播| 久色婷婷小香蕉久久| 亚洲自拍偷拍欧美| 国产精品久久久99| 久久综合精品国产一区二区三区 | 久久精品欧美一区二区三区麻豆 | 欧日韩精品视频| 97aⅴ精品视频一二三区| 国产精品996| 韩国三级电影一区二区| 日韩激情av在线| 亚洲成人av免费| 欧美写真视频网站| 国产精品水嫩水嫩| 欧美疯狂性受xxxxx喷水图片| 91香蕉视频在线| 成人午夜电影小说| 成人av网站在线| 欧美tk丨vk视频| 欧美一区二区国产| 91精品国产麻豆国产自产在线| 欧美性感一类影片在线播放| 91视频com| 色老汉av一区二区三区| 一本大道久久a久久综合| 波多野结衣中文字幕一区| 丁香一区二区三区| 99久久久无码国产精品| 91偷拍与自偷拍精品| 色欧美片视频在线观看在线视频| 99久久久久免费精品国产| 波多野结衣一区二区三区| 91丝袜高跟美女视频| 在线日韩国产精品| 欧美精品日韩一区| 日韩你懂的电影在线观看| www激情久久| 国产精品乱人伦| 国产精品中文字幕欧美| 亚洲视频在线一区观看| 国产午夜精品一区二区三区四区| 久久久久免费观看| 亚洲手机成人高清视频| 亚洲成人三级小说| 精品一区二区在线视频| 成人自拍视频在线观看| 色婷婷国产精品| 欧美一区二区三区的| 久久精品视频免费观看| 亚洲三级小视频| 天堂精品中文字幕在线| 欧美肥妇free| 国产三级精品在线| 亚洲精品一二三区| 美女mm1313爽爽久久久蜜臀| 风间由美一区二区av101| 色噜噜狠狠色综合中国| 欧美成人免费网站| 亚洲视频在线一区二区| 美腿丝袜在线亚洲一区| 99久久99久久精品免费观看| 56国语精品自产拍在线观看| 国产农村妇女精品| 日韩国产欧美在线观看| 成人小视频免费在线观看| 欧美视频精品在线| 国产三区在线成人av| 亚洲aⅴ怡春院| 国产综合久久久久影院| 欧美色男人天堂| 久久九九99视频| 日日夜夜精品视频天天综合网| 国产成人三级在线观看| 5月丁香婷婷综合| 国产精品的网站| 激情综合色播激情啊| 欧美中文字幕一区二区三区亚洲| 久久老女人爱爱| 爽好多水快深点欧美视频| 波多野结衣视频一区| 日韩丝袜美女视频| 亚洲一区二区av在线| 成人黄页在线观看| 精品国产一二三区| 日日摸夜夜添夜夜添精品视频 | 日本视频一区二区三区| 成年人网站91| 久久蜜臀精品av| 麻豆精品一二三| 欧美美女一区二区在线观看| 亚洲视频精选在线| 国产不卡在线播放| 精品国产3级a| 免费在线欧美视频| 欧美日韩视频专区在线播放| 亚洲人成电影网站色mp4| 国产99久久久国产精品| 天天影视网天天综合色在线播放| 精品日韩99亚洲| 欧美午夜精品免费| 国产欧美一区二区精品性色超碰 | 国产精品―色哟哟| 国产尤物一区二区| 欧美成人精品1314www| 天天做天天摸天天爽国产一区| 91久久香蕉国产日韩欧美9色| 国产日韩精品一区二区浪潮av| 久久精品国产精品亚洲综合| 69av一区二区三区| 视频一区欧美精品| 欧美嫩在线观看| 午夜精品福利久久久| 欧美日韩免费高清一区色橹橹| 国产一区三区三区| 精品久久久久一区| 国产一区高清在线| 久久久久国产一区二区三区四区 | 91成人网在线| 一区二区三区视频在线观看| 97久久超碰国产精品| 亚洲色图欧洲色图婷婷| 日韩午夜激情免费电影| 午夜久久久影院| 色婷婷综合中文久久一本| 亚洲日本一区二区| 在线观看精品一区| 午夜不卡av免费| 日韩一区二区高清| 久久国产精品免费| 久久久久久久综合| 不卡一区在线观看| 一区二区在线看| 日韩一区二区三区视频| 激情文学综合插| 国产精品嫩草影院av蜜臀| 91女神在线视频| 亚洲国产另类精品专区| 日韩欧美另类在线| 成人免费观看av| 一区二区三区免费观看| 欧美丰满少妇xxxxx高潮对白| 老汉av免费一区二区三区| 久久久久久久久一| 色综合久久久久久久久久久| 丝袜美腿亚洲一区| 久久久www免费人成精品| 99久久精品免费精品国产| 亚洲丶国产丶欧美一区二区三区| 91精品国产一区二区三区| 国产福利精品导航| 亚洲宅男天堂在线观看无病毒| 日韩一区二区三区视频| 不卡一区在线观看| 日韩精品一级二级 | 亚洲视频小说图片| 7777精品久久久大香线蕉| 国产99一区视频免费| 亚洲一区二区三区四区的| 精品久久久久久久人人人人传媒| jiyouzz国产精品久久| 天堂一区二区在线免费观看| 国产午夜精品在线观看| 欧美日韩免费视频| 国产jizzjizz一区二区| 日韩电影免费在线看| 国产精品国产自产拍高清av王其 | 欧美日韩免费视频| 国产成人在线看| 日韩av电影一区| 综合久久一区二区三区| 欧美成人精精品一区二区频| 日本韩国欧美一区二区三区| 狠狠色狠狠色综合系列| 一区二区三区波多野结衣在线观看| 精品理论电影在线观看| 在线观看国产精品网站| 粉嫩高潮美女一区二区三区| 青青草一区二区三区| 亚洲激情男女视频| 国产欧美日韩另类一区| 日韩女优av电影|