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

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

?? device-bsd44.c

?? tinyos-2.x.rar
?? C
字號:
/*
 *   $Id: device-bsd44.c,v 1.2 2009/08/09 23:36:05 sdhsdh Exp $
 *
 *   Authors:
 *    Craig Metz		<cmetz@inner.net>
 *
 *   This software is Copyright 1996,1997 by the above mentioned author(s), 
 *   All Rights Reserved.
 *
 *   The license which is distributed with this software in the file COPYRIGHT
 *   applies to this software. If your distribution is missing this file, you
 *   may request it from <pekkas@netcore.fi>.
 *
 */

#include <config.h>
#include <includes.h>
#include <radvd.h>
#include <defaults.h>
#include <pathnames.h>		/* for PATH_PROC_NET_IF_INET6 */

static uint8_t ll_prefix[] = { 0xfe, 0x80 };

/*
 * this function gets the hardware type and address of an interface,
 * determines the link layer token length and checks it against
 * the defined prefixes
 */
int
setup_deviceinfo(int sock, struct Interface *iface)
{
	struct ifconf ifconf;
	struct ifreq ifr;
	unsigned int nlen;
	uint8_t *p, *end;
	struct AdvPrefix *prefix;
	char zero[sizeof(iface->if_addr)];

	/* just allocate 8192 bytes, should be more than enough.. */
	if (!(ifconf.ifc_buf = malloc(ifconf.ifc_len = (32 << 8))))
	{
		flog(LOG_CRIT, "malloc failed: %s", strerror(errno));
		goto ret;
	}

	if (ioctl(sock, SIOCGIFCONF, &ifconf) < 0)
	{
		flog(LOG_ERR, "ioctl(SIOCGIFCONF) failed: %s(%d)", strerror(errno), errno);
		goto ret;
	}

 	memset(&ifr, 0, sizeof(ifr));
	strncpy(ifr.ifr_name, iface->Name, IFNAMSIZ-1);
	ifr.ifr_name[IFNAMSIZ-1] = '\0';

	if (ioctl(sock, SIOCGIFMTU, &ifr) < 0) {
		flog(LOG_ERR, "ioctl(SIOCGIFMTU) failed for %s: %s", iface->Name, strerror(errno));
		goto ret;
	}	

	dlog(LOG_DEBUG, 3, "mtu for %s is %d", iface->Name, ifr.ifr_mtu);
	iface->if_maxmtu = ifr.ifr_mtu;

	p = (uint8_t *)ifconf.ifc_buf;
	end = p + ifconf.ifc_len;
	nlen = strlen(iface->Name);

	while(p < end)
	{
		p += IFNAMSIZ;
		
		if ((p + 2) >= end)
			break;
			
		if ((p + *p) >= end)
			break;
			
		if ((*(p + 1) == AF_LINK) &&
		    (((struct sockaddr_dl *)p)->sdl_nlen == nlen) &&
		    (!memcmp(iface->Name, ((struct sockaddr_dl *)p)->sdl_data, nlen)))
		{
		
			if (((struct sockaddr_dl *)p)->sdl_alen > sizeof(iface->if_addr))
			{
				flog(LOG_ERR, "address length %d too big for",
					((struct sockaddr_dl *)p)->sdl_alen,
					iface->Name);
				goto ret;
			}
		
			memcpy(iface->if_hwaddr, LLADDR((struct sockaddr_dl *)p), ((struct sockaddr_dl *)p)->sdl_alen);
			iface->if_hwaddr_len = ((struct sockaddr_dl *)p)->sdl_alen << 3;

          		switch(((struct sockaddr_dl *)p)->sdl_type) {
            		case IFT_ETHER:
            		case IFT_ISO88023:
            			iface->if_prefix_len = 64;
              			break;
            		case IFT_FDDI:
            			iface->if_prefix_len = 64;
              			break;
            		default:
            			iface->if_prefix_len = -1;
				iface->if_maxmtu = -1;
				break;
          		}

			dlog(LOG_DEBUG, 3, "link layer token length for %s is %d", iface->Name,
				iface->if_hwaddr_len);

			dlog(LOG_DEBUG, 3, "prefix length for %s is %d", iface->Name,
				iface->if_prefix_len);

			if (iface->if_prefix_len != -1) {
				memset(zero, 0, ((struct sockaddr_dl *)p)->sdl_alen);
				if (!memcmp(iface->if_hwaddr, zero, ((struct sockaddr_dl *)p)->sdl_alen))
					flog(LOG_WARNING, "WARNING, MAC address on %s is all zero!",
						iface->Name);
			}
			
			prefix = iface->AdvPrefixList;
			while (prefix)
			{
				if ((iface->if_prefix_len != -1) &&
					(iface->if_prefix_len != prefix->PrefixLen))
				{
					flog(LOG_WARNING, "prefix length should be %d for %s",
						iface->if_prefix_len, iface->Name);
 				}
 			
 				prefix = prefix->next;
			}
          		
          		free(ifconf.ifc_buf);
          		return 0;
        	}
        
    		p += *p;	
	}

ret:
	iface->if_maxmtu = -1;
	iface->if_hwaddr_len = -1;
	iface->if_prefix_len = -1;
	free(ifconf.ifc_buf);
	return -1;
}

