亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩视频免费直播| 日韩欧美www| 激情国产一区二区| 亚洲激情成人在线| 2021久久国产精品不只是精品| 成人黄色软件下载| 日韩中文字幕区一区有砖一区 | 日本乱码高清不卡字幕| 激情综合色播五月| 天天色综合天天| 亚洲同性gay激情无套| 久久综合九色综合欧美98| 欧美日韩小视频| 色综合久久88色综合天天6| 国产激情视频一区二区在线观看 | 欧美三级乱人伦电影| 国产 欧美在线| 精品一区二区久久| 日本欧美久久久久免费播放网| 亚洲精品自拍动漫在线| 中文字幕乱码久久午夜不卡| 日韩精品一区二区三区蜜臀| 欧美日韩一区在线| 日本精品视频一区二区| 成人午夜视频福利| 精品午夜一区二区三区在线观看| 五月天欧美精品| 亚洲影视资源网| 亚洲一级在线观看| 亚洲一区二区成人在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 在线观看成人免费视频| 成人av免费在线| 成人永久aaa| 成人小视频在线| av不卡在线播放| 成人激情开心网| 91色porny| 在线免费亚洲电影| 一本色道**综合亚洲精品蜜桃冫| 91啪在线观看| 色哟哟日韩精品| 欧美三级电影一区| 欧美人与性动xxxx| 91精品国产aⅴ一区二区| 91精品欧美综合在线观看最新| 欧美日韩成人综合在线一区二区 | 中文字幕中文字幕一区| 中文字幕成人av| 日韩伦理av电影| 一区二区三区四区不卡视频| 亚洲自拍偷拍欧美| 午夜私人影院久久久久| 日韩二区三区四区| 久久精品国产秦先生| 国产激情精品久久久第一区二区 | 亚洲最大成人网4388xx| 亚洲国产一区二区在线播放| 香蕉久久夜色精品国产使用方法| 五月开心婷婷久久| 久久成人麻豆午夜电影| 国产一区91精品张津瑜| 成人高清免费观看| 欧美最新大片在线看| 51精品久久久久久久蜜臀| 精品对白一区国产伦| 国产精品免费视频观看| 午夜精品福利一区二区蜜股av| 狠狠色丁香婷婷综合久久片| 成人深夜福利app| 欧美性欧美巨大黑白大战| 91麻豆精品国产无毒不卡在线观看 | 在线观看网站黄不卡| 日韩欧美区一区二| 18涩涩午夜精品.www| 日韩国产成人精品| 国产不卡视频在线观看| 欧美日韩国产首页| 国产欧美日韩视频一区二区| 亚洲精品乱码久久久久久| 麻豆91在线看| 99re视频这里只有精品| 911国产精品| 国产精品天干天干在线综合| 亚洲午夜影视影院在线观看| 国产一区二区福利| 欧美亚洲尤物久久| 久久精品日韩一区二区三区| 亚洲高清免费观看 | 激情国产一区二区| 欧美性大战久久久久久久蜜臀| 久久你懂得1024| 日韩精品一卡二卡三卡四卡无卡| 成人午夜视频在线| 欧美电视剧免费观看| 亚洲一区二区三区四区在线免费观看| 国产伦精品一区二区三区在线观看| 欧美色老头old∨ideo| 国产欧美日韩在线看| 免费在线观看成人| 欧美性色aⅴ视频一区日韩精品| 久久免费国产精品| 日韩精品电影一区亚洲| 91麻豆成人久久精品二区三区| 精品三级av在线| 污片在线观看一区二区| 色一情一乱一乱一91av| 欧美成人video| 色综合天天综合色综合av| 久久免费精品国产久精品久久久久| 免费精品视频在线| 一区二区三区四区av| 亚洲一区二区不卡免费| 不卡的av在线| 国产网红主播福利一区二区| 婷婷中文字幕综合| av一本久道久久综合久久鬼色| 精品99久久久久久| 日本欧美大码aⅴ在线播放| 一本色道久久综合亚洲91 | 亚洲蜜臀av乱码久久精品 | 亚洲第一在线综合网站| 成人av在线一区二区三区| 2021中文字幕一区亚洲| 久久精品国产亚洲一区二区三区| 欧美日韩一本到| 亚洲夂夂婷婷色拍ww47| 色婷婷av一区二区三区大白胸| 中文字幕一区在线| 成人午夜碰碰视频| 国产视频亚洲色图| 国产高清久久久| 国产欧美一区二区精品性色超碰 | 美洲天堂一区二卡三卡四卡视频| 欧美日韩精品欧美日韩精品一 | 国产69精品久久久久777| 久久久精品国产99久久精品芒果| 国内精品不卡在线| 国产亚洲一区二区在线观看| 国产激情精品久久久第一区二区| 国产日韩在线不卡| 懂色av一区二区三区免费看| 国产精品美女久久久久久久久 | 在线免费精品视频| 亚洲成av人片在www色猫咪| 欧美午夜视频网站| 五月天激情综合网| 精品日韩一区二区| 国产不卡高清在线观看视频| 中文字幕一区二区三区四区不卡| 91女人视频在线观看| 亚洲一区二区三区影院| 欧美一区二区三区四区五区 | 国产人成一区二区三区影院| 国产成人免费网站| 中文字幕日韩一区二区| 91久久一区二区| 日本欧美韩国一区三区| 欧美精品一区男女天堂| 成人黄色a**站在线观看| 亚洲色图另类专区| 欧美久久久久久久久中文字幕| 久久99精品久久久久久久久久久久| 国产视频视频一区| 91国偷自产一区二区三区成为亚洲经典| 亚洲国产精品嫩草影院| 欧美一区二区视频免费观看| 国产成人免费在线视频| 一区二区在线免费观看| 日韩免费观看高清完整版在线观看| 国产成人在线免费观看| 一区二区三区中文字幕在线观看| 在线成人高清不卡| 国产成人亚洲综合a∨婷婷图片| 洋洋成人永久网站入口| 精品免费日韩av| 91亚洲精品久久久蜜桃| 精品一区二区三区不卡| 欧美亚洲一区二区在线| 日韩高清在线不卡| 久久伊人中文字幕| 久久99蜜桃精品| 欧美视频一区二区| 久久精品欧美日韩| 国产精品成人在线观看| 无吗不卡中文字幕| 91视频免费观看| 久久久久久久网| 天天影视涩香欲综合网| 91成人免费在线| 亚洲乱码国产乱码精品精小说| 久久精品国产一区二区三| 99天天综合性| 日本韩国一区二区| 久久久国产午夜精品| 欧美国产一区二区| 国产一区二区91| 国产精品成人免费 | 精品久久久久久综合日本欧美| 久久99国产精品久久|