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

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

?? in.c

?? 完整的TCP/IP源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
				logMsg("Didn't unlink inifadr from list\n",				       0,0,0,0,0,0);		}		IFAFREE((&oia->ia_ifa));		break;	default:		if (ifp == 0 || ifp->if_ioctl == 0)			return (EOPNOTSUPP);		return ((*ifp->if_ioctl)(ifp, cmd, data));	}	return (0);}/* * Delete any existing route for an interface. */voidin_ifscrub(ifp, ia)	register struct ifnet *ifp;	register struct in_ifaddr *ia;{	if ((ia->ia_flags & IFA_ROUTE) == 0)		return;	if (ifp->if_flags & (IFF_LOOPBACK|IFF_POINTOPOINT))		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST);	else		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, 0);	ia->ia_flags &= ~IFA_ROUTE;}/* * Initialize an interface's internet address * and routing table entry. */intin_ifinit(ifp, ia, sin, scrub)	register struct ifnet *ifp;	register struct in_ifaddr *ia;	struct sockaddr_in *sin;	int scrub;{	register u_long i = ntohl(sin->sin_addr.s_addr);	struct sockaddr_in oldaddr;	int s = splimp(), flags = RTF_UP, error, ether_output();	oldaddr = ia->ia_addr;	ia->ia_addr = *sin;	/*	 * Give the interface a chance to initialize	 * if this is its first address,	 * and to validate the address if necessary.	 */	if (ifp->if_ioctl &&	    (error = (*ifp->if_ioctl)(ifp, SIOCSIFADDR, (caddr_t)ia))) {		splx(s);		ia->ia_addr = oldaddr;		return (error);	}	if (ifp->if_output == ether_output) { /* XXX: Another Kludge */		ia->ia_ifa.ifa_rtrequest = arp_rtrequest;		ia->ia_ifa.ifa_flags |= RTF_CLONING;	}	splx(s);	if (scrub) {		ia->ia_ifa.ifa_addr = (struct sockaddr *)&oldaddr;		in_ifscrub(ifp, ia);		ia->ia_ifa.ifa_addr = (struct sockaddr *)&ia->ia_addr;	}	if (IN_CLASSA(i))		ia->ia_netmask = IN_CLASSA_NET;	else if (IN_CLASSB(i))		ia->ia_netmask = IN_CLASSB_NET;	else		ia->ia_netmask = IN_CLASSC_NET;	/*	 * The subnet mask usually includes at least the standard network part,	 * but may may be smaller in the case of supernetting.	 * If it is set, we believe it.	 */	if (ia->ia_subnetmask == 0) {		ia->ia_subnetmask = ia->ia_netmask;		ia->ia_sockmask.sin_addr.s_addr = htonl(ia->ia_subnetmask);	} else		ia->ia_netmask &= ia->ia_subnetmask;	ia->ia_net = i & ia->ia_netmask;	ia->ia_subnet = i & ia->ia_subnetmask;	in_socktrim(&ia->ia_sockmask);	/*	 * Add route for the network.	 */	ia->ia_ifa.ifa_metric = ifp->if_metric;	if (ifp->if_flags & IFF_BROADCAST) {		ia->ia_broadaddr.sin_addr.s_addr =			htonl(ia->ia_subnet | ~ia->ia_subnetmask);		ia->ia_netbroadcast.s_addr =			htonl(ia->ia_net | ~ ia->ia_netmask);	} else if (ifp->if_flags & IFF_LOOPBACK) {		ia->ia_ifa.ifa_dstaddr = ia->ia_ifa.ifa_addr;		flags |= RTF_HOST;	} else if (ifp->if_flags & IFF_POINTOPOINT) {		if (ia->ia_dstaddr.sin_family != AF_INET)			return (0);		flags |= RTF_HOST;	}	if ((error = rtinit(&(ia->ia_ifa), (int)RTM_ADD, flags)) == 0)		ia->ia_flags |= IFA_ROUTE;	/*	 * If the interface supports multicast, join the "all hosts"	 * multicast group on that interface.	 */	if ( ifp->if_flags & IFF_MULTICAST ) {		struct in_addr addr;		addr.s_addr = htonl(INADDR_ALLHOSTS_GROUP);                in_addmulti (&addr, ifp, NULL);                 ifp->pInmMblk = NULL;	}	return (error);}/********************************************************************************* in_ifaddr_remove - remove an interface from the in_ifaddr list** This function removes the internet interface address given as an input* parameter, from the global linked-list of internet interface addresses* pointed by in_ifaddr. This function is called before dettaching an interface* This function also removes all the internet multicast addresses hooked to * the in_ifaddr. It calls in_delmulti() which in turn calls the ioctl for the* driver to remove the ethernet multicast addresses.* * NOMANUAL* * RETURNS: N/A*/ void in_ifaddr_remove     (    struct ifaddr * pIfAddr		/* pointer to interface address */    )     {    struct in_ifaddr ** pPtrInIfAddr; 	/* pointer to pointer to in_ifaddr */    struct in_ifaddr *  pInIfAddr; 	/* pointer to in_ifaddr */     pPtrInIfAddr = &in_ifaddr; 		/* global variable */    while (*pPtrInIfAddr != NULL)	{	if (*pPtrInIfAddr == (struct in_ifaddr *)pIfAddr)	    {	    pInIfAddr = *pPtrInIfAddr; 	    *pPtrInIfAddr = (*pPtrInIfAddr)->ia_next; 	/* delete from list */	    IFAFREE (&pInIfAddr->ia_ifa);		/* free address */	    break; 	    }	pPtrInIfAddr = &(*pPtrInIfAddr)->ia_next; 	}    } /* * Return 1 if the address might be a local broadcast address. */intin_broadcast(in, ifp)	struct in_addr in;        struct ifnet *ifp;{	register struct ifaddr *ifa;	u_long t;	if (in.s_addr == INADDR_BROADCAST ||	    in.s_addr == INADDR_ANY)		return 1;	if ((ifp->if_flags & IFF_BROADCAST) == 0)		return 0;	t = ntohl(in.s_addr);	/*	 * Look through the list of addresses for a match	 * with a broadcast address.	 */#define ia ((struct in_ifaddr *)ifa)	for (ifa = ifp->if_addrlist; ifa; ifa = ifa->ifa_next)		if (ifa->ifa_addr->sa_family == AF_INET &&		    (in.s_addr == ia->ia_broadaddr.sin_addr.s_addr ||		     in.s_addr == ia->ia_netbroadcast.s_addr ||		     /*		      * Check for old-style (host 0) broadcast.		      */		     t == ia->ia_subnet || t == ia->ia_net))			    return 1;	return (0);#undef ia}/* * Add an address to the list of IP multicast addresses for a given interface. */struct mBlk *in_addmulti(ap, ifp, pInPcb)	register struct in_addr *ap;	register struct ifnet *ifp;	register struct inpcb * pInPcb;{	register struct in_multi *inm;	struct ifreq ifr;        struct mBlk * pInPcbMblk = NULL;        struct mBlk * pInmMblk = NULL;	int s = splnet();	/*	 * See if address already in list.	 */	IN_LOOKUP_MULTI(*ap, ifp, inm);	if (inm != NULL) {#if 0		/*		 * Found it; duplicate the mBlk, increment reference count.		 */        	if ((pInmMblk = mBlkGet (_pNetSysPool, M_DONTWAIT, MT_IPMADDR))                    == NULL)                    goto inAddMultiError;                netMblkDup (DATA_TO_MBLK (inm), pInmMblk);#endif                ++inm->inm_refcount;	}	else {		/*		 * New address; allocate a new multicast record		 * and link it into the interface's multicast list.		 */	        MALLOC(inm, struct in_multi *, sizeof(*inm), MT_IPMADDR,                       M_DONTWAIT);                if (inm == NULL)                    goto inAddMultiError;                pInmMblk = DATA_TO_MBLK (inm);                bzero ((char *)inm, sizeof (*inm));  /* zero the structure */		inm->inm_addr = *ap;		inm->inm_ifp = ifp;		inm->inm_refcount = 1;                /* insert the multicast address into the hash table */                if (mcastHashTblInsert (inm) != OK)                    goto inAddMultiError;		/*		 * Ask the network driver to update its multicast reception		 * filter appropriately for the new address.		 */		((struct sockaddr_in *)&ifr.ifr_addr)->sin_family = AF_INET;		((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr = *ap;		if ((ifp->if_ioctl == NULL) ||		    (*ifp->if_ioctl)(ifp, SIOCADDMULTI,(caddr_t)&ifr) != 0) {                	mcastHashTblDelete (inm);                        goto inAddMultiError;		}		/*		 * Let IGMP know that we have joined a new IP multicast group.		 */		if (_igmpJoinGrpHook != NULL)		    (*_igmpJoinGrpHook) (inm); 	}        /*         * insert the protocol control block into inm pcb list         * this is done to get to the list of pcbs which have joined a         * multicast group. When the hash table is looked up the inm         * returned should have a list of pcbs which the datagram         * should be delivered to. refer udp_usrreq.c where the pcb         * list is used.         */        if (pInPcb != NULL)            {            if ((pInPcbMblk = mBlkGet (_pNetSysPool, M_DONTWAIT, MT_PCB))                == NULL)                goto inAddMultiError;            netMblkDup (DATA_TO_MBLK (pInPcb), pInPcbMblk);            pInPcbMblk->mBlkHdr.mNext = inm->pInPcbMblk;            inm->pInPcbMblk = pInPcbMblk;            }        	splx(s);	return (pInmMblk);	/* return the mBlk pointing to the inm */inAddMultiError:        splx (s);        if (pInmMblk)            m_free (pInmMblk);        return (NULL);}/* * Delete a multicast address record. * deletes all pcbs if pInPcb is NULL.  */intin_delmulti(pInmMblk, pInPcb)    	register struct mBlk * pInmMblk;	register struct inpcb * pInPcb;{	register struct in_multi *inm;        M_BLK_ID *		 ppMblk;        M_BLK_ID		pInPcbMblk; 	struct ifreq ifr;	int s = splnet();        inm = mtod (pInmMblk, struct in_multi *);        /* delete the pcb from the list */        ppMblk = &inm->pInPcbMblk;        if (pInPcb != NULL)            {            while ((pInPcbMblk = *ppMblk))                {                if (pInPcb == mtod (pInPcbMblk, struct inpcb *))                    {                    *ppMblk = (*ppMblk)->mBlkHdr.mNext;                    m_free (pInPcbMblk);                    break;		/* jump out of the while loop */                    }                ppMblk = &(*ppMblk)->mBlkHdr.mNext;                }            }        else if (inm->pInPcbMblk != NULL)            m_freem (inm->pInPcbMblk);	/* free up all pcbs */	if (--inm->inm_refcount == 0) {		/*		 * No remaining claims to this record; let IGMP know that		 * we are leaving the multicast group.		 */		if (_igmpLeaveGrpHook != NULL)		    (*_igmpLeaveGrpHook) (inm); 		/*		 * Notify the network driver to update its multicast reception		 * filter.		 */		((struct sockaddr_in *)&(ifr.ifr_addr))->sin_family = AF_INET;		((struct sockaddr_in *)&(ifr.ifr_addr))->sin_addr =								inm->inm_addr;		(*inm->inm_ifp->if_ioctl)(inm->inm_ifp, SIOCDELMULTI,							     (caddr_t)&ifr);                /* time to delete entry from hash table */                mcastHashTblDelete (inm);	}        /* free the mblk & inm, actual free only clRefCnt is 1 */        m_free (pInmMblk); 		splx(s);	return (OK);}/* * Return address info for specified internet network. */struct in_ifaddr *in_iaonnetof(net)	u_long net;{	register struct in_ifaddr *ia;	for (ia = in_ifaddr; ia; ia = ia->ia_next)		if (ia->ia_subnet == net)			return (ia);	return ((struct in_ifaddr *)0);}/* multicast hashing functions */void mcastHashInit ()    {    /* initialize the mcast hash table */    mCastHashInfo.hashBase =  hashinit (mCastHashTblSize,                                        MT_IPMADDR,                                        &mCastHashInfo.hashMask);    }STATUS mcastHashTblInsert    (    struct in_multi * 	pInMulti    )    {    IN_MULTI_HEAD * 	inMultiHead;    int 		s;     s = splnet();    inMultiHead = &mCastHashInfo.hashBase[MCAST_HASH(pInMulti->inm_addr.s_addr,                                                     pInMulti->inm_ifp,                                                     mCastHashInfo.hashMask)];    /* insert a multicast address structure into the hash table */    LIST_INSERT_HEAD(inMultiHead, pInMulti, inm_hash);        splx(s);    return (OK);     }STATUS mcastHashTblDelete    (    struct in_multi * pInMulti    )    {    int 		s;     s = splnet();    LIST_REMOVE(pInMulti, inm_hash);    splx(s);    return (OK);     }struct in_multi * mcastHashTblLookup    (    int			mcastAddr,	/* multicast Address always in NBO */    struct ifnet * 	pIf		/* interface pointer */    )    {    IN_MULTI_HEAD * 	inMultiHead;    IN_MULTI	* 	pInMulti;    int 		s;    s = splnet();    /* search a hash table for the appropriate multicast address tied to       a particular network interface     */    inMultiHead = &mCastHashInfo.hashBase[MCAST_HASH(mcastAddr, pIf,                                                     mCastHashInfo.hashMask)];    for (pInMulti = inMultiHead->lh_first; pInMulti != NULL;         pInMulti = pInMulti->inm_hash.le_next)        {        if (pInMulti->inm_addr.s_addr == mcastAddr &&            pInMulti->inm_ifp == pIf)            goto found;        }    splx(s);    return (NULL);    found:    /*     * Move IN_MULTI to head of this hash chain so that it can be     * found more quickly in the future.     * XXX - this is a pessimization on machines with few     * concurrent connections.     */    if (pInMulti != inMultiHead->lh_first)        {        LIST_REMOVE(pInMulti, inm_hash);        LIST_INSERT_HEAD(inMultiHead, pInMulti, inm_hash);        }    splx(s);    return (pInMulti);    }#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p日本欧洲亚洲大胆色噜噜| 欧美日韩国产精选| 欧美精品在欧美一区二区少妇| 国产精品欧美久久久久一区二区| 美女网站一区二区| 8x8x8国产精品| 日韩成人一级片| 欧美日韩国产一区| 东方欧美亚洲色图在线| 久久影视一区二区| 欧美午夜影院一区| 婷婷一区二区三区| 51久久夜色精品国产麻豆| av在线一区二区三区| 中文字幕av免费专区久久| www.在线成人| 狠狠狠色丁香婷婷综合激情| 日韩一区二区三区av| 青青草91视频| 欧美国产禁国产网站cc| 日韩欧美中文字幕公布| 欧美精品久久99久久在免费线| 成人动漫一区二区| 性感美女久久精品| 日韩久久精品一区| 成人国产亚洲欧美成人综合网| 蜜桃视频一区二区三区 | 欧美成人精品3d动漫h| 青青草视频一区| 五月婷婷欧美视频| 亚洲成人tv网| 亚洲成人av资源| 亚洲一本大道在线| 精品噜噜噜噜久久久久久久久试看| 欧美精品久久久久久久久老牛影院| 一本大道久久精品懂色aⅴ| 亚洲午夜激情av| 亚洲一区二区三区在线| 欧美第一区第二区| 5月丁香婷婷综合| 日韩欧美色综合网站| 日韩一区二区高清| 日韩一区二区免费在线观看| 欧美一级片在线观看| 99热国产精品| 91麻豆成人久久精品二区三区| 久久精品二区亚洲w码| 亚洲女厕所小便bbb| 日韩女同互慰一区二区| 精品成人在线观看| 欧美性欧美巨大黑白大战| 欧美日韩在线三级| 成人激情综合网站| 91碰在线视频| 91国偷自产一区二区三区成为亚洲经典| 久草在线在线精品观看| 亚洲一区二区三区精品在线| 亚洲国产另类精品专区| 五月激情丁香一区二区三区| 视频一区二区中文字幕| 亚洲精品亚洲人成人网| 国产欧美日本一区视频| 欧美一区二区三区喷汁尤物| 精品区一区二区| 国产精品欧美一区喷水| 一区二区成人在线视频| 国产精品免费视频一区| 一区二区三区日韩| 老汉av免费一区二区三区| 国产精品一区二区在线播放| 日韩avvvv在线播放| 国产一区二区三区在线看麻豆| 日韩影视精彩在线| 国产福利一区在线| 狠狠色综合播放一区二区| 成人免费观看av| 成人丝袜高跟foot| 欧美人体做爰大胆视频| 国产清纯在线一区二区www| 尤物av一区二区| 黑人精品欧美一区二区蜜桃 | 精品亚洲免费视频| 成人美女视频在线观看18| 欧美日韩专区在线| 国产亚洲欧美日韩日本| 久久亚区不卡日本| 一区二区在线电影| 激情文学综合插| 欧美视频完全免费看| 久久久99精品久久| 亚洲国产cao| 粉嫩av一区二区三区粉嫩 | 久久只精品国产| 一区二区视频在线| 国产精品伊人色| 在线观看91精品国产麻豆| 国产精品成人一区二区艾草| 中文幕一区二区三区久久蜜桃| 亚洲h精品动漫在线观看| 国产精品亚洲成人| 91精品国产综合久久久蜜臀图片| 日本一区二区三区四区| 久久精品噜噜噜成人av农村| 色视频一区二区| 久久免费看少妇高潮| 国产精品无码永久免费888| 青青国产91久久久久久| 欧洲激情一区二区| 欧美久久一二区| 亚洲丝袜另类动漫二区| 亚洲国产综合人成综合网站| 不卡一二三区首页| 久久综合九色综合97_久久久| 视频一区在线视频| 欧美日韩综合一区| 亚洲欧美二区三区| av在线不卡免费看| 久久精品网站免费观看| 国产一区二区三区香蕉 | 欧美α欧美αv大片| 亚洲综合色丁香婷婷六月图片| 成人av先锋影音| 久久精子c满五个校花| 狠狠色伊人亚洲综合成人| 日韩一区二区视频| 免费成人美女在线观看| 777亚洲妇女| 日韩精品成人一区二区三区 | 欧美va日韩va| 日韩av高清在线观看| 91麻豆精品久久久久蜜臀| 亚洲国产精品久久久久秋霞影院| 色综合久久综合网97色综合 | 性做久久久久久| 欧美日韩一区二区三区四区五区| 一区二区三区国产豹纹内裤在线| 97精品久久久久中文字幕| 69堂国产成人免费视频| 亚洲成人在线网站| 欧美日韩你懂的| 日本免费新一区视频| 欧美一区二区三区在线观看视频| 日韩国产欧美三级| 欧美一级片免费看| 国产剧情一区二区| 亚洲国产成人自拍| 91亚洲午夜精品久久久久久| 亚洲精品福利视频网站| 欧美三级在线看| 日本美女视频一区二区| 精品欧美乱码久久久久久 | 色婷婷综合久久久中文一区二区| 亚洲精品写真福利| 在线成人午夜影院| 极品少妇一区二区| 国产日本欧美一区二区| 91蜜桃免费观看视频| 性久久久久久久| 26uuu另类欧美| 欧美美女一区二区三区| 日韩不卡在线观看日韩不卡视频| 欧美一级黄色录像| 国产激情一区二区三区| 综合久久一区二区三区| 91.com视频| 国产精品一区二区x88av| 亚洲精品成a人| 精品成人在线观看| 97精品国产97久久久久久久久久久久| 亚洲制服丝袜一区| 精品国产91洋老外米糕| a在线播放不卡| 热久久国产精品| 国产精品高潮呻吟| 日韩一区二区麻豆国产| 成人av在线看| 美女性感视频久久| 亚洲日本韩国一区| 日韩视频免费直播| 国产成都精品91一区二区三| 亚洲免费色视频| 7777精品伊人久久久大香线蕉完整版 | 92国产精品观看| 亚洲自拍都市欧美小说| 欧美一区二区视频在线观看2020| 懂色av一区二区三区免费观看| 亚洲男人天堂一区| 欧美电影免费观看高清完整版在线观看 | 亚洲一区二区3| 欧美美女黄视频| 国产一区二区网址| 亚洲美女视频在线观看| 欧美一区二区三区不卡| 91麻豆免费看| 精品一区二区三区在线播放视频| 国产精品视频yy9299一区| 日韩欧美亚洲一区二区| 成人激情午夜影院| 免费欧美在线视频| 亚洲欧美一区二区三区极速播放 |