⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xorpsh_print_routes.cc

📁 xorp源码hg
💻 CC
字号:
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-// Copyright (c) 2001-2007 International Computer Science Institute//// 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/bgp/tools/xorpsh_print_routes.cc,v 1.15 2007/02/16 22:45:27 pavlin Exp $"#include "print_routes.hh"#include "bgp/aspath.hh"#include "bgp/path_attribute.hh"#ifdef HAVE_GETOPT_H#include <getopt.h>#endifvoid usage(){    fprintf(stderr,	    "Usage: [ -l <lines> ] xorpsh_print_routes show bgp routes "	    "[ipv4|ipv6] [unicast|multicast] [summary|detail] [x.x.x.x/n]\n"	    "where summary enables brief output.\n");}int main(int argc, char **argv){    XorpUnexpectedHandler x(xorp_unexpected_handler);    //    // Initialize and start xlog    //    xlog_init(argv[0], NULL);    xlog_set_verbose(XLOG_VERBOSE_LOW);		// Least verbose messages    // XXX: verbosity of the error messages temporary increased    xlog_level_set_verbose(XLOG_LEVEL_ERROR, XLOG_VERBOSE_HIGH);    xlog_add_default_output();    xlog_start();    IPNet<IPv4> net_ipv4;    IPNet<IPv6> net_ipv6;    bool ipv4, ipv6, unicast, multicast;    ipv4 = ipv6 = unicast = multicast = false;    PrintRoutes<IPv4>::detail_t verbose_ipv4 = PrintRoutes<IPv4>::NORMAL;    PrintRoutes<IPv6>::detail_t verbose_ipv6 = PrintRoutes<IPv6>::NORMAL;    int interval = -1;    int lines = -1;    int c;    while ((c = getopt(argc, argv, "46uml:")) != -1) {	switch (c) {	case '4':	    ipv4 = true;	    break;	case '6':	    ipv6 = true;	    break;	case 'u':	    unicast = true;	    break;	case 'm':	    multicast = true;	    break;	case 'l':	    lines = atoi(optarg);	    break;	default:	    printf("hello\n");	    usage();	    return -1;	}    }    argc -= optind;    argv += optind;    if ((argc < 3) || (argc > 7)) {	usage();	return -1;    }    if (strcmp(argv[0], "show") != 0) {	usage();	return -1;    }    if (strcmp(argv[1], "bgp") != 0) {	usage();	return -1;    }    if (strcmp(argv[2], "routes") != 0) {	usage();	return -1;    }    int counter = 4;    if (argc > 3) {	if (strcmp(argv[3], "ipv4") == 0) {	    ipv4 = true;	    counter++;	}	if (strcmp(argv[3], "ipv6") == 0) {	    ipv6 = true;	    counter++;	}    }    if (argc > 4) {	if (strcmp(argv[4], "unicast") == 0) {	    unicast = true;	    counter++;	}	if (strcmp(argv[4], "multicast") == 0) {	    multicast = true;	    counter++;	}    }    if (argc >= counter) {	if (strcmp(argv[counter - 1], "summary")==0) {	    verbose_ipv4 = PrintRoutes<IPv4>::SUMMARY;	    verbose_ipv6 = PrintRoutes<IPv6>::SUMMARY;	    counter++;	} else if (strcmp(argv[counter - 1], "detail")==0) {	    verbose_ipv4 = PrintRoutes<IPv4>::DETAIL;	    verbose_ipv6 = PrintRoutes<IPv6>::DETAIL;	    counter++;	}    }    if (argc == counter) {	try {		IPNet<IPv4> subnet(argv[counter - 1]);		net_ipv4 = subnet;	} catch(...) {	    try {		IPNet<IPv6> subnet(argv[counter - 1]);		net_ipv6 = subnet;	    } catch(...) {		// xorp_catch_standard_exceptions();		usage();		return -1;	    }	}    }    if ((ipv4 == false) && (ipv6 == false))	ipv4 = true;    if ((unicast == false) && (multicast == false))	unicast = true;    try {	if (ipv4) {	    PrintRoutes<IPv4> route_printer(verbose_ipv4, interval, net_ipv4,					    unicast, multicast, lines);	}	if (ipv6) {	    PrintRoutes<IPv6> route_printer(verbose_ipv6, interval, net_ipv6,					    unicast, multicast, lines);	}    } catch(...) {	xorp_catch_standard_exceptions();    }    //    // Gracefully stop and exit xlog    //    xlog_stop();    xlog_exit();    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -