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

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

?? igmp.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* igmp.c - internet group management protocol routines *//* Copyright 1984 - 2002 Wind River Systems, Inc. *//* * Copyright (c) 1988 Stephen Deering. * Copyright (c) 1992, 1993 *	The Regents of the University of California.  All rights reserved. * * This code is derived from software contributed to Berkeley by * Stephen Deering of Stanford University. * * 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. * *	@(#)igmp.c	8.2 (Berkeley) 5/3/95 * $FreeBSD: src/sys/netinet/igmp.c,v 1.28 1999/08/28 00:49:14 peter Exp $ * Internet Group Management Protocol (IGMP) routines. * * Written by Steve Deering, Stanford, May 1988. * Modified by Rosen Sharma, Stanford, Aug 1994. * Modified by Bill Fenner, Xerox PARC, Feb 1995. * Modified to fully comply to IGMPv2 by Bill Fenner, Oct 1995. * * MULTICAST Revision: 3.5.1.4 *//*modification history--------------------01i,21jun02,rae  Removed unnecessary #include01h,04dec01,rae  cleanup01g,05nov01,vvv  fixed compilation warning01f,12oct01,rae  merge from truestack, upgrade to V201e,05oct97,vin  changes for multicast hashing.01d,08mar97,vin  added mCastRouteFwdHook to access mcast routing code.01c,31jan97,vin  changed declaration according to prototype decl in protosw.h01b,11nov96,vin  added cluster support, changed m_gethdr mHdlClGet.01a,03mar96,vin  created from BSD4.4 stuff.*//* Internet Group Management Protocol (IGMP) routines. */#include "vxWorks.h"#include "errno.h"#include "stdio.h"#include "net/mbuf.h"#include "sys/socket.h"#include "net/protosw.h"#include "net/if.h"#include "net/route.h"#include "netinet/in.h"#include "netinet/in_var.h"#include "netinet/in_systm.h"#include "netinet/ip.h"#include "netinet/ip_var.h"#include "netinet/igmp.h"#include "netinet/igmp_var.h"#include "net/systm.h"/* #include "ppp/random.h" */   /*  XXX -- illegal cross-product reference */#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#include "netinet/vsIgmp.h"#include "netinet/vsMcast.h"#endif /* VIRTUAL_STACK */#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET#include "wvNetLib.h"#endif /* INCLUDE_WVNET */#endif/* externs */extern VOIDFUNCPTR _igmpJoinGrpHook; extern VOIDFUNCPTR _igmpLeaveGrpHook;extern int         random (); #ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* Set common fields of event identifiers for this module. */LOCAL UCHAR wvNetModuleId = WV_NET_IGMP_MODULE;   /* Value for igmp.c */LOCAL UCHAR wvNetLocalFilter = WV_NET_NONE;     /* Available event filter */LOCAL ULONG wvNetEventId;       /* Event identifier: see wvNetLib.h */#endif  /* INCLUDE_WVNET */#endif#ifndef VIRTUAL_STACKextern struct ifnet loif[];extern FUNCPTR _mCastRouteFwdHook;	/* WRS mcast forward command hook *//* globals */struct igmpstat igmpstat;static int igmp_timers_are_running = 0;static struct router_info *Head;#endif VIRTUAL_STACKVOIDFUNCPTR _igmpJoinAlertHook; VOIDFUNCPTR _igmpLeaveAlertHook; VOIDFUNCPTR _igmpQuerierTimeUpdateHook;VOIDFUNCPTR _igmpMessageHook;static u_long igmp_all_hosts_group;static u_long igmp_all_rtrs_group;static struct mbuf *router_alert;/* forward declarations */static void igmp_joingroup (struct in_multi *inm);static void igmp_leavegroup (struct in_multi *inm);static struct router_info *		find_rti(struct ifnet *ifp);static void igmp_sendpkt (struct in_multi *, int, unsigned long);voidigmp_init(){	struct ipoption *ra;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */            WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_VERBOSE, 15, 8,                            WV_NETEVENT_IGMPINIT_START)#endif  /* INCLUDE_WVNET */#endif	/*	 * To avoid byte-swapping the same value over and over again.	 */	igmp_all_hosts_group = htonl(INADDR_ALLHOSTS_GROUP);	igmp_all_rtrs_group = htonl(INADDR_ALLRTRS_GROUP);	_igmpJoinGrpHook = igmp_joingroup; 	_igmpLeaveGrpHook = igmp_leavegroup;	igmp_timers_are_running = 0;	/*	 * Construct a Router Alert option to use in outgoing packets	 */	router_alert = mBufClGet(M_DONTWAIT, MT_DATA, CL_SIZE_128, TRUE);	ra = mtod(router_alert, struct ipoption *);	ra->ipopt_dst.s_addr = 0;	ra->ipopt_list[0] = IPOPT_RA;	/* Router Alert Option */	ra->ipopt_list[1] = 0x04;	/* 4 bytes long */	ra->ipopt_list[2] = 0x00;	ra->ipopt_list[3] = 0x00;	router_alert->m_len = sizeof(ra->ipopt_dst) + ra->ipopt_list[1];        Head = (struct router_info *) 0;}static struct router_info *find_rti(ifp)	struct ifnet *ifp;{        register struct router_info *rti = Head;#ifdef IGMP_DEBUG	printf("[igmp.c, _find_rti] --> entering \n");#endif        while (rti) {                if (rti->rti_ifp == ifp) {#ifdef IGMP_DEBUG			printf("[igmp.c, _find_rti] --> found old entry \n");#endif                        return rti;                }                rti = rti->rti_next;        }	if((rti = malloc(sizeof(struct router_info))) == NULL)	  return NULL;    /*	MALLOC(rti, struct router_info *, sizeof *rti, M_IGMP, M_NOWAIT); */        rti->rti_ifp = ifp;        rti->rti_type = IGMP_V2_ROUTER;        rti->rti_time = 0;        rti->rti_next = Head;        Head = rti;#ifdef IGMP_DEBUG	printf("[igmp.c, _find_rti] --> created an entry \n");#endif        return rti;}voidigmp_input(m, iphlen)	register struct mbuf *m;	register int iphlen;{	register struct igmp *igmp;	register struct ip *ip;	register int igmplen;	register struct ifnet *ifp = m->m_pkthdr.rcvif;	register int minlen;	register struct in_multi *inm;	register struct in_ifaddr *ia;	struct router_info *rti;		int timer; /** timer value in the igmp query header **/	++igmpstat.igps_rcv_total;	ip = mtod(m, struct ip *);	igmplen = ip->ip_len;	/*	 * Validate lengths	 */	if (igmplen < IGMP_MINLEN) {		++igmpstat.igps_rcv_tooshort;		m_freem(m);		return;	}	minlen = iphlen + IGMP_MINLEN;	if ((m->m_flags & M_EXT || m->m_len < minlen) &&	    (m = m_pullup(m, minlen)) == 0) {		++igmpstat.igps_rcv_tooshort;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */                WV_NET_EVENT_0 (NET_CORE_EVENT, WV_NET_CRITICAL, 6, 2,                                  WV_NETEVENT_IGMPIN_SHORTMSG, WV_NET_RECV)#endif  /* INCLUDE_WVNET */#endif		return;	}	/*	 * Validate checksum	 */	m->m_data += iphlen;	m->m_len -= iphlen;	igmp = mtod(m, struct igmp *);	if (in_cksum(m, igmplen)) {		++igmpstat.igps_rcv_badsum;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */                WV_NET_EVENT_0 (NET_CORE_EVENT, WV_NET_CRITICAL, 7, 3,                                   WV_NETEVENT_IGMPIN_BADSUM, WV_NET_RECV)#endif  /* INCLUDE_WVNET */#endif		m_freem(m);		return;	}	m->m_data -= iphlen;	m->m_len += iphlen;	ip = mtod(m, struct ip *);	timer = igmp->igmp_code * PR_FASTHZ / IGMP_TIMER_SCALE;	if (timer == 0)		timer = 1;	rti = find_rti(ifp);	/*	 * In the IGMPv2 specification, there are 3 states and a flag.	 *	 * In Non-Member state, we simply don't have a membership record.	 * In Delaying Member state, our timer is running (inm->inm_timer)	 * In Idle Member state, our timer is not running (inm->inm_timer==0)	 *	 * The flag is inm->inm_state, it is set to IGMP_OTHERMEMBER if	 * we have heard a report from another member, or IGMP_IREPORTEDLAST	 * if I sent the last report.	 */	switch (igmp->igmp_type) {	case IGMP_MEMBERSHIP_QUERY:		++igmpstat.igps_rcv_queries;		if (ifp->if_flags & IFF_LOOPBACK)			break;		if (igmp->igmp_code == 0) {			/*			 * Old router.  Remember that the querier on this			 * interface is old, and set the timer to the			 * value in RFC 1112.			 */			rti->rti_type = IGMP_V1_ROUTER;			rti->rti_time = 0;                        if(_igmpQuerierTimeUpdateHook != NULL)                            _igmpQuerierTimeUpdateHook(rti->rti_ifp->if_index,                                                       rti->rti_time);			timer = IGMP_MAX_HOST_REPORT_DELAY * PR_FASTHZ;			if (ip->ip_dst.s_addr != igmp_all_hosts_group ||			    igmp->igmp_group.s_addr != 0) {				++igmpstat.igps_rcv_badqueries;				m_freem(m);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_WARNING event */            WV_NET_DSTADDRIN_EVENT_3 (NET_CORE_EVENT, WV_NET_WARNING, 5, 4,                                        ip->ip_dst.s_addr,                                      WV_NETEVENT_IGMPIN_BADADDR, WV_NET_RECV,                                      igmp->igmp_type, ip->ip_dst.s_addr, 0)#endif  /* INCLUDE_WVNET */#endif				return;			}		} else {			/*			 * New router.  Simply do the new validity check.			 */						if (igmp->igmp_group.s_addr != 0 &&			    !IN_MULTICAST(ntohl(igmp->igmp_group.s_addr))) {				++igmpstat.igps_rcv_badqueries;				m_freem(m);#ifdef WV_INSTRUMENTATION

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品黄色在线观看 | 欧美亚洲精品一区| 久久精品欧美一区二区三区不卡 | 伊人色综合久久天天| 色丁香久综合在线久综合在线观看| 26uuu成人网一区二区三区| 日韩国产一区二| 欧美蜜桃一区二区三区| 图片区小说区区亚洲影院| 欧美日精品一区视频| 亚洲不卡av一区二区三区| 欧美体内she精高潮| 男人操女人的视频在线观看欧美| 欧美一区二区视频在线观看2022| 首页亚洲欧美制服丝腿| 欧美视频在线播放| 美女视频网站久久| 国产日韩欧美高清| 色综合中文字幕国产| 免费看日韩a级影片| 欧美日韩一区二区三区免费看| 亚洲一区二区3| 欧美另类z0zxhd电影| 久久er99热精品一区二区| 久久久久国产精品免费免费搜索| 国产大陆a不卡| 亚洲一区电影777| 日韩精品专区在线影院重磅| 国产乱子伦一区二区三区国色天香| 日韩欧美一级片| 丁香一区二区三区| 一区二区成人在线观看| 欧美性一二三区| 国产精品88888| 夜夜精品浪潮av一区二区三区| 欧美精品在线观看播放| 大白屁股一区二区视频| 亚洲综合视频网| 欧美tickling挠脚心丨vk| 一本大道久久a久久综合婷婷| 亚洲一区二区三区视频在线播放| 日韩欧美在线一区二区三区| 久久国产三级精品| 亚洲电影你懂得| 久久亚洲精华国产精华液| 国产91在线观看丝袜| 麻豆精品国产传媒mv男同| 中文字幕一区二区不卡| 91精品啪在线观看国产60岁| 99久久99久久综合| 另类小说图片综合网| 综合久久国产九一剧情麻豆| 精品国产91乱码一区二区三区| 91免费在线看| 国产精品一线二线三线精华| 中文字幕一区在线| 日韩欧美黄色影院| 91久久精品日日躁夜夜躁欧美| 视频在线观看国产精品| 亚洲欧美二区三区| 久久久欧美精品sm网站| 91福利区一区二区三区| 色综合久久综合网| 国产成人亚洲精品青草天美| 亚洲一区免费观看| 亚洲综合男人的天堂| 久久奇米777| 91精品国产乱码久久蜜臀| 欧美性大战久久久久久久| 国产a精品视频| 久久国产成人午夜av影院| 免费在线观看视频一区| 亚洲一区二区三区小说| 国产欧美一区二区精品性色| 欧美xxxx老人做受| 3atv一区二区三区| 国产成人在线网站| 国产精品自在在线| 久久不见久久见免费视频1| 久久五月婷婷丁香社区| 精品成人在线观看| 日韩视频免费观看高清在线视频| 欧美中文字幕一二三区视频| 成人黄色小视频| 处破女av一区二区| 成人手机电影网| 成人免费毛片aaaaa**| 国产成人自拍在线| 国产91在线观看丝袜| 奇米影视7777精品一区二区| 天涯成人国产亚洲精品一区av| 亚洲免费av高清| 国产精品久久久久桃色tv| 亚洲国产精品黑人久久久| 国产欧美精品一区二区三区四区 | 国产一区不卡精品| 丰满白嫩尤物一区二区| 国内精品第一页| 国产激情视频一区二区在线观看| 国产尤物一区二区| 国产成人综合亚洲91猫咪| 国产成人在线观看免费网站| 成人听书哪个软件好| 高清国产一区二区三区| av在线不卡电影| 成人的网站免费观看| hitomi一区二区三区精品| 国产成人日日夜夜| 99久久精品国产网站| 成人免费毛片高清视频| 在线观看视频91| av成人老司机| 欧美日韩国产在线观看| 欧美色图免费看| 欧美sm极限捆绑bd| 久久久精品免费免费| 亚洲丝袜美腿综合| 亚洲欧美一区二区在线观看| 亚洲成a人片在线观看中文| 男人的天堂久久精品| 国产91高潮流白浆在线麻豆| 色婷婷一区二区三区四区| 正在播放亚洲一区| 国产精品久久一卡二卡| 亚洲一区欧美一区| 亚洲国产成人91porn| 老司机精品视频导航| 成人免费av网站| 欧美色偷偷大香| 一区视频在线播放| 五月天欧美精品| 精品一区二区三区视频| 91丨porny丨国产入口| 日韩一区和二区| 国产精品久久久久三级| 免费久久精品视频| 成人aaaa免费全部观看| 欧美系列在线观看| 国产女人aaa级久久久级| 午夜国产精品影院在线观看| 亚洲福利一区二区三区| 国产成人在线观看免费网站| 欧美日韩精品二区第二页| 久久久久久免费毛片精品| 亚洲狠狠爱一区二区三区| 国产呦萝稀缺另类资源| 国产成人精品免费| 日韩美女主播在线视频一区二区三区 | 久久国产精品99久久人人澡| 国产一区二区三区不卡在线观看 | 成人黄动漫网站免费app| 成人毛片视频在线观看| 国产亚洲欧美一级| 青青草成人在线观看| 色综合久久天天综合网| 国产免费成人在线视频| 老司机精品视频线观看86| 在线观看亚洲成人| 成人免费在线播放视频| 精品在线播放免费| 欧美精品免费视频| 亚洲成a人v欧美综合天堂下载| jizz一区二区| 国产三级一区二区| 精品一区二区三区免费视频| 91精品国产色综合久久不卡电影 | 欧美日韩高清一区二区不卡| 一区二区在线看| 成人va在线观看| 麻豆免费看一区二区三区| 色偷偷久久一区二区三区| 亚洲欧美日韩在线播放| 成人app网站| 亚洲精品中文在线影院| 国产福利一区在线| 亚洲人成网站影音先锋播放| 99re成人精品视频| 中文字幕一区二区在线播放| 色综合久久天天综合网| 国产精品福利av| 欧美唯美清纯偷拍| 亚洲国产中文字幕在线视频综合| 欧美日韩精品三区| 亚洲国产一区二区a毛片| 欧美久久久一区| 日本久久一区二区三区| 亚洲免费大片在线观看| 色婷婷久久久综合中文字幕| 国产精品久久久久久久久搜平片 | 欧美一区二区免费观在线| 亚洲免费色视频| 欧美精品tushy高清| 久久精品国产免费看久久精品| 日韩美女主播在线视频一区二区三区| 国产一区久久久| 国产精品污网站| 在线播放一区二区三区| 久久成人羞羞网站| 亚洲女子a中天字幕| 欧美理论在线播放|