int setup_linklocal_addr(int sock, struct Interface *iface)
{
	struct ifconf ifconf;
	unsigned int nlen;
	uint8_t *p, *end;
	int index = 0;

	/* just allocate 8192 bytes, should be more than enough.. */
	if (!(ifconf.ifc_buf = malloc(ifconf.ifc_len = (32 << 8))))
	{
		flog(LOG_CRIT, "malloc failed: %s", strerror(errno));
		goto ret;
	}

	if (ioctl(sock, SIOCGIFCONF, &ifconf) < 0)
	{
		flog(LOG_ERR, "ioctl(SIOCGIFCONF) failed: %s(%d)", strerror(errno), errno);
		goto ret;
	}

	p = (uint8_t *)ifconf.ifc_buf;
	end = p + ifconf.ifc_len;
	nlen = strlen(iface->Name);

	while(p < end)
  	{
		p += IFNAMSIZ;
	
		if ((p + 2) >= end)
			break;
			
		if ((p + *p) >= end)
			break;
			
		if ((*(p + 1) == AF_LINK) &&
		    (((struct sockaddr_dl *)p)->sdl_nlen == nlen) &&
		    (!memcmp(iface->Name, ((struct sockaddr_dl *)p)->sdl_data, nlen)))
		{
			index = ((struct sockaddr_dl *)p)->sdl_index;
		}
		
   	 	if (index && (*(p + 1) == AF_INET6))
		  if (!memcmp(&((struct sockaddr_in6 *)p)->sin6_addr, ll_prefix, sizeof(ll_prefix)))
		  {
			memcpy(&iface->if_addr, &((struct sockaddr_in6 *)p)->sin6_addr, sizeof(struct in6_addr));
			iface->if_index = index;

			free(ifconf.ifc_buf);
			return 0;
      	  	  }
      	  
		p += *p;

	}

ret:
	flog(LOG_ERR, "no linklocal address configured for %s", iface->Name);
	free(ifconf.ifc_buf);
	return -1;
}

int setup_allrouters_membership(int sock, struct Interface *iface)
{
	return (0);
}

int check_allrouters_membership(int sock, struct Interface *iface)
{
	return (0);
}

int
set_interface_linkmtu(const char *iface, uint32_t mtu)
{
	dlog(LOG_DEBUG, 4, "setting LinkMTU (%u) for %s is not supported",
	     mtu, iface);
	return -1;
}

int
set_interface_curhlim(const char *iface, uint8_t hlim)
{
	dlog(LOG_DEBUG, 4, "setting CurHopLimit (%u) for %s is not supported",
	     hlim, iface);
	return -1;
}

int
set_interface_reachtime(const char *iface, uint32_t rtime)
{
	dlog(LOG_DEBUG, 4, "setting BaseReachableTime (%u) for %s is not supported",
	     rtime, iface);
	return -1;
}

