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

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

?? raw_usrreq.c

?? vxwork源代碼
?? C
字號:
/* raw_usrreq.c - raw protocol interface *//* Copyright 1984 - 2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1980, 1986, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)raw_usrreq.c	8.1 (Berkeley) 6/10/93 *//*modification history--------------------02d,12oct01,rae  merge from truestack ver 02e, base 02c02c,03jul97,vin  SPR 8885. fixed warnings. 02b,31jan97,vin  changed declaration according to prototype decl in protosw.h01a,03mar96,vin  created from BSD4.4lite2.*//*DESCRIPTION*/#include "vxWorks.h"#include "netLib.h"#include "net/mbuf.h"#include "net/domain.h"#include "net/protosw.h"#include "sys/socket.h"#include "net/socketvar.h"#include "errno.h"#include "net/if.h"#include "net/route.h"#include "net/raw_cb.h"#include "net/systm.h"#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET#include "wvNetLib.h"#endif#endif#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* Set common fields of event identifiers for this module. */LOCAL UCHAR wvNetModuleId = WV_NET_RAWREQ_MODULE; /* Value for raw_usrreq.c */LOCAL UCHAR wvNetLocalFilter = WV_NET_NONE;     /* Available event filter */LOCAL ULONG wvNetEventId;       /* Event identifier: see wvNetLib.h */#endif    /* INCLUDE_WVNET */#endif#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#endif    /* VIRTUAL_STACK *//* * Initialize raw connection block q. */voidraw_init(){#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */    WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_VERBOSE, 32, 7,                     WV_NETEVENT_RAWINIT_START)#endif  /* INCLUDE_WVNET */#endif#ifdef VIRTUAL_STACK	_rawcb.rcb_next = _rawcb.rcb_prev = &_rawcb;#else    /* VIRTUAL_STACK */	rawcb.rcb_next = rawcb.rcb_prev = &rawcb;#endif   /* VIRTUAL_STACK */	return;}/* * Raw protocol input routine.  Find the socket * associated with the packet(s) and move them over.  If * nothing exists for this packet, drop it. *//* * Raw protocol interface. */voidraw_input(m0, proto, src, dst)	struct mbuf *m0;	register struct sockproto *proto;	struct sockaddr *src, *dst;{	register struct rawcb *rp;	register struct mbuf *m = m0;	register int sockets = 0;	struct socket *last;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_NOTICE event */    WV_NET_EVENT_2 (NET_CORE_EVENT, WV_NET_NOTICE, 16, 4,                     WV_NETEVENT_RAWIN_START, WV_NET_RECV,                     proto->sp_family, proto->sp_protocol)#endif  /* INCLUDE_WVNET */#endif	last = 0;#ifdef VIRTUAL_STACK	for (rp = _rawcb.rcb_next; rp != &_rawcb; rp = rp->rcb_next) {#else	for (rp = rawcb.rcb_next; rp != &rawcb; rp = rp->rcb_next) {#endif		if (rp->rcb_proto.sp_family != proto->sp_family)			continue;		if (rp->rcb_proto.sp_protocol  &&		    rp->rcb_proto.sp_protocol != proto->sp_protocol)			continue;		/*		 * We assume the lower level routines have		 * placed the address in a canonical format		 * suitable for a structure comparison.		 *		 * Note that if the lengths are not the same		 * the comparison will fail at the first byte.		 */#define	equal(a1, a2) \  (bcmp((caddr_t)(a1), (caddr_t)(a2), a1->sa_len) == 0)		if (rp->rcb_laddr && !equal(rp->rcb_laddr, dst))			continue;		if (rp->rcb_faddr && !equal(rp->rcb_faddr, src))			continue;		if (last) {			struct mbuf *n;			if ((n = m_copy(m, 0, (int)M_COPYALL))) {				if (sbappendaddr(&last->so_rcv, src,				    n, (struct mbuf *)0) == 0)                                    {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_WARNING event */                    WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_WARNING, 10, 3,                                    WV_NETEVENT_RAWIN_LOST, WV_NET_RECV,                                    last->so_fd)#endif  /* INCLUDE_WVNET */#endif					/* should notify about lost packet */					m_freem(n);                                    }				else {					sorwakeup(last);					sockets++;				}			}		}		last = rp->rcb_socket;	}	if (last) {		if (sbappendaddr(&last->so_rcv, src,		    m, (struct mbuf *)0) == 0)                    {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_WARNING event */                    WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_WARNING, 10, 3,                                    WV_NETEVENT_RAWIN_LOST, WV_NET_RECV,                                    last->so_fd)#endif  /* INCLUDE_WVNET */#endif			m_freem(m);                     }		else {			sorwakeup(last);			sockets++;		}	} else		m_freem(m);	return;}/*ARGSUSED*/voidraw_ctlinput(cmd, arg)	int cmd;	struct sockaddr *arg;{/* * XXX - This event is not reported because the routine currently does *       nothing when called.#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_INFO event @/    WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_INFO, 15, 5,                     WV_NETEVENT_RAWCTLIN_START, cmd)#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */	if (cmd < 0 || cmd > PRC_NCMDS)		return;	/* INCOMPLETE */}/*ARGSUSED*/intraw_usrreq(so, req, m, nam, control)	struct socket *so;	int req;	struct mbuf *m, *nam, *control;{	register struct rawcb *rp = sotorawcb(so);	register int error = 0;	int len;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */    WV_NET_MARKER_2 (NET_CORE_EVENT, WV_NET_INFO, 16, 6,                     WV_NETEVENT_RAWREQ_START, so->so_fd, req)#endif  /* INCLUDE_WVNET */#endif	if (req == PRU_CONTROL)		return (EOPNOTSUPP);	if (control && control->m_len) {		error = EOPNOTSUPP;		goto release;	}	if (rp == 0) {		error = EINVAL;		goto release;	}	switch (req) {	/*	 * Allocate a raw control block and fill in the	 * necessary info to allow packets to be routed to	 * the appropriate raw interface routine.	 */	case PRU_ATTACH:		if ((so->so_state & SS_PRIV) == 0) {			error = EACCES;			break;		}		error = raw_attach(so, (int)nam);		break;	/*	 * Destroy state just before socket deallocation.	 * Flush data or not depending on the options.	 */	case PRU_DETACH:		if (rp == 0) {			error = ENOTCONN;			break;		}		raw_detach(rp);		break;#ifdef notdef	/*	 * If a socket isn't bound to a single address,	 * the raw input routine will hand it anything	 * within that protocol family (assuming there's	 * nothing else around it should go to). 	 */	case PRU_CONNECT:		if (rp->rcb_faddr) {			error = EISCONN;			break;		}		nam = m_copym(nam, 0, M_COPYALL, M_WAIT);		rp->rcb_faddr = mtod(nam, struct sockaddr *);		soisconnected(so);		break;	case PRU_BIND:		if (rp->rcb_laddr) {			error = EINVAL;			/* XXX */			break;		}		error = raw_bind(so, nam);		break;#endif	case PRU_CONNECT2:		error = EOPNOTSUPP;		goto release;	case PRU_DISCONNECT:		if (rp->rcb_faddr == 0) {			error = ENOTCONN;			break;		}		raw_disconnect(rp);		soisdisconnected(so);		break;	/*	 * Mark the connection as being incapable of further input.	 */	case PRU_SHUTDOWN:		socantsendmore(so);		break;	/*	 * Ship a packet out.  The appropriate raw output	 * routine handles any massaging necessary.	 */	case PRU_SEND:		if (nam) {			if (rp->rcb_faddr) {				error = EISCONN;				break;			}			rp->rcb_faddr = mtod(nam, struct sockaddr *);		} else if (rp->rcb_faddr == 0) {			error = ENOTCONN;			break;		}		error = (*so->so_proto->pr_output)(m, so);		m = NULL;		if (nam)			rp->rcb_faddr = 0;		break;	case PRU_ABORT:		soisdisconnected(so);		raw_disconnect(rp);		break;	case PRU_SENSE:		/*		 * stat: don't bother with a blocksize.		 */		return (0);	/*	 * Not supported.	 */	case PRU_RCVOOB:	case PRU_RCVD:		return(EOPNOTSUPP);	case PRU_LISTEN:	case PRU_ACCEPT:	case PRU_SENDOOB:		error = EOPNOTSUPP;		break;	case PRU_SOCKADDR:		if (rp->rcb_laddr == 0) {			error = EINVAL;			break;		}		len = rp->rcb_laddr->sa_len;		bcopy((caddr_t)rp->rcb_laddr, mtod(nam, caddr_t), (unsigned)len);		nam->m_len = len;		break;	case PRU_PEERADDR:		if (rp->rcb_faddr == 0) {			error = ENOTCONN;			break;		}		len = rp->rcb_faddr->sa_len;		bcopy((caddr_t)rp->rcb_faddr, mtod(nam, caddr_t), (unsigned)len);		nam->m_len = len;		break;	default:#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_EMERGENCY event */            WV_NET_MARKER_2 (NET_CORE_EVENT, WV_NET_EMERGENCY, 20, 1,                             WV_NETEVENT_RAWREQ_PANIC, so->so_fd, req)#endif  /* INCLUDE_WVNET */#endif		panic("raw_usrreq");	}release:	if (m != NULL)		m_freem(m);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */    if (error)        {        WV_NET_MARKER_3 (NET_CORE_EVENT, WV_NET_ERROR, 36, 2,                         WV_NETEVENT_RAWREQ_FAIL, so->so_fd, req, error)        }#endif  /* INCLUDE_WVNET */#endif	return (error);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色视频在线观看| 国产成人午夜高潮毛片| 蜜臀av一区二区在线免费观看| 美女mm1313爽爽久久久蜜臀| 韩国精品主播一区二区在线观看| 成人91在线观看| 欧美三级日本三级少妇99| 日韩一级二级三级精品视频| 久久精品亚洲国产奇米99| 亚洲欧美日韩在线播放| 喷水一区二区三区| 成人一区二区三区中文字幕| 一本色道综合亚洲| 日韩一级大片在线| 国产精品欧美一区喷水| 丝袜a∨在线一区二区三区不卡| 久草在线在线精品观看| aaa欧美色吧激情视频| 91精品国产高清一区二区三区蜜臀 | 欧美私人免费视频| 日韩欧美一区电影| 日韩美女视频一区二区| 久久99精品国产.久久久久久| 成人av资源下载| 4438x成人网最大色成网站| 亚洲第一二三四区| 国产一区二区三区黄视频 | 亚洲国产精品精华液ab| 亚洲成va人在线观看| 国产精品一级在线| 欧美区一区二区三区| 中文av一区特黄| 日韩av午夜在线观看| 成人18精品视频| 精品国产乱码久久久久久图片| 一区二区三区日韩精品| 国产成人精品免费看| 欧美日韩精品系列| 欧美激情在线观看视频免费| 日本中文字幕一区二区视频 | 亚洲综合网站在线观看| 国产成人av电影在线观看| 欧美美女网站色| 中文字幕一区视频| 国产一区二区三区在线观看免费视频 | 精品国产一区二区三区久久久蜜月 | 激情国产一区二区| 欧美日韩一卡二卡三卡 | 色综合中文字幕国产 | 国产成人精品免费视频网站| 欧美一区二区三区免费观看视频| 亚洲激情第一区| 99精品国产视频| 国产女同互慰高潮91漫画| 蜜臀精品久久久久久蜜臀| 欧美三区在线观看| 亚洲免费观看高清在线观看| 亚洲黄色录像片| 成人动漫中文字幕| 久久久久久久综合| 另类小说一区二区三区| 欧美人牲a欧美精品| 亚洲一区二区在线播放相泽| 99精品视频一区| 国产精品麻豆久久久| 国产精品小仙女| 国产视频视频一区| 国产馆精品极品| 久久久久99精品国产片| 国产在线看一区| 精品人伦一区二区色婷婷| 蜜桃一区二区三区在线观看| 欧美一区二区三区四区在线观看| 亚洲www啪成人一区二区麻豆 | 日本人妖一区二区| 欧美精品久久久久久久久老牛影院| 亚洲一区二区三区精品在线| 91黄色免费观看| 一区二区三区欧美在线观看| 欧日韩精品视频| 亚洲图片自拍偷拍| 欧美日本在线视频| 日韩激情中文字幕| 精品国产欧美一区二区| 国内精品自线一区二区三区视频| 精品国产三级电影在线观看| 国产精品一级黄| 国产精品剧情在线亚洲| av在线不卡网| 一区二区三区精品视频| 欧美日韩在线播放一区| 亚洲国产日韩一级| 日韩欧美在线综合网| 极品少妇xxxx偷拍精品少妇| 久久久高清一区二区三区| 不卡一区二区三区四区| 亚洲日本护士毛茸茸| 欧美午夜理伦三级在线观看| 免费欧美在线视频| 国产日产精品1区| 91在线视频官网| 午夜精彩视频在线观看不卡| 日韩欧美在线1卡| 国产aⅴ综合色| 亚洲三级免费观看| 欧美挠脚心视频网站| 免费成人在线观看| 亚洲国产电影在线观看| 色综合久久久久综合体| 奇米精品一区二区三区四区 | 99久久精品情趣| 亚洲bt欧美bt精品777| 精品三级在线观看| 97精品视频在线观看自产线路二| 亚洲一卡二卡三卡四卡五卡| 精品国产91九色蝌蚪| hitomi一区二区三区精品| 性欧美疯狂xxxxbbbb| 久久久久久日产精品| 日本伦理一区二区| 国产在线一区二区综合免费视频| 亚洲人成人一区二区在线观看| 欧美一级黄色录像| 97aⅴ精品视频一二三区| 日韩精品亚洲一区| 国产精品不卡在线观看| 91精品国产综合久久香蕉麻豆| 国产精品91xxx| 亚欧色一区w666天堂| 欧美国产一区视频在线观看| 欧美日韩不卡一区二区| 成人国产一区二区三区精品| av一二三不卡影片| 免费人成在线不卡| 亚洲六月丁香色婷婷综合久久| 精品美女一区二区| 在线精品国精品国产尤物884a| 国产一区二区三区不卡在线观看 | 色噜噜狠狠色综合欧洲selulu| 青娱乐精品视频在线| 亚洲欧洲一区二区在线播放| 日韩免费看的电影| 欧美体内she精高潮| 国产·精品毛片| 美女视频黄久久| 亚洲一区二区三区视频在线播放| 国产日产欧美一区二区视频| 91麻豆精品91久久久久久清纯| 99久久精品费精品国产一区二区| 精品亚洲欧美一区| 亚洲午夜久久久久久久久电影院| 国产精品家庭影院| 久久香蕉国产线看观看99| 欧美三级电影一区| www.欧美日韩| 国产成+人+日韩+欧美+亚洲| 久久精品国产免费| 亚洲成人福利片| 亚洲免费观看在线观看| 国产精品久久精品日日| 久久久五月婷婷| 日韩欧美一级特黄在线播放| 欧美日韩一级视频| 色激情天天射综合网| 波多野结衣在线aⅴ中文字幕不卡| 伦理电影国产精品| 日韩高清中文字幕一区| 亚洲精品乱码久久久久久| 国产精品福利一区二区三区| 久久久亚洲午夜电影| 久久免费视频色| 精品国产网站在线观看| 欧美哺乳videos| 日韩精品一区二区三区视频在线观看 | 国产精品视频一区二区三区不卡| 久久综合色综合88| 精品对白一区国产伦| 欧美成人伊人久久综合网| 欧美一区二区三区人| 51精品秘密在线观看| 69精品人人人人| 欧美精品在线一区二区| 欧美日韩午夜影院| 欧美午夜影院一区| 欧美日高清视频| 91精品国产综合久久久蜜臀粉嫩 | 亚洲黄色片在线观看| 亚洲人妖av一区二区| 国产精品水嫩水嫩| 久久久电影一区二区三区| 欧美色视频在线观看| 在线中文字幕不卡| 91同城在线观看| 成人app在线观看| 成人av免费网站| 成人黄色电影在线| 高清国产一区二区| 成人国产一区二区三区精品| 91黄色免费看| 欧美日韩国产小视频在线观看|