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

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

?? ripng_announcer.cc

?? RIP 協議實現
?? CC
字號:
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-// Copyright (c) 2001-2008 XORP, Inc.//// Permission is hereby granted, free of charge, to any person obtaining a// copy of this software and associated documentation files (the "Software")// to deal in the Software without restriction, subject to the conditions// listed in the XORP LICENSE file. These conditions include: you must// preserve this copyright notice, and you cannot mention the copyright// holders in advertising related to the Software without their permission.// The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This// notice is a summary of the XORP LICENSE file; the license in that file is// legally binding.#ident "$XORP: xorp/rip/tools/ripng_announcer.cc,v 1.15 2008/07/23 05:11:40 pavlin Exp $"#include "rip/rip_module.h"#include "libxorp/xorp.h"#include "libxorp/xlog.h"#include <vector>#include <fstream>#ifdef HAVE_NET_IF_H#include <net/if.h>#endif#include "libxorp/utils.hh"#include "libxorp/eventloop.hh"#include "libxorp/ipv4.hh"#include "libxorp/ipv6.hh"#include "libcomm/comm_api.h"#include "rip/auth.hh"#include "rip/packet_assembly.hh"#ifdef HAVE_GETOPT_H#include <getopt.h>#endiftemplate <typename A>struct RipRoute {    RipRoute() {}    RipRoute(const IPNet<A>& 	a_net,	     const A& 		a_nh,	     uint16_t 		a_cost,	     uint16_t 		a_tag)	: net(a_net), nh(a_nh), cost(a_cost), tag(a_tag)    {}    IPNet<A> net;    A        nh;    uint16_t cost;    uint16_t tag;};static boolannounce_routes(XorpFd fd, vector<RipRoute<IPv6> >* my_routes){    PacketAssemblerSpecState<IPv6>	sp;    ResponsePacketAssembler<IPv6> 	rpa(sp);    vector<RipRoute<IPv6> >& 		rts = *my_routes;    size_t n = my_routes->size();    size_t i = 0;    while (i != n) {	RipPacket<IPv6> pkt(IPv6::RIP2_ROUTERS(), 521);	rpa.packet_start(&pkt);	while (i != n && rpa.packet_full() == false) {	    rpa.packet_add_route(rts[i].net, rts[i].nh, rts[i].cost, rts[i].tag);	    i++;	}	list<RipPacket<IPv6>*> auth_packets;	if (rpa.packet_finish(auth_packets) != true)	    break;	if (pkt.data_bytes() == 0)	    break;	list<RipPacket<IPv6>*>::iterator iter;	for (iter = auth_packets.begin(); iter != auth_packets.end(); ++iter) {	    RipPacket<IPv6>* auth_pkt = *iter;	    sockaddr_in6 sai;	    auth_pkt->address().copy_out(sai);	    sai.sin6_port = htons(auth_pkt->port());	    if (sendto(fd, XORP_BUF_CAST(auth_pkt->data_ptr()),		       auth_pkt->data_bytes(), 0,		       reinterpret_cast<const sockaddr*>(&sai),		       sizeof(sai)) < 0) {		cerr << "Write failed: " << strerror(errno) << endl;		return false;	    } else {		cout << "Packet sent" << endl;	    }	}	delete_pointers_list(auth_packets);    }    return true;}static voidrip_announce(XorpFd fd, vector<RipRoute<IPv6> >& my_routes){    EventLoop e;    XorpTimer t = e.new_periodic_ms(30 * 1000,				    callback(announce_routes, fd, &my_routes));    announce_routes(fd, &my_routes);    while (t.scheduled()) {	e.run();    }}static voidoriginate_routes_from_file(const char* 			file,			   vector<RipRoute<IPv6> >& 	my_routes,			   IPv6 			nh,			   uint16_t 			cost,			   uint16_t 			tag){    ifstream fin(file);    if (!fin) {        cerr << "Could not open nets file " << file << endl;	return;    }    string l;    while (fin >> l) {	try {	    IPv6Net net(l.c_str());	    my_routes.push_back(RipRoute<IPv6>(net, nh, cost, tag));	} catch (...) {	}    }    fin.close();}static XorpFdinit_rip_socket(int if_num){#ifdef HAVE_IPV6    in6_addr grp_addr;    IPv6::RIP2_ROUTERS().copy_out(grp_addr);    XorpFd fd = comm_bind_join_udp6(&grp_addr, if_num, htons(521),				 COMM_SOCK_ADDR_PORT_REUSE,				 COMM_SOCK_NONBLOCKING);    if (!fd.is_valid()) {	cerr << "comm_bind_join_udp6 failed" << endl;    }    if (comm_set_iface6(fd, if_num) != XORP_OK) {	cerr << "comm_set_iface6 failed" << endl;	comm_close(fd);	fd.clear();	return fd;    }     if (comm_set_multicast_ttl(fd, 255) != XORP_OK) {	 cerr << "comm_set_multicast_ttl failed" << endl;	 comm_close(fd);	 fd.clear();	 return fd;    }    if (comm_set_loopback(fd, 0) != XORP_OK) {	cerr << "comm_set_loopback failed" << endl;	comm_close(fd);	fd.clear();	return fd;    }    return fd;#else    cerr << "IPv6 support not found during build." << endl;    XorpFd fd;    return fd;    UNUSED(if_num);#endif}static voidshort_usage(){    cerr << "Use -h for more details. " << endl;}static voidusage(){    cerr << xlog_process_name() << " [options] -i <ifname> -o <netsfile>"	 << endl;    cerr << "Options:" << endl;    cerr << "  -c <cost>        specify cost for nets in next <netsfile>."	 << endl;    cerr << "  -i <ifname>      specify outbound interface." << endl;    cerr << "  -n <nexthop>     specify nexthop for nets in next <netsfile>."	 << endl;    cerr << "  -o <netsfile>    specify file containing list of nets for announcement." << endl;    cerr << "  -t <tag>         specify tag for nets in next <netsfile>."	 << endl;    cerr << "  -h               show this information." << endl;}intmain(int argc, char* const argv[]){    //    // Initialize and start xlog    //    xlog_init(argv[0], NULL);    xlog_set_verbose(XLOG_VERBOSE_LOW);         // Least verbose messages    xlog_level_set_verbose(XLOG_LEVEL_ERROR, XLOG_VERBOSE_HIGH);    xlog_add_default_output();    xlog_start();    comm_init();    try {	vector<RipRoute<IPv6> > my_routes;	const char* if_name = "";	bool do_run = true;		// Defaults	uint16_t tag	= 0;	uint16_t cost	= 1;	IPv6	 nh;	int	 if_num = -1;	int ch;	while ((ch = getopt(argc, argv, "c:n:i:I:o:t:h")) != -1) {	    switch(ch) {	    case 'c':		cost = atoi(optarg);		break;	    case 'i':		if_name = optarg;		break;	    case 'I':		if_num = atoi(optarg);		break;	    case 'n':		nh = IPv6(optarg);		break;	    case 'o':		originate_routes_from_file(optarg, my_routes, nh, cost, tag);		break;	    case 't':		tag = atoi(optarg);		break;	    case 'h':	    default:		usage();		do_run = false;	    }	}	if (do_run) {#ifdef HAVE_IF_NAMETOINDEX	    if_num = if_nametoindex(if_name);#endif	    if (if_num <= 0) {		cerr << "Must specify a valid interface name with -i."		     << endl;		short_usage();	    } else if (my_routes.empty()) {		cerr << "No routes to originate." << endl;		short_usage();	    } else {		XorpFd fd = init_rip_socket(if_num);		if (!fd.is_valid()) {		    rip_announce(fd, my_routes);		    comm_close(fd);		}	    }	}    } catch (...) {	xorp_print_standard_exceptions();    }    comm_exit();    //    // Gracefully stop and exit xlog    //    xlog_stop();    xlog_exit();    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品毛片高清在线完整版| 精品久久久久久久久久久久包黑料| 狠狠久久亚洲欧美| 午夜精品福利一区二区三区蜜桃| 亚洲人成网站精品片在线观看| 中文字幕第一区二区| 国产精品美女久久久久久2018| 久久精品亚洲国产奇米99| 久久久精品国产99久久精品芒果| 精品久久久久久久人人人人传媒 | 欧美在线影院一区二区| 91在线小视频| 色婷婷精品大在线视频| 欧美丰满少妇xxxbbb| 欧美乱妇15p| 精品成人佐山爱一区二区| 久久免费视频一区| 亚洲欧美国产三级| 亚洲国产精品尤物yw在线观看| 日韩中文欧美在线| 国产一二精品视频| 91精彩视频在线观看| 欧美日韩国产一区| 久久综合丝袜日本网| 欧美国产激情二区三区| 亚洲精品久久7777| 久久aⅴ国产欧美74aaa| 欧美日韩不卡一区二区| 久久国产麻豆精品| 成人性生交大片免费看中文 | 正在播放一区二区| 久久一留热品黄| 国产精品女同互慰在线看| 亚洲国产成人91porn| 久久成人久久爱| 一本久道久久综合中文字幕| 91精品啪在线观看国产60岁| 国产精品入口麻豆九色| 亚洲不卡在线观看| 国产激情偷乱视频一区二区三区| 91免费国产在线| 精品国产伦一区二区三区观看方式 | 性久久久久久久久久久久| 精品无人码麻豆乱码1区2区| 91蝌蚪porny九色| 26uuu另类欧美亚洲曰本| 亚洲一二三四久久| 成人小视频免费观看| 日韩一区二区视频| 亚洲乱码中文字幕| 成人久久久精品乱码一区二区三区| 欧美一区二区三区婷婷月色| 亚洲精品五月天| 国产精品18久久久久久久网站| 在线播放日韩导航| 亚洲一区二区在线观看视频| 风间由美一区二区三区在线观看 | 日韩福利电影在线| 色狠狠av一区二区三区| 国产精品色噜噜| 国产不卡一区视频| 久久综合九色综合97婷婷 | 国产精品日韩成人| 国精产品一区一区三区mba桃花| 欧美喷潮久久久xxxxx| 亚洲高清久久久| 一本到不卡免费一区二区| 国产精品久久一级| hitomi一区二区三区精品| 久久久久久久综合日本| 国精品**一区二区三区在线蜜桃| 日韩小视频在线观看专区| 日韩二区在线观看| 日韩女优电影在线观看| 韩国一区二区在线观看| 久久久三级国产网站| 国产真实精品久久二三区| 26uuu亚洲| 国产精品99久| 中文字幕亚洲视频| 色欧美片视频在线观看| 夜夜爽夜夜爽精品视频| 欧美美女bb生活片| 男女男精品网站| 精品国产百合女同互慰| 国产成人精品亚洲日本在线桃色| 国产欧美精品一区aⅴ影院| 北条麻妃国产九九精品视频| 综合久久国产九一剧情麻豆| 91国产免费观看| 日本va欧美va欧美va精品| 欧美变态tickling挠脚心| 国产尤物一区二区| 亚洲丝袜精品丝袜在线| 欧美日本一道本| 国产在线播精品第三| 国产精品久线在线观看| 欧美三级日韩在线| 国产乱码精品一区二区三区av | 色婷婷亚洲综合| 日本最新不卡在线| 国产精品午夜在线| 欧美日韩国产首页| 国产精品亚洲综合一区在线观看| 亚洲天天做日日做天天谢日日欢 | 久久99最新地址| 《视频一区视频二区| 欧美精品日韩精品| 国产精品18久久久久久vr| 一区二区三区四区亚洲| 精品国精品国产| 欧美撒尿777hd撒尿| 国产成人精品免费在线| 亚洲高清免费一级二级三级| 国产日本亚洲高清| 4438x亚洲最大成人网| 99久久综合精品| 久久精品久久精品| 亚洲黄色av一区| 久久这里只有精品视频网| 在线观看一区日韩| 波多野结衣中文字幕一区二区三区| 午夜天堂影视香蕉久久| 国产精品久久久久久久久动漫 | 亚洲天堂2014| 国产亚洲一本大道中文在线| 欧美精品一二三| 色国产综合视频| 成人激情小说乱人伦| 狠狠色丁香婷婷综合| 亚洲不卡av一区二区三区| 综合久久国产九一剧情麻豆| 久久精品亚洲精品国产欧美kt∨| 日韩一区二区三区在线| 欧美日韩大陆一区二区| 色悠悠久久综合| 国产成人免费xxxxxxxx| 国产美女娇喘av呻吟久久| 日产国产高清一区二区三区| 午夜一区二区三区在线观看| 亚洲免费观看在线观看| 亚洲少妇中出一区| 国产精品国产三级国产aⅴ无密码| 精品国产不卡一区二区三区| 日韩一级二级三级| 91麻豆精品国产综合久久久久久| 欧美亚洲国产一区二区三区| 91在线国内视频| 色综合天天综合网天天看片| www.欧美日韩国产在线| 99精品在线观看视频| 色综合久久精品| 91精品福利视频| 欧美日韩国产一级| 91精品国产综合久久久久久久久久| 欧美三级韩国三级日本三斤| 精品视频999| 欧美成人r级一区二区三区| 精品免费国产一区二区三区四区| 欧美一三区三区四区免费在线看 | 美女一区二区在线观看| 久久成人免费网| 国产99精品在线观看| 成人高清在线视频| 色综合色狠狠综合色| 欧美视频一二三区| 日韩午夜精品视频| 国产女同互慰高潮91漫画| 国产精品久久久久婷婷二区次| 国产女人水真多18毛片18精品视频 | 一区二区不卡在线视频 午夜欧美不卡在| 日韩理论在线观看| 亚洲国产成人91porn| 韩国一区二区视频| 99精品视频一区二区三区| 欧美色偷偷大香| 欧美成人激情免费网| 亚洲欧洲成人自拍| 蜜臀久久久久久久| av激情亚洲男人天堂| 欧美日韩精品电影| 欧美精品一区二区三区很污很色的| 亚洲国产精品成人综合| 污片在线观看一区二区 | 国产精品另类一区| 亚洲一区中文日韩| 激情六月婷婷久久| 欧美中文一区二区三区| 亚洲精品一区二区在线观看| 亚洲欧美日韩国产综合在线 | 日本一区二区不卡视频| 一级日本不卡的影视| 国产精品99久久久久久宅男| 精品国产91亚洲一区二区三区婷婷| 日韩视频永久免费| 国产精品久久久99| 久久精品国产精品亚洲综合| 色综合亚洲欧洲| 国产丝袜美腿一区二区三区| 亚洲国产一区二区三区|