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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? route-linux.c

?? Ubuntu packages of security software。 相當(dāng)不錯(cuò)的源碼
?? C
字號(hào):
/* * route-linux.c * * Copyright (c) 2000 Dug Song <dugsong@monkey.org> * * $Id: route-linux.c,v 1.15 2005/01/23 07:36:54 dugsong Exp $ */#include "config.h"#include <sys/types.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <sys/uio.h>#include <asm/types.h>#include <linux/netlink.h>#include <linux/rtnetlink.h>#include <net/route.h>#include <ctype.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include "dnet.h"#define ADDR_ISHOST(a)	(((a)->addr_type == ADDR_TYPE_IP &&	\			  (a)->addr_bits == IP_ADDR_BITS) ||	\			 ((a)->addr_type == ADDR_TYPE_IP6 &&	\			  (a)->addr_bits == IP6_ADDR_BITS))#define PROC_ROUTE_FILE	"/proc/net/route"struct route_handle {	int	 fd;	int	 nlfd;};route_t *route_open(void){	struct sockaddr_nl snl;	route_t *r;	if ((r = calloc(1, sizeof(*r))) != NULL) {		r->fd = r->nlfd = -1;				if ((r->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)			return (route_close(r));				if ((r->nlfd = socket(AF_NETLINK, SOCK_RAW,			 NETLINK_ROUTE)) < 0)			return (route_close(r));				memset(&snl, 0, sizeof(snl));		snl.nl_family = AF_NETLINK;				if (bind(r->nlfd, (struct sockaddr *)&snl, sizeof(snl)) < 0)			return (route_close(r));	}	return (r);}introute_add(route_t *r, const struct route_entry *entry){	struct rtentry rt;	struct addr dst;	memset(&rt, 0, sizeof(rt));	rt.rt_flags = RTF_UP | RTF_GATEWAY;	if (ADDR_ISHOST(&entry->route_dst)) {		rt.rt_flags |= RTF_HOST;		memcpy(&dst, &entry->route_dst, sizeof(dst));	} else		addr_net(&entry->route_dst, &dst);		if (addr_ntos(&dst, &rt.rt_dst) < 0 ||	    addr_ntos(&entry->route_gw, &rt.rt_gateway) < 0 ||	    addr_btos(entry->route_dst.addr_bits, &rt.rt_genmask) < 0)		return (-1);		return (ioctl(r->fd, SIOCADDRT, &rt));}introute_delete(route_t *r, const struct route_entry *entry){	struct rtentry rt;	struct addr dst;		memset(&rt, 0, sizeof(rt));	rt.rt_flags = RTF_UP;	if (ADDR_ISHOST(&entry->route_dst)) {		rt.rt_flags |= RTF_HOST;		memcpy(&dst, &entry->route_dst, sizeof(dst));	} else		addr_net(&entry->route_dst, &dst);		if (addr_ntos(&dst, &rt.rt_dst) < 0 ||	    addr_btos(entry->route_dst.addr_bits, &rt.rt_genmask) < 0)		return (-1);		return (ioctl(r->fd, SIOCDELRT, &rt));}introute_get(route_t *r, struct route_entry *entry){	static int seq;	struct nlmsghdr *nmsg;	struct rtmsg *rmsg;	struct rtattr *rta;	struct sockaddr_nl snl;	struct iovec iov;	struct msghdr msg;	u_char buf[512];	int i;	if (entry->route_dst.addr_type != ADDR_TYPE_IP) {		errno = EINVAL;		return (-1);	}	memset(buf, 0, sizeof(buf));	nmsg = (struct nlmsghdr *)buf;	nmsg->nlmsg_len = NLMSG_LENGTH(sizeof(*nmsg)) +	    RTA_LENGTH(IP_ADDR_LEN);	nmsg->nlmsg_flags = NLM_F_REQUEST;	nmsg->nlmsg_type = RTM_GETROUTE;	nmsg->nlmsg_seq = ++seq;	rmsg = (struct rtmsg *)(nmsg + 1);	rmsg->rtm_family = AF_INET;	rmsg->rtm_dst_len = entry->route_dst.addr_bits;		rta = RTM_RTA(rmsg);	rta->rta_type = RTA_DST;	rta->rta_len = RTA_LENGTH(IP_ADDR_LEN);	/* XXX - gross hack for default route */	if (entry->route_dst.addr_ip == IP_ADDR_ANY) {		i = htonl(0x60060606);		memcpy(RTA_DATA(rta), &i, IP_ADDR_LEN);	} else		memcpy(RTA_DATA(rta), &entry->route_dst.addr_ip, IP_ADDR_LEN);		memset(&snl, 0, sizeof(snl));	snl.nl_family = AF_NETLINK;	iov.iov_base = nmsg;	iov.iov_len = nmsg->nlmsg_len;		memset(&msg, 0, sizeof(msg));	msg.msg_name = &snl;	msg.msg_namelen = sizeof(snl);	msg.msg_iov = &iov;	msg.msg_iovlen = 1;		if (sendmsg(r->nlfd, &msg, 0) < 0)		return (-1);	iov.iov_base = buf;	iov.iov_len = sizeof(buf);		if ((i = recvmsg(r->nlfd, &msg, 0)) <= 0)		return (-1);	if (nmsg->nlmsg_len < (int)sizeof(*nmsg) || nmsg->nlmsg_len > i ||	    nmsg->nlmsg_seq != seq) {		errno = EINVAL;		return (-1);	}	if (nmsg->nlmsg_type == NLMSG_ERROR)		return (-1);		i -= NLMSG_LENGTH(sizeof(*nmsg));		while (RTA_OK(rta, i)) {		if (rta->rta_type == RTA_GATEWAY) {			entry->route_gw.addr_type = ADDR_TYPE_IP;			memcpy(&entry->route_gw.addr_ip,			    RTA_DATA(rta), IP_ADDR_LEN);			entry->route_gw.addr_bits = IP_ADDR_BITS;			return (0);		}		rta = RTA_NEXT(rta, i);	}	errno = ESRCH;		return (-1);}introute_loop(route_t *r, route_handler callback, void *arg){	FILE *fp;	char buf[BUFSIZ], ifbuf[16];	int i, iflags, refcnt, use, metric, mss, win, irtt, ret;	struct route_entry entry;	uint32_t mask;	entry.route_dst.addr_type = entry.route_gw.addr_type = ADDR_TYPE_IP;	entry.route_dst.addr_bits = entry.route_gw.addr_bits = IP_ADDR_BITS;	if ((fp = fopen(PROC_ROUTE_FILE, "r")) == NULL)		return (-1);	ret = 0;	while (fgets(buf, sizeof(buf), fp) != NULL) {		i = sscanf(buf,		    "%16s %X %X %X %d %d %d %X %d %d %d\n",		    ifbuf, &entry.route_dst.addr_ip, &entry.route_gw.addr_ip,		    &iflags, &refcnt, &use, &metric, &mask, &mss, &win, &irtt);				if (i < 10 || !(iflags & RTF_UP))			continue;				if (entry.route_gw.addr_ip == IP_ADDR_ANY)			continue;				entry.route_dst.addr_type = entry.route_gw.addr_type =		    ADDR_TYPE_IP;				if (addr_mtob(&mask, IP_ADDR_LEN,		    &entry.route_dst.addr_bits) < 0)			continue;				if ((ret = callback(&entry, arg)) != 0)			break;	}	if (ferror(fp)) {		fclose(fp);		return (-1);	}	fclose(fp);		return (ret);}route_t *route_close(route_t *r){	if (r != NULL) {		if (r->fd >= 0)			close(r->fd);		if (r->nlfd >= 0)			close(r->nlfd);		free(r);	}	return (NULL);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级黄色录像| 亚洲国产cao| 国产亚洲精品中文字幕| 欧美岛国在线观看| 欧美不卡激情三级在线观看| 日韩欧美在线观看一区二区三区| 欧美精品色一区二区三区| 欧美日韩成人在线| 欧美精品久久久久久久多人混战 | 精品国产青草久久久久福利| 日韩一区二区三区电影在线观看| 欧美一级专区免费大片| 日韩欧美中文字幕精品| 欧美zozo另类异族| 久久久久久久久久久电影| 欧美国产1区2区| 国产精品成人免费在线| 一区二区三区自拍| 日韩国产欧美三级| 韩国精品主播一区二区在线观看| 国产成人午夜视频| 99精品视频一区二区三区| 91成人免费网站| 欧美一区二区三区性视频| 精品福利二区三区| 国产精品久99| 亚洲国产精品影院| 麻豆精品蜜桃视频网站| 国产精品亚洲综合一区在线观看| 成人精品视频一区二区三区尤物| 91猫先生在线| 日韩免费电影网站| 中文字幕精品综合| 亚洲高清免费视频| 久久精品国产免费| 99久久精品99国产精品| 欧美喷潮久久久xxxxx| 久久先锋资源网| 一区二区国产盗摄色噜噜| 免费观看在线综合| caoporen国产精品视频| 欧美日本高清视频在线观看| 久久久久久影视| 一个色综合av| 波多野结衣亚洲| 国产成+人+日韩+欧美+亚洲| 99精品视频一区二区| 7777女厕盗摄久久久| 国产欧美日韩三区| 亚洲国产精品一区二区www在线| 六月丁香婷婷久久| 91在线看国产| 日韩美女在线视频 | 久久精品av麻豆的观看方式| 成人高清视频在线观看| 欧美日韩久久久一区| 国产日韩在线不卡| 午夜欧美在线一二页| 成人午夜精品在线| 91精品午夜视频| 亚洲视频一二三区| 精品系列免费在线观看| 在线观看国产精品网站| 欧美激情在线一区二区| 日本亚洲一区二区| 色狠狠综合天天综合综合| 久久午夜羞羞影院免费观看| 亚洲第一在线综合网站| a在线欧美一区| 2020国产精品久久精品美国| 午夜精品久久久久久久99水蜜桃| av亚洲精华国产精华精| 2020国产精品自拍| 日本女人一区二区三区| 在线观看91精品国产入口| 国产日韩精品一区| 精品午夜久久福利影院| 欧美精选在线播放| 亚洲国产日日夜夜| 91香蕉视频在线| 国产精品久久毛片av大全日韩| 久久se这里有精品| 3d动漫精品啪啪| 亚洲第一在线综合网站| 色婷婷综合五月| 中文字幕亚洲一区二区va在线| 国产原创一区二区三区| 精品奇米国产一区二区三区| 亚洲成人精品影院| 欧美日韩亚洲综合在线| 一区二区三区中文在线观看| 91丨porny丨蝌蚪视频| 国产精品久久久久精k8| 国产不卡在线视频| 久久久青草青青国产亚洲免观| 捆绑调教美女网站视频一区| 51精品国自产在线| 午夜精品久久久久久久蜜桃app| 色婷婷综合久久久中文字幕| 亚洲丝袜制服诱惑| 91蝌蚪porny| 亚洲免费资源在线播放| 91啪九色porn原创视频在线观看| 国产精品二区一区二区aⅴ污介绍| 成人性生交大片免费看视频在线| 国产日韩欧美不卡在线| 国产精品影视网| 久久先锋影音av鲁色资源网| 国产一区久久久| 久久久不卡影院| 成人精品国产免费网站| 亚洲图片你懂的| 在线视频一区二区三区| 亚洲国产精品一区二区尤物区| 欧美日韩精品免费观看视频| 日韩成人一级大片| 精品少妇一区二区三区免费观看| 极品少妇xxxx精品少妇偷拍| 久久久久久夜精品精品免费| 国产suv一区二区三区88区| 国产精品国产三级国产| 色噜噜夜夜夜综合网| 亚洲电影在线播放| 欧美一级淫片007| 国产一区二区三区av电影| 国产亚洲综合在线| 97se亚洲国产综合自在线| 亚洲激情图片一区| 91精品国产综合久久久久久久| 麻豆91精品视频| 中文一区在线播放| 91九色02白丝porn| 美女一区二区久久| 久久精品视频在线看| 色婷婷亚洲一区二区三区| 日韩制服丝袜先锋影音| 久久九九影视网| 日本高清无吗v一区| 奇米影视7777精品一区二区| 欧美激情艳妇裸体舞| 欧美在线|欧美| 精品制服美女丁香| 亚洲视频一区二区免费在线观看| 6080yy午夜一二三区久久| 国产一区二区三区免费观看| 亚洲日本护士毛茸茸| 91麻豆精品国产91久久久久久| 国模娜娜一区二区三区| 亚洲精品v日韩精品| 欧美电影免费观看高清完整版| www.视频一区| 麻豆精品久久久| 亚洲另类在线一区| 精品国产一区a| 欧美午夜片在线观看| 国产成人自拍在线| 天天做天天摸天天爽国产一区 | 精品视频在线免费| 国产精品911| 亚洲v中文字幕| 中文字幕av一区二区三区高 | 久久夜色精品一区| 欧美影视一区在线| 国产v综合v亚洲欧| 日韩国产高清影视| 亚洲欧洲精品一区二区三区| 欧美成人video| 色噜噜狠狠成人中文综合| 国内精品写真在线观看| 亚洲v中文字幕| 亚洲日韩欧美一区二区在线| 久久女同性恋中文字幕| 欧美日本一区二区| 日本精品一区二区三区高清| 国产精品99久| 久久精品免费看| 亚洲成年人影院| 亚洲欧美国产77777| 国产欧美日韩亚州综合 | 91精品在线免费| 色诱视频网站一区| 成人午夜又粗又硬又大| 久久精品久久99精品久久| 一级女性全黄久久生活片免费| 亚洲国产精品v| 久久久噜噜噜久久中文字幕色伊伊| 欧美一区午夜视频在线观看| 欧美亚洲动漫制服丝袜| 91美女片黄在线观看91美女| 岛国精品在线播放| 国产高清在线精品| 黄色成人免费在线| 久久99久久久久久久久久久| 日韩成人一级大片| 日韩制服丝袜先锋影音| 亚洲va天堂va国产va久| 亚洲福利一区二区三区| 亚洲午夜日本在线观看| 亚洲一区二区三区四区五区黄| 亚洲麻豆国产自偷在线|