summaryrefslogtreecommitdiff
path: root/src/routingTreeNode.cpp
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@anytun.org>2008-12-22 01:38:19 +0000
committerOthmar Gsenger <otti@anytun.org>2008-12-22 01:38:19 +0000
commitdd37bc54dae219e4d1975f014ec36c221ec4db20 (patch)
tree38e7f427b0ae736841f4193935e39aae500a16dd /src/routingTreeNode.cpp
parentadded route option to anytun (diff)
new routing system
supports ipv4 and ipv6 routing with subnetting
Diffstat (limited to 'src/routingTreeNode.cpp')
-rw-r--r--src/routingTreeNode.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/routingTreeNode.cpp b/src/routingTreeNode.cpp
new file mode 100644
index 0000000..47dc0fc
--- /dev/null
+++ b/src/routingTreeNode.cpp
@@ -0,0 +1,64 @@
+/*
+ * anytun
+ *
+ * The secure anycast tunneling protocol (satp) defines a protocol used
+ * for communication between any combination of unicast and anycast
+ * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel
+ * mode and allows tunneling of every ETHER TYPE protocol (e.g.
+ * ethernet, ip, arp ...). satp directly includes cryptography and
+ * message authentication based on the methodes used by SRTP. It is
+ * intended to deliver a generic, scaleable and secure solution for
+ * tunneling and relaying of packets of any protocol.
+ *
+ *
+ * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl,
+ * Christian Pointner <satp@wirdorange.org>
+ *
+ * This file is part of Anytun.
+ *
+ * Anytun is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Anytun is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with anytun. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "routingTreeNode.h"
+
+RoutingTreeNode::RoutingTreeNode():mux_(0),valid_(false)
+{
+ for(int i=0; i<256; i++)
+ nodes_[i]=NULL;
+}
+
+void RoutingTreeNode::print(int level) const
+{
+ if (valid_)
+ {
+ std::cout << " -> " <<mux_ ;
+ }
+ std::cout << std::endl;
+ for(int i=0; i<256; i++)
+ {
+ if ( nodes_[i])
+ {
+ for(int l=0;l<level;l++)
+ std::cout << " ";
+ std::cout << (int) i;
+ nodes_[i]->print(level+1);
+ }
+ }
+}
+
+
+RoutingTreeNode::~RoutingTreeNode()
+{
+ for(int i=0; i<256; i++)
+ if(nodes_[i])
+ delete nodes_[i];
+}