亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
91久久精品网| 亚洲图片你懂的| 国产精品嫩草影院com| 亚洲r级在线视频| 国产乱对白刺激视频不卡 | **网站欧美大片在线观看| 日韩国产欧美在线观看| 色婷婷综合久久久久中文一区二区| 日韩一区和二区| 午夜视频一区在线观看| 95精品视频在线| 亚洲一区视频在线| 国产精品一区二区视频| 日韩情涩欧美日韩视频| 日韩在线播放一区二区| 日本精品一区二区三区高清| 国产精品午夜春色av| 国产不卡视频在线观看| 精品国产一区二区三区不卡| 奇米色一区二区| 制服丝袜中文字幕一区| 香蕉久久一区二区不卡无毒影院| 在线看国产日韩| 亚洲男人电影天堂| 91视频免费观看| 亚洲欧洲无码一区二区三区| 成人激情免费电影网址| 欧美国产精品v| youjizz久久| 国产精品日日摸夜夜摸av| 成人免费视频免费观看| 国产欧美日韩亚州综合| 国产91在线观看| 国产精品理论在线观看| 不卡在线观看av| 亚洲女与黑人做爰| 欧美丝袜丝nylons| 日韩中文字幕亚洲一区二区va在线 | 国产a精品视频| 中文字幕av资源一区| 97se亚洲国产综合自在线观| 亚洲欧美成aⅴ人在线观看| 日本乱码高清不卡字幕| 午夜伦欧美伦电影理论片| 这里是久久伊人| 国产乱码一区二区三区| 国产精品嫩草99a| 在线国产电影不卡| 日韩1区2区3区| 久久久91精品国产一区二区精品 | 国产曰批免费观看久久久| 国产日韩精品一区二区三区| 91丝袜美腿高跟国产极品老师 | 亚洲精品中文在线影院| 在线成人av网站| 国产在线麻豆精品观看| 国产欧美一区二区精品仙草咪| av中文字幕不卡| 婷婷成人激情在线网| 久久免费看少妇高潮| 91丨porny丨国产入口| 午夜精品久久久久久久久久| 久久久美女艺术照精彩视频福利播放| 本田岬高潮一区二区三区| 亚洲va国产天堂va久久en| 久久欧美一区二区| 欧美性生活久久| 国产在线不卡一卡二卡三卡四卡| 日韩美女啊v在线免费观看| 日韩无一区二区| 99国产精品久久久久久久久久 | 99久久久久久| 麻豆精品在线播放| 亚洲欧美日韩久久| 久久亚洲精品小早川怜子| 欧美日韩在线播放三区四区| 粉嫩高潮美女一区二区三区| 五月婷婷另类国产| 亚洲欧洲在线观看av| 精品粉嫩aⅴ一区二区三区四区| 91美女在线视频| 国产精品1024久久| 蜜桃av噜噜一区| 亚洲一二三四在线| 国产精品色在线| 精品精品国产高清a毛片牛牛| 97久久久精品综合88久久| 国产精品中文有码| 免费高清在线一区| 亚洲一区二区三区三| 国产精品久久二区二区| 日韩精品一区二区三区老鸭窝| 91官网在线观看| 91亚洲精品久久久蜜桃| 国产成人午夜片在线观看高清观看| 天天做天天摸天天爽国产一区| 亚洲乱码日产精品bd| 国产精品毛片无遮挡高清| 欧美精品一区二区三区在线| 91精品国产综合久久国产大片 | 国产成人欧美日韩在线电影| 男人操女人的视频在线观看欧美| 亚洲国产一区二区在线播放| 亚洲日本在线视频观看| 自拍偷拍欧美激情| 亚洲天堂网中文字| 亚洲欧美一区二区不卡| 国产精品国产三级国产aⅴ入口| 久久久久久久综合日本| 欧美三级电影网| 色综合久久久久网| 97精品电影院| 色爱区综合激月婷婷| 色哟哟欧美精品| 一本久道久久综合中文字幕| 不卡在线观看av| av不卡一区二区三区| 91免费国产视频网站| 色综合久久99| 欧美日韩电影在线| 69堂成人精品免费视频| 日韩一区二区精品在线观看| 精品女同一区二区| 国产校园另类小说区| 国产精品久久久一本精品| 亚洲欧洲精品一区二区三区不卡| 日韩久久一区二区| 亚洲444eee在线观看| 麻豆精品一区二区三区| 国产成人精品在线看| 色综合久久中文综合久久牛| 色av成人天堂桃色av| 欧美日韩一级二级| 精品国产乱子伦一区| 国产精品免费丝袜| 亚洲h在线观看| 激情综合色播五月| 91美女视频网站| 日韩网站在线看片你懂的| 国产日韩欧美制服另类| 亚洲欧美激情小说另类| 日本午夜一区二区| 国产一区二区看久久| 色综合久久九月婷婷色综合| 欧美一区二区三区的| 国产欧美日韩激情| 亚洲成人自拍网| 国产不卡在线一区| 欧美美女激情18p| 亚洲综合精品自拍| 国产精品综合二区| 欧美日韩一区不卡| 国产欧美一区视频| 日韩1区2区3区| 色婷婷亚洲综合| 久久久蜜桃精品| 天堂资源在线中文精品| 成人国产电影网| 91精品国产欧美一区二区成人| 欧美国产国产综合| 蜜桃视频在线一区| 欧美午夜精品一区二区蜜桃| 国产亚洲欧美日韩在线一区| 午夜精品福利一区二区三区蜜桃| 国产一区二区伦理| 这里只有精品电影| 亚洲欧美激情在线| 国产精选一区二区三区| 91精品国产色综合久久不卡蜜臀| 亚洲男女一区二区三区| 国产一区欧美日韩| 日韩一区二区三区免费观看| 亚洲最新视频在线播放| 懂色av一区二区三区蜜臀| 精品久久久久久久一区二区蜜臀| 亚洲福利视频三区| 色天天综合久久久久综合片| 久久久午夜精品| 韩国女主播成人在线观看| 欧美日韩国产首页在线观看| 亚洲精选一二三| 99久久综合狠狠综合久久| 久久精品一二三| 国内精品伊人久久久久av一坑| 337p亚洲精品色噜噜狠狠| 亚洲电影激情视频网站| 91久久线看在观草草青青| 中文字幕在线一区免费| 国产成人免费视频网站 | 极品尤物av久久免费看| 91麻豆精品国产91久久久久久 | 午夜电影一区二区三区| 欧美视频中文字幕| 亚洲综合一区在线| 欧美日韩中文字幕一区| 午夜精品一区二区三区免费视频 | 久久99精品国产麻豆不卡| 制服.丝袜.亚洲.另类.中文| 日韩精品色哟哟| 日韩欧美二区三区|