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

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

?? rtsock.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * This is used in dumping the kernel table via sysctl(). */intsysctl_dumpentry(rn, w)	struct radix_node *rn;	register struct walkarg *w;{	register struct rtentry *rt = (struct rtentry *)rn;	int error = 0, size;	struct rt_addrinfo info;	if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))		return 0;	bzero((caddr_t)&info, sizeof(info));	dst = rt_key(rt);	gate = rt->rt_gateway;	netmask = rt_mask(rt);	genmask = rt->rt_genmask;	if (rt->rt_ifp) {		ifpaddr = rt->rt_ifp->if_addrlist->ifa_addr;		ifaaddr = rt->rt_ifa->ifa_addr;		if (rt->rt_ifp->if_flags & IFF_POINTOPOINT)			brdaddr = rt->rt_ifa->ifa_dstaddr;	}	size = rt_msg2(RTM_GET, &info, 0, w);	if (w->w_where && w->w_tmem) {		register struct rt_msghdr *rtm = (struct rt_msghdr *)w->w_tmem;		rtm->rtm_flags = rt->rt_flags;		rtm->rtm_use = rt->rt_use;		rtm->rtm_rmx = rt->rt_rmx;		rtm->rtm_index = rt->rt_ifp->if_index;		rtm->rtm_errno = rtm->rtm_pid = rtm->rtm_seq = 0;		rtm->rtm_addrs = info.rti_addrs;		if ((error = copyout((caddr_t)rtm, w->w_where, size)))			w->w_where = NULL;		else			w->w_where += size;	}	return (error);}intsysctl_iflist(af, w)	int	af;	register struct	walkarg *w;{	register struct ifnet *ifp;	register struct ifaddr *ifa;	struct	rt_addrinfo info;	int	len, error = 0;	bzero((caddr_t)&info, sizeof(info));#ifdef VIRTUAL_STACK	for (ifp = _ifnet; ifp; ifp = ifp->if_next) {#else	for (ifp = ifnet; ifp; ifp = ifp->if_next) {#endif		if (w->w_arg && w->w_arg != ifp->if_index)			continue;		ifa = ifp->if_addrlist;		ifpaddr = ifa->ifa_addr;		len = rt_msg2(RTM_IFINFO, &info, (caddr_t)0, w);		ifpaddr = 0;		if (w->w_where && w->w_tmem) {			register struct if_msghdr *ifm;			ifm = (struct if_msghdr *)w->w_tmem;			ifm->ifm_index = ifp->if_index;			ifm->ifm_flags = ifp->if_flags;			ifm->ifm_data = ifp->if_data;			ifm->ifm_addrs = info.rti_addrs;			if ((error = copyout((caddr_t)ifm, w->w_where, len)))				return (error);			w->w_where += len;		}		while ((ifa = ifa->ifa_next)) {			if (af && af != ifa->ifa_addr->sa_family)				continue;			ifaaddr = ifa->ifa_addr;			netmask = ifa->ifa_netmask;			brdaddr = ifa->ifa_dstaddr;			len = rt_msg2(RTM_NEWADDR, &info, 0, w);			if (w->w_where && w->w_tmem) {				register struct ifa_msghdr *ifam;				ifam = (struct ifa_msghdr *)w->w_tmem;				ifam->ifam_index = ifa->ifa_ifp->if_index;				ifam->ifam_flags = ifa->ifa_flags;				ifam->ifam_metric = ifa->ifa_metric;				ifam->ifam_addrs = info.rti_addrs;				if ((error = copyout(w->w_tmem, w->w_where,                                                     len)))					return (error);				w->w_where += len;			}		}		ifaaddr = netmask = brdaddr = 0;	}	return (0);}intsysctl_rtable(name, namelen, where, given, new, newlen)	int	*name;	int	namelen;	caddr_t	where;	size_t	*given;	caddr_t	*new;	size_t	newlen;{	register struct radix_node_head *rnh;	int	i, s, error = EINVAL;	u_char  af;	struct	walkarg w;/* * XXX - This event does not usually occur: the sysctl_rtable() routine *       is typically only called by the Unix sysctl command which is not *       supported by VxWorks. It is also called by the RIP implementation *       as a legacy of the port from BSD, but that implementation detail *       is not of sufficient interest to include the event.#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_INFO event @/        if (namelen != 3)            {            WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_INFO, 22, 7,                              WV_NETEVENT_ROUTEWALK_START, 0)            }        else            {            WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_INFO, 22, 7,                              WV_NETEVENT_ROUTEWALK_START, name[1])            }#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */	if (new)		return (EPERM);	if (namelen != 3)		return (EINVAL);	af = name[0];	Bzero(&w, sizeof(w));	w.w_where = where;	w.w_given = *given;	w.w_needed = 0 - w.w_given;	w.w_op = name[1];	w.w_arg = name[2];	s = splnet();	switch (w.w_op) {	case NET_RT_DUMP:	case NET_RT_FLAGS:		for (i = 1; i <= AF_MAX; i++)			if ((rnh = rt_tables[i]) && (af == 0 || af == i) &&			    (error = rnh->rnh_walktree(rnh,							sysctl_dumpentry, &w)))				break;		break;	case NET_RT_IFLIST:		error = sysctl_iflist(af, &w);	}	splx(s);	if (w.w_tmem){		FREE(w.w_tmem, MT_RTABLE);	}	w.w_needed += w.w_given;	if (where) {		*given = w.w_where - where;		if (*given < w.w_needed)			return (ENOMEM);	} else {		*given = (11 * w.w_needed) / 10;	}	return (error);}/* * Definitions of protocols supported in the ROUTE domain. */extern	struct domain routedomain;		/* or at least forward */struct protosw routesw[] = {{ SOCK_RAW,	&routedomain,	0,		PR_ATOMIC|PR_ADDR,  raw_input,	route_output,	raw_ctlinput,	0,  route_usrreq,  rtSockInit,	0,		0,		0,  sysctl_rtable,}};struct domain routedomain =    { PF_ROUTE, "route", 0, 0, 0,      routesw, &routesw[sizeof(routesw)/sizeof(routesw[0])] };/* * Copy data from a buffer back into the indicated mbuf chain, * starting "off" bytes from the beginning, extending the mbuf * chain if necessary. */static voidm_copyback(m0, off, len, cp)	struct	mbuf *m0;	register int off;	register int len;	caddr_t cp;{	register int mlen;	register struct mbuf *m = m0, *n;	int totlen = 0;	if (m0 == 0)		return;	while (off > (mlen = m->m_len)) {		off -= mlen;		totlen += mlen;		if (m->m_next == 0) {			n = m_getclr(M_DONTWAIT, m->m_type, CL_SIZE_128, TRUE);			if (n == 0)				goto out;			n->m_len = min(n->m_extSize, len + off);			m->m_next = n;		}		m = m->m_next;	}	while (len > 0) {		mlen = min (m->m_len - off, len);		bcopy(cp, off + mtod(m, caddr_t), (unsigned)mlen);		cp += mlen;		len -= mlen;		mlen += off;		off = 0;		totlen += mlen;		if (len == 0)			break;		if (m->m_next == 0) {			n = mBufClGet(M_DONTWAIT, m->m_type, CL_SIZE_128, TRUE);			if (n == 0)				break;			n->m_len = min(n->m_extSize, len);			m->m_next = n;		}		m = m->m_next;	}out:	if (((m = m0)->m_flags & M_PKTHDR) && (m->m_pkthdr.len < totlen))		m->m_pkthdr.len = totlen;}/********************************************************************************* m_copydata - copy data from an mbuf chain into a buff* Copy data from an mbuf chain starting "off" bytes from the beginning,* continuing for "len" bytes, into the indicated buffer.*/static void m_copydata(m, off, len, cp)    register struct mbuf *m;    register int off;    register int len;    caddr_t cp;    {    register unsigned count;    if (off < 0 || len < 0)	panic("m_copydata");    while (off > 0)	{	if (m == 0)            {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_EMERGENCY event */            WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_EMERGENCY, 26, 3,                              WV_NETEVENT_COPYDATA_PANIC)#endif  /* INCLUDE_WVNET */#endif            panic("m_copydata");            }	if (off < m->m_len)	    break;	off -= m->m_len;	m = m->m_next;	}    while (len > 0)	{	if (m == 0)	    panic("m_copydata");	count = min(m->m_len - off, len);	bcopy(mtod(m, caddr_t) + off, cp, count);	len -= count;	cp += count;	off = 0;	m = m->m_next;	}    }#ifdef ROUTER_STACK/********************************************************************************* routeGatewayFetch - build a message which includes a list of gateways** This routine constructs a routing socket message which supplies each* next-hop router for all duplicate routes with a given destination and* netmask. When the <pMessage> parameter is NULL, the routine simply* counts the required length for the message. When that parameter provides* an actual value, the routine stores the appropriate information in* the supplied buffer. The RTAX_GATEWAY pointer for the resulting message* accesses a series of customized address structures which include the* protocol identifier and all additional metrics for each entry.** RETURNS: Length of message for all route entries** NOMANUAL*/LOCAL int routeGatewayFetch    (    struct rtentry * pRoute,     /* primary route for destination/netmask */    struct rt_msghdr * pMessage  /* list of routes for routing socket */    )    {    int length;    char * pBuffer;    struct sockaddr * pAddress = NULL;    struct sockaddr_gate * pGate;    int addrlen;    ROUTE_ENTRY * pGroup;    /* route entries for each protocol */    ROUTE_ENTRY * pMatch;    /* current route entry for message */    length = sizeof (struct rt_msghdr);    if (pMessage)        {        /* Fill in the initial message header. */        pMessage->rtm_version = RTM_VERSION;        pMessage->rtm_type = RTM_GETALL;        pMessage->rtm_flags = pRoute->rt_flags;        pMessage->rtm_addrs = RTA_DST | RTA_GATEWAY;        }    pAddress = rt_key (pRoute);    addrlen = ROUNDUP(pAddress->sa_len);    pBuffer = (char *)pMessage;    if (pBuffer)        {        /* Copy the destination address for the route entries. */        pBuffer += length;        bcopy ( (char *)pAddress, pBuffer, addrlen);        pBuffer += addrlen;        }    length += addrlen;    /*     * Find the length of all entries for the specified destination     * and netmask. Copy the relevant values if appropriate.     */    for (pGroup = (ROUTE_ENTRY *)pRoute; pGroup != NULL;                 pGroup = pGroup->diffNode.pFrwd)        {        for (pMatch = pGroup; pMatch != NULL; pMatch = pMatch->sameNode.pFrwd)            {            pAddress = ROUTE_ENTRY_GATEWAY (pMatch);            if (pAddress->sa_family == AF_LINK)                {                /*                 * The entry contains an ARP template. Use the                 * interface's IP address as the gateway value.                 */                pAddress = pMatch->rtEntry.rt_ifa->ifa_addr;                }            addrlen = ROUNDUP(sizeof (struct sockaddr_gate));            if (pBuffer)                {                /* Copy the gateway address for the route entry. */                pGate = (struct sockaddr_gate *)pBuffer;                pGate->gate_family = pAddress->sa_family;                pGate->gate_addr =                     ( (struct sockaddr_in *)pAddress)->sin_addr.s_addr;                /* Set length to reflect increased size for metrics. */                pGate->gate_len = sizeof (struct sockaddr_gate);                /* Copy additional information into gateway field. */                pGate->routeProto = RT_PROTO_GET (ROUTE_ENTRY_KEY (pMatch));                pGate->weight = pMatch->rtEntry.rt_rmx.weight;                pGate->value1 = pMatch->rtEntry.rt_rmx.value1;                pGate->value2 = pMatch->rtEntry.rt_rmx.value2;                pGate->value3 = pMatch->rtEntry.rt_rmx.value3;                pGate->value4 = pMatch->rtEntry.rt_rmx.value4;                pGate->value5 = pMatch->rtEntry.rt_rmx.value5;                pGate->routeTag = pMatch->rtEntry.rt_rmx.routeTag;                pBuffer += addrlen;                }            length += addrlen;            }        }    /* Copy any netmask information for the route. */    pAddress = rt_mask (pRoute);    if (pAddress)        {        addrlen = ROUNDUP(pAddress->sa_len);        if (pBuffer)            {            bcopy ( (char *)pAddress, pBuffer, addrlen);            pBuffer += addrlen;            /* Indicate that netmask information is present in the message. */            pMessage->rtm_addrs |= RTA_NETMASK;            }        length += addrlen;        }    if (pMessage)        {        /* Set the total message length. */        pMessage->rtm_msglen = length;        }    return (length);    }/********************************************************************************* routeMatch - find a unique entry within a set of duplicate routes** This routine searches the extended lists attached to the <pRoute>* primary route entry to find a matching route with the same next-hop* gateway as the <pGateway> argument and a creator which matches the* <protoId> value. That combination is unique for a particular destination* address and netmask. This routine allows routing sockets to retrieve* a duplicate route entry which is not visible to the IP forwarding process.** RETURNS: Pointer to existing route, or NULL if none.** NOMANUAL*/LOCAL ROUTE_ENTRY * routeMatch    (    struct rtentry * pRoute,    /* primary route for destination/netmask */    short protoId,              /* protocol identifer for matching route */    struct sockaddr * pGateway  /* next hop gateway for matching route */    )    {    ROUTE_ENTRY * pGroup;    /* route entries with matching protocol */    ROUTE_ENTRY * pMatch;    /* exact match for protocol and gateway */    if (protoId)        {        /* Find the list of entries for the specified protocol. */        for (pGroup = (ROUTE_ENTRY *)pRoute; pGroup != NULL;                 pGroup = pGroup->diffNode.pFrwd)            {            if (RT_PROTO_GET(ROUTE_ENTRY_KEY(pGroup)) == protoId)                break;            }        }    else        {        /* No protocol ID specified: use the initial group. */        pGroup = (ROUTE_ENTRY *)pRoute;        }    /* Find matching gateway if matching protocol found. */    for (pMatch = pGroup; pMatch != NULL; pMatch = pMatch->sameNode.pFrwd)        {        if (ROUTE_ENTRY_GATEWAY (pMatch)->sa_family == AF_LINK)            {            /*             * The gateway field contains an ARP template. The entry             * only matches for a search using the interface's IP address             * as the gateway.             */            if (SOCKADDR_IN (pMatch->rtEntry.rt_ifa->ifa_addr)                                    == SOCKADDR_IN (pGateway))                {                /* Matching route entry found - halt search. */                break;                }            }        else if (SOCKADDR_IN (ROUTE_ENTRY_GATEWAY (pMatch))                                    == SOCKADDR_IN (pGateway))            {            /* Matching route entry found - halt search. */            break;            }        }    return (pMatch);    }#endif /* ROUTER_STACK */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久蜜桃| 国产福利不卡视频| 成人av网站免费观看| 在线精品视频一区二区| 欧美激情在线一区二区| 国产一区二区免费在线| 日韩欧美不卡在线观看视频| 偷拍与自拍一区| 欧美人xxxx| 五月婷婷另类国产| 欧美一区二区视频网站| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久国内精品自在自线400部| 日韩一区二区精品在线观看| 视频一区二区三区在线| 欧美一区永久视频免费观看| 亚洲高清中文字幕| 在线成人av网站| 麻豆国产一区二区| 久久男人中文字幕资源站| 国产一区二区91| 国产精品日韩成人| 一本色道亚洲精品aⅴ| 亚洲精品va在线观看| 成人v精品蜜桃久久一区| 中文成人av在线| 一本一道波多野结衣一区二区| 亚洲欧美精品午睡沙发| 欧美精品乱码久久久久久| 日韩影院在线观看| 日韩精品一区二区三区在线| 国产精品一级在线| 日韩理论片一区二区| 欧美撒尿777hd撒尿| 久久se精品一区二区| 日韩女优制服丝袜电影| 国产精品99久久久久久宅男| 日韩伦理免费电影| 欧美一区国产二区| 国产精品一区专区| 一区二区三区中文字幕精品精品 | 91国产视频在线观看| 韩国成人精品a∨在线观看| 一区二区欧美视频| 久久精品视频网| 在线播放欧美女士性生活| 成人禁用看黄a在线| 美女视频网站久久| 亚洲国产一区二区视频| 国产精品国产a| 精品国产亚洲在线| 91麻豆精品国产91久久久久久| www.欧美.com| 国产成人av自拍| 九色综合狠狠综合久久| 香蕉久久一区二区不卡无毒影院| 国产精品美女久久福利网站| 精品国产乱码久久久久久1区2区| 欧美日精品一区视频| 一本色道综合亚洲| 91在线精品一区二区三区| 国产传媒欧美日韩成人| 精品一区精品二区高清| 日韩av一区二区三区| 亚洲国产成人va在线观看天堂| 亚洲女同ⅹxx女同tv| 国产精品久久综合| 欧美国产日产图区| 中文一区在线播放| 国产精品伦一区| 中文成人av在线| 国产精品不卡视频| 中文字幕一区二区在线播放| 国产精品久久久久9999吃药| 欧美国产日韩在线观看| 日本一区二区动态图| 中文字幕欧美国产| 亚洲欧洲成人精品av97| 国产精品不卡视频| 亚洲品质自拍视频网站| 亚洲人成在线播放网站岛国| 亚洲人成精品久久久久久 | 一区二区三区四区在线播放| 成人欧美一区二区三区| 一区二区免费看| 亚洲午夜电影在线| 天天色综合天天| 免费成人在线影院| 韩国理伦片一区二区三区在线播放 | 91蜜桃婷婷狠狠久久综合9色| 91在线视频18| 欧美日韩一区不卡| 日韩欧美亚洲一区二区| 精品粉嫩超白一线天av| 国产精品全国免费观看高清| 中文字幕五月欧美| 亚洲观看高清完整版在线观看| 视频一区在线视频| 国产精品一区二区在线播放| 成人午夜私人影院| 欧美体内she精视频| 日韩欧美中文字幕制服| 欧美激情综合五月色丁香小说| 综合久久综合久久| 日日夜夜精品免费视频| 国产老女人精品毛片久久| av影院午夜一区| 3atv一区二区三区| 国产亚洲一区二区三区| 亚洲免费观看高清完整| 日韩高清不卡在线| www.色综合.com| 宅男在线国产精品| 国产精品免费视频观看| 偷拍日韩校园综合在线| 国产成人综合亚洲91猫咪| 欧美这里有精品| 久久久久成人黄色影片| 亚洲影视在线播放| 久久99久久精品| 一本久久精品一区二区| 精品国产乱码久久久久久牛牛| 中文字幕一区二区5566日韩| 日本特黄久久久高潮| 波多野结衣中文字幕一区| 884aa四虎影成人精品一区| 国产精品看片你懂得| 免费欧美在线视频| 成人午夜av在线| 奇米精品一区二区三区在线观看一| 午夜av一区二区| 国产成人综合视频| 8v天堂国产在线一区二区| 中文字幕在线不卡一区二区三区| 日韩电影在线一区二区| 色综合久久久久久久| 久久久久久免费毛片精品| 久久精品国内一区二区三区| 99国产精品久久久久| 精品成人在线观看| 日本欧美在线观看| 色999日韩国产欧美一区二区| 久久蜜臀精品av| 免费观看一级欧美片| 欧美日韩视频在线第一区| 中文字幕一区二| 国产成人精品免费视频网站| 日韩欧美国产电影| 日韩精品久久久久久| 91福利国产精品| 亚洲欧美日韩久久精品| 成人av资源下载| 国产欧美一区二区在线观看| 精品一区二区三区在线观看国产| 欧美人体做爰大胆视频| 一个色综合网站| 一本一道久久a久久精品综合蜜臀| 国产精品拍天天在线| 国产一区欧美一区| 精品欧美乱码久久久久久| 免费欧美在线视频| 日韩欧美一区二区视频| 蜜臀va亚洲va欧美va天堂 | 欧美一级理论性理论a| 亚洲福利电影网| 3d动漫精品啪啪一区二区竹菊| 亚洲成人午夜影院| 欧美精品免费视频| 日本不卡1234视频| 欧美va亚洲va| 激情文学综合丁香| 精品久久五月天| 国内精品久久久久影院薰衣草| 精品国产免费一区二区三区香蕉| 久久国产麻豆精品| 久久久一区二区三区捆绑**| 国产成人综合精品三级| 国产精品高潮呻吟久久| 91色在线porny| 亚洲图片欧美色图| 欧美一区二区播放| 国产又黄又大久久| 欧美国产国产综合| 色婷婷综合久久久中文字幕| 亚洲444eee在线观看| 日韩精品专区在线影院观看| 国产美女一区二区| 中文字幕一区二区日韩精品绯色| 在线免费不卡电影| 另类小说色综合网站| 日本一区二区视频在线| 91国偷自产一区二区三区观看| 午夜精品视频一区| 久久久99精品免费观看不卡| 成人av电影免费在线播放| 亚洲一区二区不卡免费| 日韩精品在线一区| www.成人在线| 日韩黄色片在线观看| 久久九九国产精品|