// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*- // vim:set sts=4 ts=8: // 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/rtrmgr/config_operators.cc,v 1.6 2007/02/16 22:47:21 pavlin Exp $" #include "rtrmgr_module.h" #include "libxorp/xorp.h" #include "libxorp/xlog.h" #include "rtrmgr_error.hh" #include "config_operators.hh" string operator_to_str(ConfigOperator op) { switch (op) { case OP_NONE: XLOG_UNREACHABLE(); case OP_EQ: return string("=="); case OP_NE: return string("!="); case OP_LT: return string("<"); case OP_LTE: return string("<="); case OP_GT: return string(">"); case OP_GTE: return string(">="); case OP_IPNET_EQ: return string("exact"); case OP_IPNET_NE: return string("not"); case OP_IPNET_LT: return string("longer"); case OP_IPNET_GT: return string("shorter"); case OP_IPNET_LE: return string("orlonger"); case OP_IPNET_GE: return string("orshorter"); case OP_ASSIGN: return string(":"); case OP_ADD: return string("add"); case OP_SUB: return string("sub"); case OP_DEL: return string("del"); } XLOG_UNREACHABLE(); } ConfigOperator lookup_operator(const string& s) throw (ParseError) { if (s == "==") { return OP_EQ; } else if (s == "!=") { return OP_NE; } else if (s == "<") { return OP_LT; } else if (s == "<=") { return OP_LTE; } else if (s == ">") { return OP_GT; } else if (s == ">=") { return OP_GTE; } else if (s == "exact") { return OP_IPNET_EQ; } else if (s == "not") { return OP_IPNET_NE; } else if (s == "longer") { return OP_IPNET_LT; } else if (s == "shorter") { return OP_IPNET_GT; } else if (s == "orlonger") { return OP_IPNET_LE; } else if (s == "orshorter") { return OP_IPNET_GE; } else if (s == ":") { return OP_ASSIGN; } else if (s == "=") { return OP_ASSIGN; } else if (s == "+") { return OP_ADD; } else if (s == "add") { return OP_ADD; } else if (s == "-") { return OP_SUB; } else if (s == "sub") { return OP_SUB; } else if (s == "del") { return OP_DEL; } // // Invalid operator string // string error_msg = c_format("Bad operator: %s", s.c_str()); xorp_throw(ParseError, error_msg); }