modules/up/src/rpsl/rpsl/rpsl_filter.cc
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
- print
// $Id: rpsl_filter.cc,v 1.1.1.1 2000/03/10 16:32:23 engin Exp $
//
// Copyright (c) 1994 by the University of Southern California
// All rights reserved.
//
// Permission to use, copy, modify, and distribute this software and its
// documentation in source and binary forms for lawful non-commercial
// purposes and without fee is hereby granted, provided that the above
// copyright notice appear in all copies and that both the copyright
// notice and this permission notice appear in supporting documentation,
// and that any documentation, advertising materials, and other materials
// related to such distribution and use acknowledge that the software was
// developed by the University of Southern California, Information
// Sciences Institute. The name of the USC may not be used to endorse or
// promote products derived from this software without specific prior
// written permission.
//
// THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
// REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
// PURPOSE. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
// TITLE, AND NON-INFRINGEMENT.
//
// IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
// SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
// OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
// OR PERFORMANCE OF THIS SOFTWARE.
//
// Questions concerning this software should be directed to
// ratoolset@isi.edu.
//
// Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
#include "config.h"
#include <cstdio>
#include "rpsl_filter.hh"
#include "rpsl_attr.hh"
#include "regexp.hh"
//// printing ////////////////////////////////////////////////////////
ostream &Filter::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
return out;
}
ostream &FilterMS::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << *f1;
switch (code) {
case 0:
out << "^-";
break;
case 1:
out << "^+";
break;
case 2:
if (n == m)
out << "^" << n;
else
out << "^" << n << "-" << m;
}
return out;
}
ostream &FilterOR::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << *f1 << " or " << *f2;
return out;
}
ostream &FilterAND::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << *f1 << " and " << *f2;
return out;
}
ostream &FilterEXCEPT::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << *f1 << " except " << *f2;
return out;
}
ostream &FilterNOT::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "not " << *f1;
return out;
}
ostream &FilterASNO::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "AS" << asno;
return out;
}
ostream &FilterASNAME::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << asname;
return out;
}
ostream &FilterRSNAME::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << rsname;
return out;
}
ostream &FilterRTRSNAME::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << rtrsname;
return out;
}
ostream &FilterFLTRNAME::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << fltrname;
return out;
}
ostream &FilterANY::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "ANY";
return out;
}
ostream &FilterPeerAS::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "peerAS";
return out;
}
ostream &FilterASPath::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "<" << *re << ">";
return out;
}
ostream &FilterPRFXList::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "{";
int i = low();
if (i < fence()) {
out << (*this)[i].get_text();
for (++i; i < fence(); ++i)
out << ", " << (*this)[i].get_text();
}
out << "}";
return out;
}
ostream &FilterRPAttribute::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << rp_attr->name;
if (rp_method->isOperator)
out << " " << (rp_method->name + 8) << " " << *args;
else
out << "." << rp_method->name << "(" << *args << ")";
return out;
}
ostream &FilterHAVE_COMPONENTS::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "HAVE-COMPONENTS " << *prfxs;
return out;
}
ostream &FilterEXCLUDE::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << "EXCLUDE " << *prfxs;
return out;
}
ostream &FilterRouter::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
char buffer[128];
out << int2quad(buffer, ip->get_ipaddr());
return out;
}
ostream &FilterRouterName::print(ostream &out) const {
/* [<][>][^][v][top][bottom][index][help] */
out << name;
return out;
}