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

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

?? gifconfig.c

?? 支持IPv4和IPv6的網卡管理程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*	$KAME: gifconfig.c,v 1.19 2001/11/13 12:38:45 jinmei Exp $	*//* * Copyright (c) 1983, 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. *//* * gifconfig, derived from ifconfig * * @(#) Copyright (c) 1983, 1993\n\ *	The Regents of the University of California.  All rights reserved.\n * * @(#)ifconfig.c	8.2 (Berkeley) 2/16/94 *//* *  951109 - Andrew@pubnix.net - Changed to iterative buffer growing mechanism *				 for ifconfig -a so all interfaces are queried. * *  960101 - peter@freebsd.org - Blow away the SIOCGIFCONF code and use *				 sysctl() to get the structured interface conf *				 and parse the messages in there. REALLY UGLY! */#include <sys/param.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <sys/sysctl.h>#include <net/if.h>#if defined(__FreeBSD__) && __FreeBSD__ >= 3#include <net/if_var.h>#endif /* __FreeBSD__ >= 3 */#include <net/if_dl.h>#include <net/if_types.h>#include <net/route.h>#include <netinet/in.h>#include <netinet/in_var.h>#include <arpa/inet.h>#include <netdb.h>#include <sys/protosw.h>#include <ctype.h>#include <err.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <nlist.h>#include <kvm.h>#include <fcntl.h>struct	ifreq		ifr;struct	ifaliasreq	addreq;#ifdef INET6struct	in6_ifreq	in6_ifr;struct	in6_aliasreq	in6_addreq;#endifchar	name[32];int	flags;int	metric;int	mtu;int	setpsrc = 0;int	newaddr = 0;int	s;kvm_t	*kvmd;void setifpsrc __P((char *, int));void setifpdst __P((char *, int));void setifflags __P((char *, int));#ifdef SIOCDIFPHYADDRvoid delifaddrs __P((char *, int));#endif#define	NEXTARG		0xffffffstatic struct	cmd {	char	*c_name;	int	c_parameter;		/* NEXTARG means next argv */	void	(*c_func) __P((char *, int));} cmds[] = {	{ "up",		IFF_UP,		setifflags } ,	{ "down",	-IFF_UP,	setifflags },#ifdef SIOCDIFPHYADDR	{ "delete",	0,		delifaddrs },#endif	{ 0,		0,		setifpsrc },	{ 0,		0,		setifpdst },};/* * XNS support liberally adapted from code written at the University of * Maryland principally by James O'Toole and Chris Torek. */int main __P((int, char *[]));void status __P((void));void phys_status __P((int));void in_status __P((int));#ifdef INET6void in6_status __P((int));#endifvoid ether_status __P((int));void Perror __P((char *));void in_getaddr __P((char *, int));#ifdef INET6void in6_getaddr __P((char *, int));void in6_getprefix __P((char *, int));#endifvoid printb __P((char *, unsigned int, char *));int prefix __P((void *, int));/* Known address families */struct afswtch {	char *af_name;	short af_af;	void (*af_status) __P((int));	void (*af_getaddr) __P((char *, int));	void (*af_getprefix) __P((char *, int));	u_long af_pifaddr;	caddr_t af_addreq;	caddr_t af_req;} afs[] = {#define C(x) ((caddr_t) &x)	{ "inet", AF_INET, in_status, in_getaddr, 0,	     SIOCSIFPHYADDR, C(addreq), C(ifr) },#ifdef INET6	{ "inet6", AF_INET6, in6_status, in6_getaddr, in6_getprefix,	     SIOCSIFPHYADDR_IN6, C(in6_addreq), C(in6_ifr) },#endif	{ "ether", AF_INET, ether_status, NULL, NULL },	/* XXX not real!! */	{ 0,	0,	    0,		0,	0 }};struct afswtch *afp = NULL;	/*the address family being set or asked about*/void	rt_xaddrs __P((caddr_t, caddr_t, struct rt_addrinfo *));int	ifconfig __P((int argc, char *argv[], int af, struct afswtch *rafp));/* * Expand the compacted form of addresses as returned via the * configuration read via sysctl(). */#define ROUNDUP(a) \	((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))voidrt_xaddrs(cp, cplim, rtinfo)	caddr_t cp, cplim;	struct rt_addrinfo *rtinfo;{	struct sockaddr *sa;	int i;	memset(rtinfo->rti_info, 0, sizeof(rtinfo->rti_info));	for (i = 0; (i < RTAX_MAX) && (cp < cplim); i++) {		if ((rtinfo->rti_addrs & (1 << i)) == 0)			continue;		rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;		ADVANCE(cp, sa);	}}/* * Grunge for new-style sysctl() decoding.. :-( * Apologies to the world for committing gross things like this in 1996.. */struct if_msghdr *ifm;struct ifa_msghdr *ifam;struct sockaddr_dl *sdl;struct rt_addrinfo info;char *buf, *lim, *next;intmain(argc, argv)	int argc;	char *argv[];{	int af = AF_INET;	struct afswtch *rafp = NULL;	size_t needed;	int mib[6];	int all;	if (argc < 2) {		fprintf(stderr,		    "usage: gifconfig interface [af] [physsrc physdst]\n");#ifdef SIOCDIFPHYADDR		fprintf(stderr,		    "       gifconfig interface delete\n");#endif		fprintf(stderr,		    "       gifconfig -a\n");		exit(1);	}	argc--, argv++;	strncpy(name, *argv, sizeof(name));	strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));	argc--, argv++;	if (argc > 0) {		for (afp = rafp = afs; rafp->af_name; rafp++)			if (strcmp(rafp->af_name, *argv) == 0) {				afp = rafp; argc--; argv++;				break;			}		rafp = afp;		af = ifr.ifr_addr.sa_family = rafp->af_af;	}	mib[0] = CTL_NET;	mib[1] = PF_ROUTE;	mib[2] = 0;	mib[3] = 0;	/* address family */	mib[4] = NET_RT_IFLIST;	mib[5] = 0;	/* if particular family specified, only ask about it */	if (afp) {		mib[3] = afp->af_af;	}	if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)		errx(1, "iflist-sysctl-estimate");	if ((buf = malloc(needed)) == NULL)		errx(1, "malloc");	if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0)		errx(1, "actual retrieval of interface table");	lim = buf + needed;	all = 0;	if (strcmp(name, "-a") == 0)		all = 1;	/* All interfaces */	else if (strcmp(name, "-au") == 0)		all = 2;	/* All IFF_UPinterfaces */	else if (strcmp(name, "-ad") == 0)		all = 3;	/* All !IFF_UP interfaces */	for (next = buf; next < lim; next += ifm->ifm_msglen) {		ifm = (struct if_msghdr *)next;		/* XXX: Swallow up leftover NEWADDR messages */		if (ifm->ifm_type == RTM_NEWADDR)			continue;		if (ifm->ifm_type == RTM_IFINFO) {			sdl = (struct sockaddr_dl *)(ifm + 1);			flags = ifm->ifm_flags;		} else {			errx(1, "out of sync parsing NET_RT_IFLIST");		}		switch(all) {		case -1:		case 0:			if (strlen(name) != sdl->sdl_nlen)				continue; /* not same len */			if (strncmp(name, sdl->sdl_data, sdl->sdl_nlen) != 0)				continue; /* not same name */			break;		case 1:			break;	/* always do it */		case 2:			if ((flags & IFF_UP) == 0)				continue; /* not up */			break;		case 3:			if (flags & IFF_UP)				continue; /* not down */			break;		}		/*		 * Let's just do it for gif only		 */		if (sdl->sdl_type != IFT_GIF) {			if (all != 0)				continue;			fprintf(stderr, "gifconfig: %s is not gif.\n",				ifr.ifr_name);			exit(1);		}		if (all > 0) {			strncpy(name, sdl->sdl_data, sdl->sdl_nlen);			name[sdl->sdl_nlen] = '\0';		}		if ((s = socket(af, SOCK_DGRAM, 0)) < 0) {			perror("gifconfig: socket");			exit(1);		}		ifconfig(argc,argv,af,rafp);		close(s);		if (all == 0) {			all = -1; /* flag it as 'done' */			break;		}	}	free(buf);	if (all == 0)		errx(1, "interface %s does not exist", name);		exit (0);}intifconfig(argc, argv, af, rafp)	int argc;	char *argv[];	int af;	struct afswtch *rafp;{	af = 0;		/*fool gcc*/	strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);#ifdef INET6	strncpy(in6_ifr.ifr_name, name, sizeof in6_ifr.ifr_name);#endif /* INET6 */	if (ioctl(s, SIOCGIFMETRIC, (caddr_t)&ifr) < 0)		perror("ioctl (SIOCGIFMETRIC)");	else		metric = ifr.ifr_metric;#if defined(SIOCGIFMTU) && !defined(__OpenBSD__)	if (ioctl(s, SIOCGIFMTU, (caddr_t)&ifr) < 0)		perror("ioctl (SIOCGIFMTU)");	else		mtu = ifr.ifr_mtu;#else	mtu = 0;#endif	if (argc == 0) {		status();		return(0);	}	while (argc > 0) {		register struct cmd *p;		for (p = cmds; p->c_name; p++)			if (strcmp(*argv, p->c_name) == 0)				break;		if (p->c_name == 0 && setpsrc)			p++;	/* got src, do dst */		if (p->c_func) {			if (p->c_parameter == NEXTARG) {				if (argv[1] == NULL)					errx(1, "'%s' requires argument",					    p->c_name);				(*p->c_func)(argv[1], 0);				argc--, argv++;			} else				(*p->c_func)(*argv, p->c_parameter);		}		argc--, argv++;	}	if (newaddr) {		strncpy(rafp->af_addreq, name, sizeof ifr.ifr_name);		if (ioctl(s, rafp->af_pifaddr, rafp->af_addreq) < 0)			Perror("ioctl (SIOCSIFPHYADDR)");	}	else if (setpsrc) {		errx(1, "destination is not specified");	}	return(0);}#define PSRC	0#define PDST	1/*ARGSUSED*/voidsetifpsrc(addr, param)	char *addr;	int param;{	param = 0;	/*fool gcc*/	(*afp->af_getaddr)(addr, PSRC);	setpsrc = 1;}/*ARGSUSED*/voidsetifpdst(addr, param)	char *addr;	int param;{	param = 0;	/*fool gcc*/	(*afp->af_getaddr)(addr, PDST);	newaddr = 1;}voidsetifflags(vname, value)	char *vname;	int value;{ 	if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&ifr) < 0) { 		Perror("ioctl (SIOCGIFFLAGS)"); 		exit(1); 	}	strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name)); 	flags = ifr.ifr_flags;	if (value < 0) {		value = -value;		flags &= ~value;	} else		flags |= value;	ifr.ifr_flags = flags;	if (ioctl(s, SIOCSIFFLAGS, (caddr_t)&ifr) < 0)		Perror(vname);}#ifdef SIOCDIFPHYADDR/* ARGSUSED */voiddelifaddrs(vname, param)	char *vname;	int param;{	param = 0;		/* fool gcc */	vname = NULL;		/* ditto */	if (ioctl(s, SIOCDIFPHYADDR, (caddr_t)&ifr) < 0)		err(1, "ioctl(SIOCDIFPHYADDR)");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区久久久| 欧美猛男gaygay网站| 国产中文一区二区三区| 日产精品久久久久久久性色| 亚洲第一在线综合网站| 午夜精品久久久久久久久久| 亚洲一区二区三区爽爽爽爽爽 | 国产精品美女久久久久久久久久久| 精品国产免费一区二区三区四区| 制服.丝袜.亚洲.另类.中文| 欧美一区二区三区四区在线观看| 在线电影国产精品| 日韩一级完整毛片| 久久综合久久综合久久| 国产蜜臀97一区二区三区| 欧美国产一区在线| 精品在线免费观看| 国产剧情一区二区| 懂色av一区二区在线播放| 处破女av一区二区| jiyouzz国产精品久久| 色妹子一区二区| 欧美福利视频导航| 精品国产91亚洲一区二区三区婷婷 | 国产一区二区三区免费播放| 国产成人啪免费观看软件| 成人h动漫精品一区二| 91成人国产精品| 欧美一区欧美二区| 国产网红主播福利一区二区| 日韩美女视频19| 丝袜美腿亚洲一区二区图片| 激情六月婷婷综合| 99re在线视频这里只有精品| 欧美色窝79yyyycom| 日韩欧美国产一区二区三区| 久久精品欧美一区二区三区不卡| 亚洲人123区| 蜜桃av噜噜一区| 成人激情av网| 欧美一级在线观看| 中日韩免费视频中文字幕| 亚洲成人一二三| 狠狠色丁香久久婷婷综| 972aa.com艺术欧美| 91精品国产综合久久精品app | 久久国产尿小便嘘嘘尿| 成熟亚洲日本毛茸茸凸凹| 欧美四级电影在线观看| 亚洲精品一区二区在线观看| 亚洲人成在线播放网站岛国| 看电视剧不卡顿的网站| 99这里只有精品| 日韩免费电影网站| 亚洲精品乱码久久久久久日本蜜臀| 秋霞电影网一区二区| 99久久亚洲一区二区三区青草 | 亚洲国产综合91精品麻豆| 国产精品一区二区你懂的| 欧美性猛片xxxx免费看久爱| 国产视频一区二区在线观看| 亚洲18色成人| 不卡欧美aaaaa| 欧美本精品男人aⅴ天堂| 亚洲免费色视频| 国产成人精品影视| 欧美一级艳片视频免费观看| 亚洲精品国产精华液| 国产精品88888| 欧美一区二区三区免费观看视频| 亚洲欧美日韩电影| 国产精品一级片| 亚洲人吸女人奶水| 国产精品一二三区在线| 91麻豆精品国产91久久久资源速度 | 日本aⅴ亚洲精品中文乱码| 99久久夜色精品国产网站| 久久久久久久综合狠狠综合| 天天综合日日夜夜精品| 色播五月激情综合网| 日本一区二区三区在线不卡| 久久99热99| 欧美一三区三区四区免费在线看 | 欧美老人xxxx18| 樱花草国产18久久久久| 成人av综合在线| 久久精品人人做| 国产在线精品国自产拍免费| 日韩欧美国产综合一区| 秋霞午夜鲁丝一区二区老狼| 欧美精品一二三| 亚洲国产aⅴ天堂久久| 色先锋aa成人| 亚洲嫩草精品久久| 色综合久久久久网| 亚洲免费高清视频在线| 99久久国产综合精品女不卡| 国产精品情趣视频| 大陆成人av片| 国产精品高潮呻吟| 成人99免费视频| 自拍偷拍亚洲激情| 91在线视频观看| 亚洲精选在线视频| 欧洲色大大久久| 亚洲二区在线观看| 欧美情侣在线播放| 日韩福利视频网| 日韩精品在线一区二区| 久久精品国产一区二区三| 精品日韩在线观看| 国产一区91精品张津瑜| 亚洲国产精品精华液2区45| 成人激情图片网| 亚洲欧美另类小说视频| 欧美性xxxxxxxx| 三级不卡在线观看| 欧美r级电影在线观看| 国产一区二区三区香蕉 | 免费的国产精品| 2020国产精品自拍| 成人国产精品视频| 一区二区三区欧美激情| 91精品国产综合久久精品| 韩国一区二区在线观看| 中文av一区特黄| 欧洲精品中文字幕| 久久精品国产久精国产爱| 国产性做久久久久久| 一本一本大道香蕉久在线精品| 亚洲国产综合色| 精品电影一区二区| 99精品国产热久久91蜜凸| 亚洲成人黄色小说| 久久一区二区三区四区| jlzzjlzz国产精品久久| 亚洲电影在线免费观看| 精品少妇一区二区三区免费观看 | 亚洲国产视频一区二区| 日韩精品资源二区在线| 国产福利不卡视频| 亚洲综合图片区| 久久伊人蜜桃av一区二区| 99re免费视频精品全部| 男女视频一区二区| 国产精品毛片无遮挡高清| 欧美日韩精品二区第二页| 国产一区二区三区精品欧美日韩一区二区三区 | 蜜桃一区二区三区在线| 国产精品免费久久| 欧美高清视频在线高清观看mv色露露十八 | 欧美一区二区三区色| 国产成人综合自拍| 亚洲一二三四久久| 国产日韩欧美一区二区三区乱码| 欧美最猛性xxxxx直播| 国内精品久久久久影院薰衣草| 亚洲乱码日产精品bd| 欧美成人精品高清在线播放| 色综合av在线| 国产在线播放一区三区四| 一区二区久久久久久| 久久久高清一区二区三区| 欧美偷拍一区二区| 成人免费毛片高清视频| 日韩av一区二区三区四区| 亚洲色图视频免费播放| 久久久综合九色合综国产精品| 欧美午夜精品理论片a级按摩| 国产成人综合网| 日本在线播放一区二区三区| 亚洲欧洲99久久| 久久蜜桃av一区精品变态类天堂| 欧美视频日韩视频| 国产成人精品亚洲777人妖 | 在线亚洲人成电影网站色www| 国产一区二区调教| 秋霞电影一区二区| 亚洲一区在线免费观看| 中文字幕日本乱码精品影院| 欧美刺激脚交jootjob| 欧美日韩精品免费| 91国产精品成人| av一区二区三区在线| 国产成人免费视频网站高清观看视频| 天堂一区二区在线| 亚洲综合在线观看视频| 中文字幕一区二区在线播放| 国产日韩欧美精品在线| 精品成人免费观看| 欧美大片免费久久精品三p| 在线播放亚洲一区| 欧美日韩精品专区| 欧美在线小视频| 欧美性淫爽ww久久久久无| 一本到三区不卡视频| 91女人视频在线观看| av电影天堂一区二区在线| gogogo免费视频观看亚洲一| 高清成人在线观看|