int
set_interface_retranstimer(const char *iface, uint32_t rettimer)
{
	dlog(LOG_DEBUG, 4, "setting RetransTimer (%u) for %s is not supported",
	     rettimer, iface);
	return -1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久se这里有精品| 丝袜美腿亚洲一区| 欧美白人最猛性xxxxx69交| 欧美午夜在线观看| 欧美视频在线播放| 欧美性受xxxx黑人xyx性爽| 色综合中文字幕| 色狠狠av一区二区三区| 欧美在线色视频| 欧美三级资源在线| 欧美一级生活片| 亚洲精品在线观看视频| 久久久久国色av免费看影院| 亚洲精品在线一区二区| 国产精品天干天干在观线 | 天堂成人国产精品一区| 日产国产高清一区二区三区| 麻豆精品在线播放| 国产超碰在线一区| 91久久精品一区二区| 欧美美女喷水视频| 久久综合久色欧美综合狠狠| 国产精品丝袜黑色高跟| 亚洲午夜在线观看视频在线| 久久99热99| 99久久精品久久久久久清纯| 欧美视频第二页| 久久精品一区二区三区不卡| 一区二区三区免费| 奇米四色…亚洲| 成人丝袜高跟foot| 欧美色视频在线观看| 精品福利在线导航| 亚洲女女做受ⅹxx高潮| 久久国产剧场电影| 在线精品视频免费观看| 欧美一级免费观看| 亚洲欧美成人一区二区三区| 极品少妇一区二区| 在线视频国内自拍亚洲视频| 日韩精品一区二区三区蜜臀 | 日本二三区不卡| 精品免费视频一区二区| 亚洲女人小视频在线观看| 国产一区二区调教| 欧美放荡的少妇| 亚洲女与黑人做爰| 国产乱理伦片在线观看夜一区| 欧美中文字幕一二三区视频| 久久久久久久精| 午夜精品aaa| 91久久精品国产91性色tv| 欧美国产日韩亚洲一区| 麻豆国产欧美一区二区三区| 欧美吻胸吃奶大尺度电影| 国产精品久久久久影院老司| 国产在线观看一区二区| 日韩一区二区电影在线| 亚洲成人av福利| 色欧美日韩亚洲| 国产精品乱码一区二区三区软件 | 国产片一区二区| 免费精品视频在线| 欧美日韩精品是欧美日韩精品| 1区2区3区欧美| 成人免费视频caoporn| 久久亚洲综合色| 奇米色777欧美一区二区| 欧美日韩精品系列| 午夜精品久久久久久| 欧美在线不卡视频| 亚洲夂夂婷婷色拍ww47| 欧美吞精做爰啪啪高潮| 一二三区精品福利视频| 欧美性感一类影片在线播放| 一区二区三区在线影院| 91久久奴性调教| 亚洲国产精品久久久男人的天堂| 在线一区二区视频| 亚洲欧美日韩成人高清在线一区| 成人a免费在线看| 中文字幕一区二区不卡| 色综合天天在线| 一区二区三区中文字幕精品精品| 色婷婷av一区二区三区之一色屋| 亚洲欧洲综合另类| 欧美日韩在线播放| 日韩精品一级中文字幕精品视频免费观看| 欧美日韩综合不卡| 三级不卡在线观看| 日韩免费成人网| 处破女av一区二区| 亚洲精品欧美综合四区| 欧美久久久一区| 久久国产剧场电影| 国产精品美女久久久久高潮| 色老综合老女人久久久| 性欧美疯狂xxxxbbbb| 精品va天堂亚洲国产| 99久久精品免费| 日韩成人av影视| 久久久蜜桃精品| 91福利视频久久久久| 日韩国产精品91| 国产欧美日韩中文久久| 日本电影亚洲天堂一区| 激情文学综合插| 亚洲欧美aⅴ...| 337p日本欧洲亚洲大胆精品| www.欧美亚洲| 久久精品国产一区二区| 日韩一区中文字幕| 91精品国产色综合久久ai换脸 | 99热这里都是精品| 老鸭窝一区二区久久精品| 国产精品黄色在线观看| 日韩一区二区不卡| 99久久精品国产导航| 麻豆免费精品视频| 亚洲精品成人天堂一二三| 欧美成人综合网站| 欧美天堂一区二区三区| 国产98色在线|日韩| 日韩综合小视频| 亚洲四区在线观看| 久久亚洲精华国产精华液| 欧美日韩中文字幕一区| 成人黄色一级视频| 国产一区二区在线观看免费 | 久久久久久麻豆| 欧美日韩一区二区三区高清| 成人丝袜视频网| 国产精品一区二区黑丝| 日韩电影在线免费看| 一个色妞综合视频在线观看| 国产精品视频在线看| 国产亚洲欧美激情| 日韩欧美第一区| 91精品国产手机| 欧美日韩中字一区| 欧美亚洲禁片免费| 色香色香欲天天天影视综合网| 国产精品自拍三区| 老司机精品视频线观看86| 亚洲成人激情自拍| 亚洲伊人色欲综合网| 亚洲精品国产高清久久伦理二区| 国产精品网曝门| 国产精品久久毛片av大全日韩| xfplay精品久久| 久久丝袜美腿综合| 国产亚洲精品资源在线26u| 亚洲精品一区二区在线观看| 欧美mv和日韩mv的网站| 精品久久久久久久久久久久久久久 | 日韩精品一二区| 五月婷婷久久综合| 日本aⅴ亚洲精品中文乱码| 亚洲成人自拍一区| 日本成人中文字幕在线视频| 日本欧美一区二区在线观看| 毛片不卡一区二区| 国产成人免费视频网站高清观看视频| 国产一区二区三区免费看| 国产一区欧美日韩| 成人午夜精品一区二区三区| 99久久国产综合精品麻豆| 色婷婷激情综合| 日韩视频一区二区在线观看| 精品欧美一区二区在线观看| 久久久综合视频| 中文字幕一区二区三区四区不卡 | 激情综合色播五月| 国产一区二区三区在线观看免费| 国产福利一区二区| 99精品久久99久久久久| 欧美午夜精品电影| 精品免费一区二区三区| 国产精品福利电影一区二区三区四区| 亚洲蜜臀av乱码久久精品| 日韩二区三区四区| 粉嫩13p一区二区三区| 欧美视频中文字幕| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品不卡一区二区三区| 亚洲一区二区三区四区五区黄| 久久精品av麻豆的观看方式| 91啪亚洲精品| 日韩欧美第一区| 亚洲人一二三区| 久久精品国产第一区二区三区| 99久久国产综合精品色伊| 日韩视频一区在线观看| 亚洲欧美偷拍卡通变态| 国精产品一区一区三区mba桃花 | 91一区在线观看| 日韩一级大片在线| 亚洲欧美偷拍三级| 国产高清无密码一区二区三区| 欧美二区在线观看|