Restructured GUI files
authorAndreas Tonnesen <andreto@olsr.org>
Mon, 13 Sep 2004 16:54:15 +0000 (16:54 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Mon, 13 Sep 2004 16:54:15 +0000 (16:54 +0000)
30 files changed:
front-end/CHANGELOG [deleted file]
front-end/Makefile [deleted file]
front-end/Makefile.win32.in [deleted file]
front-end/bin/olsrd-gui [deleted file]
front-end/mkmf.sh [deleted file]
front-end/src/callbacks.c [deleted file]
front-end/src/callbacks.h [deleted file]
front-end/src/common.h [deleted file]
front-end/src/interface.c [deleted file]
front-end/src/interface.h [deleted file]
front-end/src/ipc.c [deleted file]
front-end/src/ipc.h [deleted file]
front-end/src/main.c [deleted file]
front-end/src/main.h [deleted file]
front-end/src/nodes.c [deleted file]
front-end/src/nodes.h [deleted file]
front-end/src/olsr.c [deleted file]
front-end/src/olsr_protocol.h [deleted file]
front-end/src/packet.c [deleted file]
front-end/src/packet.h [deleted file]
front-end/src/pixmaps.h [deleted file]
front-end/src/pixmaps/logo.xpm [deleted file]
front-end/src/routes.c [deleted file]
front-end/src/routes.h [deleted file]
front-end/src/win32/arpa/inet.h [deleted file]
front-end/src/win32/compat.c [deleted file]
front-end/src/win32/netdb.h [deleted file]
front-end/src/win32/netinet/in.h [deleted file]
front-end/src/win32/sys/socket.h [deleted file]
front-end/src/win32/sys/time.h [deleted file]

diff --git a/front-end/CHANGELOG b/front-end/CHANGELOG
deleted file mode 100644 (file)
index a65c586..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-CHANGELOG AS OF 0.2.2
-
-0.2.6 -------------------------------------------------
-
-Minor updates
-
-UPDATES
-Some simple code rewrites and bugfixes.
-Route deletion using IPv6 should work now.
-
-
-0.2.5 -------------------------------------------------
-
-Lots of updates.
-
-REWRITES
-
-Rewritten queuing structure.
-Route information is removed from main tab.
-
-PIGGYBACKING
-
-The front-end now supports piggybacked messages.
-
-
-0.2.2 -------------------------------------------------
-
-HELLO PARSING ERROR
-
-The parsing of HELLO messages didnt handle grous of neighbors
-bigger than 1 if there existed more than one group. This because
-the implementation did not check for several IP addresses but
-just incremented the struct-array index. A kindof ugly hack fixed
-this.
-
-MESSAGE RECIEVING
-
-Recieving of messages not complete - fixed. One could risk just recieving
-half a message the way it used to be implemented.
diff --git a/front-end/Makefile b/front-end/Makefile
deleted file mode 100644 (file)
index 9377d05..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-CC=    gcc
-#CC=     arm-linux-gcc
-
-CFLAGS= -Wall `pkg-config --cflags gtk+-2.0` #-g #to use GDB
-LFLAGS= `pkg-config --libs gtk+-2.0`
-
-SRCS=  src/main.c src/interface.c src/callbacks.c src/ipc.c \
-       src/packet.c src/nodes.c src/routes.c
-
-OBJS=  src/main.o src/interface.o src/callbacks.o src/ipc.o \
-       src/packet.o src/nodes.o src/routes.o
-
-HDRS=  src/main.h src/interface.h src/callbacks.h src/ipc.h \
-       src/olsr.h src/types.h src/packet.h src/nodes.h \
-       src/pixmaps.h src/routes.h
-
-all:   olsrd-gui
-
-olsrd-gui:     $(OBJS)
-       $(CC) $(LFLAGS) -o bin/$@ $(OBJS)
-
-clean:
-       rm -f $(OBJS)
-
-install:
-       cp ./bin/olsrd-gui /usr/bin/
diff --git a/front-end/Makefile.win32.in b/front-end/Makefile.win32.in
deleted file mode 100644 (file)
index a151b50..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-GTKBASE =      ../../gtk
-
-OBJS =         src/main.o \
-               src/interface.o \
-               src/callbacks.o \
-               src/ipc.o \
-               src/packet.o \
-               src/nodes.o \
-               src/routes.o \
-               src/win32/compat.o
-
-%.o:           %.c
-               gcc -mno-cygwin -mms-bitfields -O2 -Wall -c -DWIN32 \
-               -Isrc/win32 \
-                -I$(GTKBASE)/include/gtk-2.0 \
-                -I$(GTKBASE)/include/glib-2.0 \
-                -I$(GTKBASE)/lib/gtk-2.0/include \
-                -I$(GTKBASE)/lib/glib-2.0/include \
-                -I$(GTKBASE)/include/pango-1.0 \
-                -I$(GTKBASE)/include/atk-1.0 \
-                -o$@ $<
-
-olsrd-gui:     $(OBJS)
-               gcc -mno-cygwin -o olsrd-gui.exe $(OBJS) \
-                -lws2_32 \
-                -L$(GTKBASE)/lib \
-                -llibgtk-win32-2.0 \
-                -llibgdk-win32-2.0 \
-                -llibglib-2.0 \
-                -llibgobject-2.0
-
-clean:
-               rm -f olsrd-gui.exe
-               find . -name \*~ -exec rm -f {} \;
-               find src -name \*.o -exec rm -f {} \;
-
-mclean:                clean
-               rm -f Makefile.win32
diff --git a/front-end/bin/olsrd-gui b/front-end/bin/olsrd-gui
deleted file mode 100755 (executable)
index cba62ab..0000000
Binary files a/front-end/bin/olsrd-gui and /dev/null differ
diff --git a/front-end/mkmf.sh b/front-end/mkmf.sh
deleted file mode 100755 (executable)
index 2acc4e2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-srcs="\
-    src/main.c \
-    src/interface.c \
-    src/callbacks.c \
-    src/ipc.c \
-    src/packet.c \
-    src/nodes.c \
-    src/routes.c \
-    src/win32/compat.c \
-    "
-
-rm -f Makefile.win32
-cp Makefile.win32.in Makefile.win32
-
-echo >>Makefile.win32
-echo \# >>Makefile.win32
-echo \# DEPENDENCIES >>Makefile.win32
-echo \# >>Makefile.win32
-
-for f in $srcs; do
-    echo >>Makefile.win32
-    echo \# $f >>Makefile.win32
-    echo >>Makefile.win32
-
-    o=`echo $f | sed -e 's/c$/o/'`
-
-    gcc -MM -MT $o -mno-cygwin -mms-bitfields -O2 -Wall -c -DWIN32 -Isrc/win32 $f >>Makefile.win32
-done
diff --git a/front-end/src/callbacks.c b/front-end/src/callbacks.c
deleted file mode 100644 (file)
index 42bea34..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include "common.h"
-
-
diff --git a/front-end/src/callbacks.h b/front-end/src/callbacks.h
deleted file mode 100644 (file)
index 8b13789..0000000
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/front-end/src/common.h b/front-end/src/common.h
deleted file mode 100644 (file)
index 056abff..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- *Andreas Tønmnesen
- */
-
-#ifndef _OLSRD_FORNTEND_COMMON
-#define _OLSRD_FORNTEND_COMMON
-
-#include <gtk/gtk.h>
-#include <stdlib.h>
-#include <netinet/in.h>
-#include <stdio.h>
-#include <string.h>
-
-//#include "interface.h"
-#include "callbacks.h"
-//#include "types.h"
-#include "olsr_protocol.h"
-
-#define SOFTWARE_VERSION "uOLSRd GUI 0.2.6" 
-#define IPC_INTERVAL 500 //interval for IPC read timeout
-#define MAXPACKS 20
-#define BUFFSIZE 512
-
-
-extern int connected;
-extern struct timeval hold_time_nodes; /* Timeout for all nodes */
-extern struct timeval now;
-
-
-/* Our address */
-union olsr_ip_addr main_addr;
-union olsr_ip_addr null_addr;
-
-int ipversion;
-int ipsize;
-char ipv6_buf[100];      /* buffer for IPv6 inet_htop */
-
-int nodes_timeout;
-
-int freeze_packets;
-int display_dec;
-extern int timeouts;
-
-/*
- *Node info
- */
-
-
-struct mid
-{
-  union olsr_ip_addr alias;
-  struct mid *next;
-  struct mid *prev;
-};
-
-struct hna
-{
-  union olsr_ip_addr net;
-  union olsr_ip_addr mask;
-  struct hna *next;
-  struct hna *prev;
-};
-
-struct mpr
-{
-  union olsr_ip_addr addr;
-  struct timeval timer;
-  struct mpr *next;
-  struct mpr *prev;
-};
-
-
-struct node
-{
-  union olsr_ip_addr addr;
-  union olsr_ip_addr gw_addr;
-  int hopcount;
-  int display;
-  char dev[5];
-  struct mid mid;
-  struct hna hna;
-  struct mpr mpr;
-  struct timeval timer;
-  struct node *next;
-  struct node *prev;
-};
-
-
-
-
-
-
-/*
- *Interface public
- */
-
-
-GtkWidget * 
-create_main_window (void);
-
-
-void
-packet_list_add(char *, char *, char *);
-
-void
-route_list_add(char *, char *, char *, char *);
-
-int
-route_list_del(char *);
-
-void
-route_list_update(char *);
-
-
-void
-set_net_info(gchar *, int);
-
-void
-set_net_info_offline();
-
-void
-update_nodes_list(struct node *);
-
-int
-remove_nodes_list(union olsr_ip_addr *);
-
-/*
- *IPC public
- */
-int
-ipc_connect();
-
-int
-ipc_close();
-
-int
-ipc_read();
-
-int
-ipc_send();
-
-
-char *
-ip_to_string(union olsr_ip_addr *);
-
-int
-gui_itoa(int, char *);
-
-
-/*
- *Packet.c public
- */
-
-int
-add_packet_to_buffer(union olsr_message *, int);
-
-
-union olsr_message *
-get_packet(int);
-
-
-
-/*
- *Nodes.c public
- */
-
-
-
-void
-init_nodes();
-
-struct node *
-find_node(char *);
-
-struct node *
-find_node_t(union olsr_ip_addr *);
-
-int
-update_timer_node(union olsr_ip_addr *, olsr_u8_t);
-
-int
-add_hna_node(union olsr_ip_addr *, union olsr_ip_addr *, union olsr_ip_addr *, olsr_u8_t);
-
-int
-add_mid_node(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u8_t);
-
-void
-init_timer(olsr_u32_t, struct timeval *);
-
-gint
-time_out_nodes(gpointer);
-
-int
-add_node(union olsr_ip_addr *, olsr_u8_t);
-
-int
-add_mpr(union olsr_ip_addr *, union olsr_ip_addr *, struct timeval *);
-
-int
-update_timer_mpr(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u8_t);
-
-int
-time_out_mprs(union olsr_ip_addr *);
-
-
-
-#endif
diff --git a/front-end/src/interface.c b/front-end/src/interface.c
deleted file mode 100644 (file)
index 3c13690..0000000
+++ /dev/null
@@ -1,1545 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-
-#include "common.h"
-#include "interface.h"
-#include "pixmaps.h"
-
-/* Global widgets */
-/* GtkWidget *text1; */
-GtkWidget *net_label;
-GtkWidget *info_label;
-GtkTextBuffer *textBuffer;
-GtkWidget *connect_button;
-GtkWidget *packet_list;
-GtkWidget *packet_content_list;
-GtkWidget *packet_button;
-GtkWidget *packet_disp_button;
-GtkWidget *node_list;
-GtkWidget *mid_list;
-GtkWidget *mpr_list;
-GtkWidget *hna_list;
-GtkWidget *route_list;
-
-GdkBitmap *mask;
-
-int packet_list_size = 0;
-int route_list_size = 0;
-int node_list_size = 0;
-
-GtkWidget *main_window;
-
-GtkWidget*
-create_main_window (void)
-{
-  GtkWidget *notebook1;
-  GtkWidget *frame3;
-  GtkWidget *frame4;
-  GtkWidget *hbox1;
-  GtkWidget *vbox1;
-  GtkWidget *scrolledwindow1;
-  GtkWidget *node_label1;
-  GtkWidget *node_label2;
-  GtkWidget *node_label3;
-  GtkWidget *node_label4;
-  GtkWidget *node_label7;
-  GtkWidget *node_label8;
-  GtkWidget *node_label9;
-  GtkWidget *mid_frame;
-  GtkWidget *mpr_frame;
-  GtkWidget *hna_frame;
-  GtkWidget *mid_scrolledwindow;
-  GtkWidget *mpr_scrolledwindow;
-  GtkWidget *hna_scrolledwindow;
-  GtkWidget *Main;
-  GtkWidget *label_routes;
-  GtkWidget *hbox2;
-  GtkWidget *frame2;
-  GtkWidget *scrolledwindow4;
-  GtkWidget *label17;
-  GtkWidget *label18;
-  GtkWidget *label19;
-  GtkWidget *scrolledwindow3;
-  GtkWidget *label13;
-  GtkWidget *label14;
-  GtkWidget *label15;
-  GtkWidget *label16;
-  GtkWidget *label_packets;
-  //GtkWidget *empty_notebook_page2;
-  GtkWidget *label3;
-  GtkWidget *net_vbox;
-  GtkWidget *pack_vbox;
-  GtkWidget *pack_disp_vbox;
-  GtkWidget *disp_frame;
-  GtkWidget *route_frame;
-  GtkWidget *route_stats_frame;
-  GtkWidget *route_scrolledwindow;
-  GtkWidget *route_label1;
-  GtkWidget *route_label2;
-  GtkWidget *route_label3;
-  GtkWidget *route_label4;
-  GtkWidget *route_hbox1;
-
-  GtkWidget *traffic_label;
-
-  GtkWidget *settings_label;
-  GtkWidget *settings_hbox1;
-
-  GtkWidget *about_hbox1;
-  GtkWidget *about_label;
-
-  GtkWidget *empty1;
-
-  GdkPixmap *unik_logo_gdk;
-  GtkWidget *unik_logo;
-
-  /*
-   *The main window
-   */
-
-  main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_object_set_data (GTK_OBJECT (main_window), "main_window", main_window);
-  gtk_window_set_title (GTK_WINDOW (main_window), (SOFTWARE_VERSION));
-  gtk_window_set_default_size(GTK_WINDOW (main_window), 600, 550);
-  gtk_signal_connect(GTK_OBJECT(main_window),
-                    "destroy",
-                    GTK_SIGNAL_FUNC(gui_shutdown),
-                    //GTK_SIGNAL_FUNC(gtk_main_quit),
-                    NULL);
-  gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER); /* Position window in center */
-  gtk_window_set_policy(GTK_WINDOW(main_window), FALSE, TRUE, TRUE); /* No user-resizing */
-
-  /*
-   *Initialize the pixmaps
-   */
-  unik_logo_gdk = gdk_pixmap_colormap_create_from_xpm_d (NULL, gtk_widget_get_colormap(main_window), &mask, NULL, (gchar **)logo_xpm);
-
-  unik_logo = gtk_pixmap_new(unik_logo_gdk, mask);
-
-  /*
-   *The notebook
-   */
-
-  notebook1 = gtk_notebook_new ();
-  gtk_widget_ref (notebook1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "notebook1", notebook1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (notebook1);
-  gtk_container_add (GTK_CONTAINER (main_window), notebook1);
-
-
-
-  /*
-   *The first vbox
-   */
-  vbox1 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "vbox1", vbox1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox1);
-  //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1);
-  gtk_container_add (GTK_CONTAINER (notebook1), vbox1);
-
-
-
-
-  /*
-   *The nodes frame
-   */
-  frame3 = gtk_frame_new ("Registered nodes:");
-  gtk_widget_ref (frame3);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "frame3", frame3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame3);
-  gtk_box_pack_start (GTK_BOX (vbox1), frame3, TRUE, TRUE, 0);
-  gtk_widget_set_size_request(frame3, -1, 300);
-  gtk_container_set_border_width (GTK_CONTAINER (frame3), 1);
-
-
-
-
-  /*
-   *The scrolled window to contain the node list
-   */
-
-  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (scrolledwindow1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "scrolledwindow1", scrolledwindow1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (scrolledwindow1);
-  gtk_container_add (GTK_CONTAINER (frame3), scrolledwindow1);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-
-  //gtk_box_pack_start (GTK_BOX (frame3), scrolledwindow1, TRUE, TRUE, 0);
-  //gtk_widget_set_usize (scrolledwindow1, -2, 332);
-
-  /*
-   *The node list
-   */
-  
-  node_list = gtk_clist_new (7);
-  gtk_widget_ref (node_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "node_list", node_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_list);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow1), node_list);
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 0, 150); /* IP */
-  //gtk_clist_set_column_justification(GTK_CLIST(node_list), 0, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 1, 150); /* gateway */
-  //gtk_clist_set_column_justification(GTK_CLIST(node_list), 1, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 2, 50); /* hopcount */
-  gtk_clist_set_column_justification(GTK_CLIST(node_list), 2, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 3, 80); /* dev */
-  gtk_clist_set_column_justification(GTK_CLIST(node_list), 3, GTK_JUSTIFY_CENTER);
-
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 4, 70); /* timer */
-  gtk_clist_set_column_justification(GTK_CLIST(node_list), 4, GTK_JUSTIFY_CENTER);
-  //gtk_clist_set_column_width (GTK_CLIST (node_list), 7, 100); /* last about */
-  //gtk_clist_set_column_justification(GTK_CLIST(node_list), 7, GTK_JUSTIFY_CENTER);
-
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 5, 40); /* MID */
-  gtk_clist_set_column_justification(GTK_CLIST(node_list), 5, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (node_list), 6, 40); /* HNA */
-  gtk_clist_set_column_justification(GTK_CLIST(node_list), 6, GTK_JUSTIFY_CENTER);
-
-  gtk_clist_column_titles_show (GTK_CLIST (node_list));
-
-  /*
-   *Row selection callback
-   */
-  gtk_signal_connect(GTK_OBJECT(node_list), "select_row",
-                    GTK_SIGNAL_FUNC(selection_made),
-                    NULL);
-
-  /*
-   *Column selection callback
-   */
-  gtk_signal_connect(GTK_OBJECT(node_list),
-                    "click_column",
-                    GTK_SIGNAL_FUNC(column_clicked_callback),
-                    NULL);
-
-  node_label1 = gtk_label_new ("Dest");
-  gtk_widget_ref (node_label1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "IP", node_label1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label1);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 0, node_label1);
-
-  node_label2 = gtk_label_new ("Gateway");
-  gtk_widget_ref (node_label2);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "hops", node_label2,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label2);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 1, node_label2);
-
-  node_label3 = gtk_label_new ("Metric");
-  gtk_widget_ref (node_label3);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "info", node_label3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label3);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 2, node_label3);
-
-  node_label4 = gtk_label_new ("Device");
-  gtk_widget_ref (node_label4);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "Device", node_label4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label4);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 3, node_label4);
-
-
-  node_label7 = gtk_label_new ("Timer");
-  gtk_widget_ref (node_label7);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "LMF", node_label7,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label7);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 4, node_label7);
-
-  /*
-  node_label8 = gtk_label_new ("LMA");
-  gtk_widget_ref (node_label8);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "LMA", node_label8,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label8);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 7, node_label8);
-  */
-
-  node_label8 = gtk_label_new ("MID");
-  gtk_widget_ref (node_label8);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "MID", node_label8,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label8);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 5, node_label8);
-
-  node_label9 = gtk_label_new ("HNA");
-  gtk_widget_ref (node_label9);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "HNA", node_label9,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (node_label9);
-  gtk_clist_set_column_widget (GTK_CLIST (node_list), 6, node_label9);
-
-
-
-  gtk_clist_column_titles_active(GTK_CLIST (node_list));
-
-
-  gtk_widget_show_now(node_list);
-
-
-
-  /*
-   *Row selection callback
-   */
-  gtk_signal_connect(GTK_OBJECT(node_list), "select_row",
-                    GTK_SIGNAL_FUNC(node_selection),
-                    NULL);
-
-
-
-
-
-  /*
-   *The first hbox
-   */
-  hbox1 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "hbox1", hbox1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox1);
-  gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
-  //gtk_container_add (GTK_CONTAINER (notebook1), hbox1);
-  gtk_container_set_border_width (GTK_CONTAINER (hbox1), 4);
-  gtk_widget_set_size_request(hbox1, -1, 200);
-
-
-
-  /*
-   *The net-info frame
-   */
-  frame4 = gtk_frame_new ("Info:");
-  gtk_widget_ref (frame4);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "frame4", frame4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame4);
-  gtk_box_pack_start (GTK_BOX (hbox1), frame4, TRUE, TRUE, 0);
-  //gtk_widget_set_size_request(frame4, 200, -1);
-  gtk_container_set_border_width (GTK_CONTAINER (frame4), 1);
-
-
-  /*
-   *The net-info hbox
-   */
-  net_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (net_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "net_vbox", net_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (net_vbox);
-  gtk_container_add (GTK_CONTAINER (frame4), net_vbox);
-
-
-  /*
-   *The net-info label field
-   */
-  net_label = gtk_label_new(NULL);
-  gtk_widget_ref (net_label);
-  gtk_misc_set_alignment((GtkMisc *)net_label, 0, 0);
-  //gtk_label_set_justify((GtkLabel *)net_label,GTK_JUSTIFY_LEFT);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "net_label", net_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  //set_net_info("Not connected...");
-  gtk_widget_show (net_label);
-  gtk_box_pack_start (GTK_BOX (net_vbox), net_label, TRUE, TRUE, 0);
-
-  //gtk_container_add (GTK_CONTAINER (frame4), net_label);
-
-  /*
-   *The connect button
-   */
-
-  connect_button = gtk_button_new_with_label ("Connect to localhost");
-  gtk_widget_ref (connect_button);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "connect_button", connect_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  /* Connect the "clicked" signal of the button to our callback */
-  gtk_signal_connect (GTK_OBJECT (connect_button), "clicked",
-                     GTK_SIGNAL_FUNC (connect_callback), NULL);
-  gtk_widget_show (connect_button);
-  gtk_box_pack_start (GTK_BOX (net_vbox), connect_button, FALSE, FALSE, 1);
-  gtk_container_set_border_width (GTK_CONTAINER (connect_button), 5);
-
-
-
-  /*
-   *The node MPR info frame
-   */
-  mpr_frame = gtk_frame_new ("MPR:");
-  gtk_widget_ref (mpr_frame);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "mpr_frame", mpr_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mpr_frame);
-  gtk_box_pack_start (GTK_BOX (hbox1), mpr_frame, FALSE, FALSE, 0);
-  //gtk_widget_set_size_request(mid_frame, 125, -1);
-  gtk_container_set_border_width (GTK_CONTAINER (mpr_frame), 1);
-
-  /*
-   *The scrolledwindow to contain the MPR node info
-   */
-  mpr_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (mpr_scrolledwindow);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "mpr_scrolledwindow", mpr_scrolledwindow,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  gtk_widget_show (mpr_scrolledwindow);
-  gtk_container_add (GTK_CONTAINER (mpr_frame), mpr_scrolledwindow);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (mpr_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-  gtk_container_set_border_width (GTK_CONTAINER (mpr_scrolledwindow), 3);
-
-
-  /*
-   *The node MID info frame
-   */
-  mid_frame = gtk_frame_new ("MID:");
-  gtk_widget_ref (mid_frame);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "mid_frame", mid_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mid_frame);
-  gtk_box_pack_start (GTK_BOX (hbox1), mid_frame, FALSE, FALSE, 0);
-  //gtk_widget_set_size_request(mid_frame, 125, -1);
-  gtk_container_set_border_width (GTK_CONTAINER (mid_frame), 1);
-
-  /*
-   *The scrolledwindow to contain the MID node info
-   */
-  mid_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (mid_scrolledwindow);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "mid_scrolledwindow", mid_scrolledwindow,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  gtk_widget_show (mid_scrolledwindow);
-  gtk_container_add (GTK_CONTAINER (mid_frame), mid_scrolledwindow);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (mid_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-  gtk_container_set_border_width (GTK_CONTAINER (mid_scrolledwindow), 3);
-
-
-
-  /*
-   *The MPR list
-   */
-  mpr_list = gtk_clist_new (1);
-  gtk_widget_ref (mpr_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "mpr_list", mpr_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mpr_list);
-  gtk_container_add (GTK_CONTAINER (mpr_scrolledwindow), mpr_list);
-  gtk_clist_set_column_width (GTK_CLIST (mpr_list), 0, 120); /* IP */
-  gtk_clist_column_titles_hide (GTK_CLIST (mpr_list));
-
-
-  /*
-   *The MID list
-   */
-  mid_list = gtk_clist_new (1);
-  gtk_widget_ref (mid_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "mid_list", mid_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mid_list);
-  gtk_container_add (GTK_CONTAINER (mid_scrolledwindow), mid_list);
-  gtk_clist_set_column_width (GTK_CLIST (mid_list), 0, 120); /* IP */
-  gtk_clist_column_titles_hide (GTK_CLIST (mid_list));
-
-
-
-
-  /*
-   *The node HNA info frame
-   */
-  hna_frame = gtk_frame_new ("HNA:");
-  gtk_widget_ref (hna_frame);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "hna_frame", hna_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hna_frame);
-  gtk_box_pack_start (GTK_BOX (hbox1), hna_frame, FALSE, FALSE, 0);
-  //gtk_widget_set_size_request(mid_frame, 125, -1);
-  gtk_container_set_border_width (GTK_CONTAINER (hna_frame), 1);
-
-
-
-  /*
-   *The HNA scrolled window
-   */
-  hna_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (hna_scrolledwindow);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "hna_scrolledwindow", hna_scrolledwindow,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  gtk_widget_show (hna_scrolledwindow);
-  gtk_container_add (GTK_CONTAINER (hna_frame), hna_scrolledwindow);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (hna_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-  gtk_container_set_border_width (GTK_CONTAINER (hna_scrolledwindow), 3);
-
-
-  /*
-   *The HNA list
-   */
-  hna_list = gtk_clist_new (1);
-  gtk_widget_ref (hna_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "hna_list", hna_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hna_list);
-  gtk_container_add (GTK_CONTAINER (hna_scrolledwindow), hna_list);
-  gtk_clist_set_column_width (GTK_CLIST (hna_list), 0, 120); /* IP */
-  gtk_clist_column_titles_hide (GTK_CLIST (hna_list));
-
-
-
-
-
-  /*
-   *The "main" notebook page
-   */
-  Main = gtk_label_new ("Main");
-  gtk_widget_ref (Main);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "Main", Main,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (Main);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), Main);
-
-
-
-  /*
-   *The main hbox of the Packet page
-   */
-
-  hbox2 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox2);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "hbox2", hbox2,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox2);
-  gtk_container_add (GTK_CONTAINER (notebook1), hbox2);
-
-
-  /*
-   *The packet hbox
-   */
-  pack_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (pack_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "pack_vbox", pack_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (pack_vbox);
-  gtk_box_pack_start (GTK_BOX (hbox2), pack_vbox, TRUE, TRUE, 0);
-
-
-
-  /*
-   *The packet frame
-   */
-
-  frame2 = gtk_frame_new ("Packet");
-  gtk_widget_ref (frame2);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "frame2", frame2,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame2);
-  gtk_box_pack_start (GTK_BOX (pack_vbox), frame2, TRUE, TRUE, 0); /* Do not expand */
-
-
-  /*
-   *Packet list scrolled window
-   */
-  scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (scrolledwindow4);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "scrolledwindow4", scrolledwindow4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  gtk_widget_show (scrolledwindow4);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-
-  gtk_container_add (GTK_CONTAINER (frame2), scrolledwindow4);
-
-
-
-
-
-  /*
-   *The packet list
-   */
-
-  packet_list = gtk_clist_new (3);
-  gtk_widget_ref (packet_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "packet_list", packet_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (packet_list);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow4), packet_list);
-  gtk_clist_set_column_width (GTK_CLIST (packet_list), 0, 80); /* Type */
-  gtk_clist_set_column_width (GTK_CLIST (packet_list), 1, 150); /* Origin IP */
-  gtk_clist_set_column_width (GTK_CLIST (packet_list), 2, 20); /* size */
-  gtk_clist_column_titles_show (GTK_CLIST (packet_list));
-
-  label17 = gtk_label_new ("Type");
-  gtk_widget_ref (label17);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label17", label17,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label17);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_list), 0, label17);
-
-  label18 = gtk_label_new ("Origin");
-  gtk_widget_ref (label18);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label18", label18,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label18);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_list), 1, label18);
-
-  label19 = gtk_label_new ("Size");
-  gtk_widget_ref (label19);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label19", label19,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label19);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_list), 2, label19);
-
-
-
-  /*
-   *Row selection callback
-   */
-  gtk_signal_connect(GTK_OBJECT(packet_list), "select_row",
-                    GTK_SIGNAL_FUNC(packet_selection),
-                    NULL);
-
-
-
-  /*
-   *The packet button
-   */
-
-  packet_button = gtk_button_new_with_label ("Grab packets");
-  gtk_widget_ref (packet_button);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "packet_button", packet_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  /* Connect the "clicked" signal of the button to our callback */
-  gtk_signal_connect (GTK_OBJECT (packet_button), "clicked",
-                     GTK_SIGNAL_FUNC (packet_callback), NULL);
-  gtk_widget_show (packet_button);
-  gtk_box_pack_start (GTK_BOX (pack_vbox), packet_button, FALSE, FALSE, 5);
-
-
-
-
-
-
-  /*
-   *The packet disp hbox
-   */
-  pack_disp_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (pack_disp_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "pack_disp_vbox", pack_disp_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (pack_disp_vbox);
-  gtk_box_pack_start (GTK_BOX (hbox2), pack_disp_vbox, TRUE, TRUE, 0);
-
-
-
-
-  /*
-   *The packet disp frame
-   */
-
-  disp_frame = gtk_frame_new ("Packet content");
-  gtk_widget_ref (disp_frame);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "disp_frame", disp_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (disp_frame);
-  gtk_box_pack_start (GTK_BOX (pack_disp_vbox), disp_frame, TRUE, TRUE, 0); /* Do not expand */
-
-
-
-  /*
-   *Scrolled window for the packet display
-   *list
-   */
-
-  scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (scrolledwindow3);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "scrolledwindow3", scrolledwindow3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (scrolledwindow3);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-
-  gtk_container_add (GTK_CONTAINER (disp_frame), scrolledwindow3);
-
-  //gtk_box_pack_start (GTK_BOX (disp_frame), scrolledwindow3, TRUE, TRUE, 0);
-
-
-  /*
-   *The packet display list
-   */
-  packet_content_list = gtk_clist_new (4);
-  gtk_widget_ref (packet_content_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "packet_content_list", packet_content_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-
-  gtk_widget_show (packet_content_list);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow3), packet_content_list);
-  gtk_clist_set_column_width (GTK_CLIST (packet_content_list), 0, 70); /* 0-7 */
-  gtk_clist_set_column_justification(GTK_CLIST (packet_content_list), 0, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (packet_content_list), 1, 70); /* 8-15 */
-  gtk_clist_set_column_justification(GTK_CLIST (packet_content_list), 1, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (packet_content_list), 2, 70); /* 16-23 */
-  gtk_clist_set_column_justification(GTK_CLIST (packet_content_list), 2, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (packet_content_list), 3, 70); /* 24-31 */
-  gtk_clist_set_column_justification(GTK_CLIST (packet_content_list), 3, GTK_JUSTIFY_CENTER);
-  gtk_clist_column_titles_show (GTK_CLIST (packet_content_list));
-
-  label13 = gtk_label_new ("0 - 7");
-  gtk_widget_ref (label13);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label13", label13,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label13);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_content_list), 0, label13);
-
-  label14 = gtk_label_new ("8 - 15");
-  gtk_widget_ref (label14);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label14", label14,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label14);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_content_list), 1, label14);
-
-  label15 = gtk_label_new ("16 - 23");
-  gtk_widget_ref (label15);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label15", label15,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label15);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_content_list), 2, label15);
-
-  label16 = gtk_label_new ("24 - 31");
-  gtk_widget_ref (label16);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label16", label16,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label16);
-  gtk_clist_set_column_widget (GTK_CLIST (packet_content_list), 3, label16);
-
-  //gtk_clist_set_selection_mode(GTK_CLIST (packet_content_list), GTK_SELECTION_NONE); /* no selections */
-
-
-
-  /*
-   *The packet button
-   */
-
-  packet_disp_button = gtk_button_new_with_label ("Display hex");
-  gtk_widget_ref (packet_disp_button);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "packet_disp_button", packet_disp_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  /* Connect the "clicked" signal of the button to our callback */
-  gtk_signal_connect (GTK_OBJECT (packet_disp_button), "clicked",
-                     GTK_SIGNAL_FUNC (packet_disp_callback), NULL);
-  gtk_widget_show (packet_disp_button);
-  gtk_box_pack_start (GTK_BOX (pack_disp_vbox), packet_disp_button, FALSE, FALSE, 5);
-
-
-  /*
-   *The "packets" notebook
-   */
-
-  label_packets = gtk_label_new ("Packets");
-  gtk_widget_ref (label_packets);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label_packets", label_packets,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label_packets);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label_packets);
-
-
-
-
-
-
-  /*
-   *The route hbox
-   */
-  route_hbox1 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (route_hbox1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_hbox1", route_hbox1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_hbox1);
-  //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1);
-  gtk_container_add (GTK_CONTAINER (notebook1), route_hbox1);
-
-
-
-
-  /*
-   *The routes frame
-   */
-
-  route_frame = gtk_frame_new ("OLSR routes in kernel:");
-  gtk_widget_ref (route_frame);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_frame", route_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_frame);
-
-  //gtk_container_add (GTK_CONTAINER (notebook1), route_frame);
-  gtk_widget_set_size_request(route_frame, 200, -1);
-  gtk_box_pack_start (GTK_BOX (route_hbox1), route_frame, TRUE, TRUE, 0); /* Do not expand */
-
-
-
-  /*
-   *Scrolled window for the packet display
-   *list
-   */
-
-  route_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (route_scrolledwindow);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_scrolledwindow", route_scrolledwindow,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_scrolledwindow);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (route_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-
-  gtk_container_add (GTK_CONTAINER (route_frame), route_scrolledwindow);
-
-  //gtk_box_pack_start (GTK_BOX (route_frame), scrolledwindow3, TRUE, TRUE, 0);
-
-
-  /*
-   *The routes display list
-   */
-  route_list = gtk_clist_new (4);
-  gtk_widget_ref (route_list);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_list", route_list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  gtk_widget_show (route_list);
-  gtk_container_add (GTK_CONTAINER (route_scrolledwindow), route_list);
-  gtk_clist_set_column_width (GTK_CLIST (route_list), 0, 120); /* dest */
-  //gtk_clist_set_column_justification(GTK_CLIST (route_list), 0, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (route_list), 1, 120); /* gw */
-  //gtk_clist_set_column_justification(GTK_CLIST (route_list), 1, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (route_list), 2, 50); /* weight */
-  gtk_clist_set_column_justification(GTK_CLIST (route_list), 2, GTK_JUSTIFY_CENTER);
-  gtk_clist_set_column_width (GTK_CLIST (route_list), 3, 70); /* interface */
-  gtk_clist_set_column_justification(GTK_CLIST (route_list), 3, GTK_JUSTIFY_CENTER);
-  gtk_clist_column_titles_show (GTK_CLIST (route_list));
-
-  route_label1 = gtk_label_new ("Destination");
-  gtk_widget_ref (route_label1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_label1", route_label1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_label1);
-  gtk_clist_set_column_widget (GTK_CLIST (route_list), 0, route_label1);
-
-  route_label2 = gtk_label_new ("Gateway");
-  gtk_widget_ref (route_label2);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_label2", route_label2,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_label2);
-  gtk_clist_set_column_widget (GTK_CLIST (route_list), 1, route_label2);
-
-  route_label3 = gtk_label_new ("Weight");
-  gtk_widget_ref (route_label3);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_label3", route_label3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_label3);
-  gtk_clist_set_column_widget (GTK_CLIST (route_list), 2, route_label3);
-
-  route_label4 = gtk_label_new ("Interface");
-  gtk_widget_ref (route_label4);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_label4", route_label4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_label4);
-  gtk_clist_set_column_widget (GTK_CLIST (route_list), 3, route_label4);
-
-  //gtk_clist_set_selection_mode(GTK_CLIST (route_list), GTK_SELECTION_NONE); /* no selections */
-
-
-
-  /*
-   *The routes stats frame
-   */
-
-  route_stats_frame = gtk_frame_new ("Stats:");
-  gtk_widget_ref (route_stats_frame);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "route_stats_frame", route_stats_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (route_stats_frame);
-
-  //gtk_container_add (GTK_CONTAINER (notebook1), route_frame);
-  gtk_box_pack_start (GTK_BOX (route_hbox1), route_stats_frame, TRUE, TRUE, 1);
-
-
-
-
-
-  /*
-   *The "routes" notebook
-   */
-  label_routes = gtk_label_new ("Routes");
-  gtk_widget_ref (label_routes);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "label_routes", label_routes,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label_routes);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label_routes);
-
-
-
-
-  empty1 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_show (empty1);
-  gtk_container_add (GTK_CONTAINER (notebook1), empty1);
-
-
-
-
-
-
-
-  /*
-   *The "traffic" notebook
-   */
-  traffic_label = gtk_label_new ("Traffic");
-  gtk_widget_ref (traffic_label);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "traffic_label", traffic_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (traffic_label);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), traffic_label);
-  
-
-
-
-
-  /*
-   *The settings hbox
-   */
-  settings_hbox1 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (settings_hbox1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "settings_hbox1", settings_hbox1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (settings_hbox1);
-  //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1);
-  gtk_container_add (GTK_CONTAINER (notebook1), settings_hbox1);
-
-
-
-  /*
-   *The settings-info label field
-   */
-  info_label = gtk_label_new(NULL);
-  gtk_widget_ref (info_label);
-  gtk_misc_set_alignment((GtkMisc *)info_label, 0, 0);
-  //gtk_label_set_justify((GtkLabel *)net_label,GTK_JUSTIFY_LEFT);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "info_label", info_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  //set_net_info("Not connected...");
-  gtk_widget_show (info_label);
-  gtk_box_pack_start (GTK_BOX (settings_hbox1), info_label, TRUE, TRUE, 0);
-
-
-  /*
-   *The "settings" notebook
-   */
-  settings_label = gtk_label_new ("Settings");
-  gtk_widget_ref (settings_label);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "settings_label", settings_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (settings_label);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 4), settings_label);
-
-
-
-
-
-
-
-  /*
-   *The "about" hbox
-   */
-  about_hbox1 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (about_hbox1);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "about_hbox1", about_hbox1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (about_hbox1);
-  //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1);
-  gtk_container_add (GTK_CONTAINER (notebook1), about_hbox1);
-  gtk_container_set_border_width (GTK_CONTAINER (about_hbox1), 10);
-
-
-  /*
-   *The about label field
-   */
-  about_label = gtk_label_new(NULL);
-  gtk_widget_ref (about_label);
-  gtk_misc_set_alignment((GtkMisc *)about_label, 0, 0);
-  gtk_label_set_justify((GtkLabel *)about_label,GTK_JUSTIFY_CENTER);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "about_label", about_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-
-  //set_net_info("Not connected...");
-  gtk_widget_show (about_label);
-  gtk_box_pack_start (GTK_BOX (about_hbox1), unik_logo, TRUE, TRUE, 0);
-  gtk_box_pack_start (GTK_BOX (about_hbox1), about_label, TRUE, TRUE, 0);
-  gtk_widget_show (unik_logo);
-
-
-  gtk_label_set_text((GtkLabel *)about_label, "OLSRD-GUI by Andreas Tonnesen (andreto@ifi.uio.no)");
-
-
-  /*
-   *The "about" notebook
-   */
-  label3 = gtk_label_new ("About");
-  gtk_widget_ref (label3);
-  gtk_object_set_data_full (GTK_OBJECT (main_window), "About", label3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label3);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 5), label3);
-
-
-
-  return main_window;
-
-}
-
-
-
-
-/*
- *Add a node to the node list
- */
-void
-route_list_add(char *dest, char *gw, char *metric, char *dev)
-{
-  gchar *tmp[4] = {dest, gw, dev, metric};
-  route_list_size++;
-
-  gtk_clist_freeze(GTK_CLIST(route_list));
-
-  gtk_clist_append(GTK_CLIST(route_list), tmp);
-
-  gtk_clist_thaw(GTK_CLIST(route_list));
-
-}
-
-
-/*
- *Update the entyr with IP 'addr'
- */
-void
-route_list_update(char *addr)
-{
-
-}
-
-
-/*
- *Delete a node from the node list
- */
-int
-route_list_del(char *dest)
-{
-  int i = 0;
-  char *ip;
-
-  gtk_clist_freeze(GTK_CLIST(route_list));
-
-  for(i = 0; i < route_list_size; i++)
-    {
-      gtk_clist_get_text(GTK_CLIST(route_list), i, 0, (gchar **) &ip);
-      if(strcmp(dest, ip) == 0)
-       {
-         //printf("Found %d\n", i);
-         gtk_clist_remove(GTK_CLIST(route_list), i);
-         route_list_size--;
-         gtk_clist_thaw(GTK_CLIST(route_list));
-         return 1;
-       }
-    }
-
-  gtk_clist_thaw(GTK_CLIST(route_list));
-  return 0;  
-}
-
-
-
-/*
- *Remove a node from the list
- */
-int
-remove_nodes_list(union olsr_ip_addr *node)
-{
-  char *ip;
-  char *in_ip = ip_to_string(node);
-  int i;
-
-  for(i = 0; i < node_list_size; i++)
-    {
-      gtk_clist_get_text(GTK_CLIST(node_list), i, 0, (gchar **) &ip);
-      if(strcmp(in_ip, ip) == 0)
-       {
-         //printf("Found entry!\n");
-         gtk_clist_remove(GTK_CLIST(node_list), i);
-         node_list_size--;
-         return 1;
-       }
-    }
-
-  return 0;
-}
-
-
-
-
-/*
- *If the node passed as a parameter exists then
- *update it. If not add it to the list
- */
-void
-update_nodes_list(struct node *node)
-{
-  int i = 0;
-  char *ip;
-  int found = 0;
-  char *dest;
-  char *tmp[9] = {"","","","","","","","",""};
-  char timer[20];
-  struct tm *time_st;
-  char itoa_buf[10];
-
-  if(memcmp(&node->addr, &main_addr, ipsize) == 0)
-    dest = "localhost";
-  else
-    dest = ip_to_string(&node->addr);
-
-  gtk_clist_freeze(GTK_CLIST(node_list));
-
-  while((i < node_list_size) && !found)
-    {
-      gtk_clist_get_text(GTK_CLIST(node_list), i, 0, (gchar **) &ip);
-      if(strcmp(dest, ip) == 0)
-       found = 1;
-      i++;
-    }
-
-  /* Update node */
-  if(found)
-    {
-      i--; /* Go backt to the right row */
-      //printf("Updating %s\n\n", ip_to_string(&node->addr));
-      /* don't update main addr */
-      /* Gateway */
-      if(memcmp(&node->addr, &main_addr, ipsize) != 0)
-       {
-         if(memcmp(&node->gw_addr, &null_addr, ipsize) != 0)
-           gtk_clist_set_text(GTK_CLIST(node_list), i, 1, ip_to_string(&node->gw_addr));
-         /* Weigth */
-         if(node->hopcount != 0)
-           {
-             gui_itoa(node->hopcount, itoa_buf);
-             gtk_clist_set_text(GTK_CLIST(node_list), i, 2, itoa_buf);
-           }
-         /* Device */
-         gtk_clist_set_text(GTK_CLIST(node_list), i, 3, &node->dev[0]);
-       }
-
-
-      /* Timer */
-      if(node->timer.tv_usec)
-      {
-       memset(&timer[0], 0, 20);
-       time_st = gmtime((time_t *)&node->timer.tv_sec);
-       sprintf(&timer[0], "%02d:%02d:%02d", time_st->tm_hour, time_st->tm_min, time_st->tm_sec);
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 4, &timer[0]);
-      }
-
-
-      /* MID */
-      if(node->mid.next != &node->mid)
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 5, "yes");
-      else
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 5, "no");
-      /* HNA */
-      if(node->hna.next != &node->hna)
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 6, "yes");
-      else
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 6, "no");
-               
-    }
-  /* Add new node */
-  else
-    {
-      i = node_list_size;
-      /* Create entry */
-      gtk_clist_insert(GTK_CLIST(node_list), i, tmp);
-      /* Main address */
-      gtk_clist_set_text(GTK_CLIST(node_list), i, 0, dest);
-      if(memcmp(&node->addr, &main_addr, ipsize) == 0)
-       {
-         if(memcmp(&node->gw_addr, &null_addr, ipsize) != 0)
-           gtk_clist_set_text(GTK_CLIST(node_list), i, 1, ip_to_string(&node->gw_addr));
-         /* Weigth */
-         if(node->hopcount != 0)
-           {
-             gui_itoa(node->hopcount, itoa_buf);
-             gtk_clist_set_text(GTK_CLIST(node_list), i, 2, itoa_buf);
-           }
-         /* Device */
-         gtk_clist_set_text(GTK_CLIST(node_list), i, 3, &node->dev[0]);
-       }
-
-      /* MID */
-      if(node->mid.next != &node->mid)
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 5, "yes");
-      else
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 5, "no");
-      /* HNA */
-      if(node->hna.next != &node->hna)
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 6, "yes");
-      else
-       gtk_clist_set_text(GTK_CLIST(node_list), i, 6, "no");
-
-      node_list_size++;
-    }
-
-  gtk_clist_thaw(GTK_CLIST(node_list));
-
-
-}
-
-
-
-
-/*
- *Add a packet to the packet list
- */
-void
-packet_list_add(char *type, char *from, char *length)
-{
-  gchar *nfo[3] = {type, from, length};
-
-  //if(!freeze_packets)
-    //{
-      if(packet_list_size >= MAXPACKS)
-       gtk_clist_remove(GTK_CLIST(packet_list), MAXPACKS-1);
-      else
-       packet_list_size++;
-
-      gtk_clist_prepend(GTK_CLIST(packet_list), nfo );
-
-      //}
-
-}
-
-
-
-
-
-void selection_made( GtkWidget      *clist,
-                     gint            row,
-                     gint            column,
-                    GdkEventButton *event,
-                     gpointer        data )
-{
-    gchar *ip, *hops, *gw, *dev;
-    const gchar text[100];
-    /* Get the text that is stored in the selected row and column
-     * which was clicked in. We will receive it as a pointer in the
-     * argument text.
-     */
-    gtk_clist_get_text(GTK_CLIST(clist), row, 0, &ip);
-    gtk_clist_get_text(GTK_CLIST(clist), row, 1, &gw);
-    gtk_clist_get_text(GTK_CLIST(clist), row, 2, &hops);
-    gtk_clist_get_text(GTK_CLIST(clist), row, 3, &dev);
-
-    /* Just prints some information about the selected row */
-    sprintf((char *)&text[0], "IP:%s\nGATEWAY:%s\nHOPCOUNT:%s\nINTERFACE:%s\n",
-           ip, gw, hops, dev);
-
-    //gtk_text_buffer_set_text (textBuffer, text, -1);
-
-    //gtk_text_view_set_buffer((GtkTextView *)text1, textBuffer);
-
-    //gtk_widget_show (text1);
-
-
-    return;
-}
-
-
-
-
-
-
-
-void
-node_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data)
-{
-
-  gchar *text;
-  struct node *host;
-  struct mid *mids;
-  struct mpr *mprs;
-  struct hna *hnas;
-  int i;
-  gchar *tmpshit[1] = {""};
-
-  /*
-   *Clear the lists
-   */
-  gtk_clist_clear(GTK_CLIST(mid_list));
-  gtk_clist_clear(GTK_CLIST(mpr_list));
-  gtk_clist_clear(GTK_CLIST(hna_list));
-  i = 0;
-
-  /*
-   *Get th IP address
-   */
-  gtk_clist_get_text(GTK_CLIST(node_list), row, 0, &text);
-
-  /* Get the node */
-  if(strncmp(text, "localhost", sizeof("localhost")) == 0)
-    host = find_node_t(&main_addr);
-  else
-    host = find_node(text);
-
-
-
-  if(host)
-    {
-      /* Timeout the registered MPRs for this node */
-      time_out_mprs(&host->addr);
-
-      /* Get mpr pointer AFTER timeout....(another waisted hour...) */ 
-      mprs = host->mpr.next;
-      mids = host->mid.next;
-      hnas = host->hna.next;
-
-      while (mids != &host->mid)
-       {
-         gtk_clist_append(GTK_CLIST(mid_list), tmpshit);
-         gtk_clist_set_text(GTK_CLIST(mid_list), i, 0, ip_to_string(&mids->alias));
-         i++;
-         mids = mids->next;
-       }
-
-      i = 0;
-
-
-      while (mprs != &host->mpr)
-       {
-         //printf("ADDING MPR : %s\n", ip_to_string(&mprs->addr));fflush(stdout);
-         gtk_clist_append(GTK_CLIST(mpr_list), tmpshit);
-         gtk_clist_set_text(GTK_CLIST(mpr_list), i, 0, ip_to_string(&mprs->addr));
-         i++;
-         mprs = mprs->next;
-       }
-      i = 0;
-
-      while (hnas != &host->hna)
-       {
-         gtk_clist_append(GTK_CLIST(hna_list), tmpshit);
-         gtk_clist_set_text(GTK_CLIST(hna_list), i, 0, ip_to_string(&hnas->net));
-         i++;
-         hnas = hnas->next;
-       }
-
-    }
-  else
-    {
-      printf("Could not find info about %s!\n", text);
-    }
-
-
-}
-
-
-
-
-void
-packet_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data)
-{
-  /* Fetch the packet from the cache */
-  union olsr_message *pack;
-  char *packet;
-  int y, x;
-  short size;
-  char *content[4];
-  int mem_size = 10;
-
-  content[0] = (char *)malloc(mem_size);
-  content[1] = (char *)malloc(mem_size);
-  content[2] = (char *)malloc(mem_size);
-  content[3] = (char *)malloc(mem_size);
-
-
-  pack = get_packet(row);
-  packet = (char *)pack;
-
-  //printf("Got the packet at row %d...\n", row);
-
-  gtk_clist_clear(GTK_CLIST(packet_content_list));
-
-  size = ntohs(pack->v4.olsr_msgsize);
-  
-  for(y = 0; y < size;y += 4)
-    {
-
-      for(x = 0; x < 4; x++)
-       {
-         if(display_dec)
-           sprintf(content[x], "%03i", (u_char) packet[y+x]); /* Decimal format */
-         else
-           sprintf(content[x], "%02x", (u_char) packet[y+x]); /* Hex format */     
-       }
-
-      gtk_clist_append(GTK_CLIST(packet_content_list), content);
-    }
-
-  free(content[0]);
-  free(content[1]);
-  free(content[2]);
-  free(content[3]);
-
-}
-
-
-
-
-
-
-
-void
-set_net_info(gchar *info, int disp_button)
-{
-  gchar title[255];
-
-  memset(&title[0], 0, 255);
-  gtk_label_set_text((GtkLabel *)info_label, info); 
-  gtk_label_set_text((GtkLabel *)net_label, "Connected\nto localhost"); 
-
-  strcat(title, SOFTWARE_VERSION);
-  strcat(title, " - ");
-  strcat(title, ip_to_string(&main_addr));
-
-  gtk_window_set_title (GTK_WINDOW (main_window), title);
-
-  if(disp_button)
-    gtk_widget_show(connect_button);
-  else 
-    gtk_widget_hide(connect_button);
-}
-
-
-
-void
-set_net_info_offline()
-{
-  gtk_label_set_text((GtkLabel *)net_label, "Connection refused...");
-  gtk_widget_show(connect_button);
-}
-
-void
-set_net_info_connecting()
-{
-  gtk_label_set_text((GtkLabel *)net_label, "Connecting to localhost...");  
-}
-
-
-
-void
-column_clicked_callback(GtkWidget *list,gint column)
-{
-
-  //printf("You pressed %d\n",column);
-
-}
-
-
-/*
- *Connect button callback
- */
-void 
-connect_callback( GtkWidget *widget,
-                 gpointer   data )
-{
-  ipc_connect();
-}
-
-
-
-/*
- *Packet button callback
- */
-void 
-packet_callback( GtkWidget *widget,
-                 gpointer   data )
-{
-  if(freeze_packets)
-    {
-      freeze_packets = 0;
-      gtk_button_set_label(GTK_BUTTON(packet_button), "Freeze packets");
-    }
-  else
-    {
-      freeze_packets = 1;
-      gtk_button_set_label(GTK_BUTTON(packet_button), "Grab packets");
-    }
-}
-
-
-
-/*
- *Packet display button callback
- */
-void 
-packet_disp_callback( GtkWidget *widget,
-                 gpointer   data )
-{
-  if(display_dec)
-    {
-      display_dec = 0;
-      gtk_button_set_label(GTK_BUTTON(packet_disp_button), "Display decimal");
-    }
-  else
-    {
-      display_dec = 1;
-      gtk_button_set_label(GTK_BUTTON(packet_disp_button), "Display hex");
-    }
-}
-
-
-
-void
-gui_shutdown(GtkObject *object, gpointer user_data)
-{
-  printf("Shutting down...\n");
-
-  if(ipc_close() < 0)
-    printf("Could not close socket!\n");
-
-  printf("BYE-BYE!\n");
-  exit(0);
-
-}
-
-
diff --git a/front-end/src/interface.h b/front-end/src/interface.h
deleted file mode 100644 (file)
index 67fd124..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <time.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <gdk/gdk.h>
-#include <gdk/gdkkeysyms.h>
-
-
-
-void
-fill_clist(GtkCList *);
-
-
-void selection_made( GtkWidget      *clist,
-                     gint            row,
-                     gint            column,
-                    GdkEventButton *event,
-                     gpointer        data );
-
-
-void
-set_net_info_connecting();
-
-void
-column_clicked_callback(GtkWidget *,gint);
-
-
-void 
-connect_callback( GtkWidget *widget,
-                 gpointer   data );
-
-void 
-packet_callback( GtkWidget *widget,
-                 gpointer   data );
-
-void 
-packet_disp_callback( GtkWidget *widget,
-                 gpointer   data );
-
-
-void
-packet_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data);
-
-
-void
-node_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data);
-
-
-void
-gui_shutdown(GtkObject *, gpointer);
diff --git a/front-end/src/ipc.c b/front-end/src/ipc.c
deleted file mode 100644 (file)
index 40fc127..0000000
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include "common.h"
-#include "ipc.h"
-#include "packet.h"
-#include "routes.h"
-
-#ifdef WIN32
-#define close(x) closesocket(x)
-#undef errno
-#define errno WSAGetLastError()
-#undef strerror
-#define strerror(x) StrError(x)
-#define perror(x) WinSockPError(x)
-#endif
-
-int ipc_socket = 0;
-
-int
-ipc_get_socket()
-{
-  struct hostent *hp;
-  char *addr;
-  struct in_addr *in;
-  int sock;
-  //int flags;
-
-  
-  if ((hp = gethostbyname("localhost")) == 0) 
-    {
-      perror("gethostbyname");
-      exit(1);
-    }
-
-  in = (struct in_addr *) hp->h_addr;
-  addr = inet_ntoa(*in);
-  printf("Address: %s\n", addr);
-
-  /* fill in the socket structure with host information */
-  memset(&pin, 0, sizeof(pin));
-  pin.sin_family = AF_INET;
-  pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
-  pin.sin_port = htons(IPC_PORT);
-
-  /* grab an UNIX domain socket */
-  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
-    {
-      perror("socket");
-      exit(1);
-    }
-
-  printf("Socket: %d\n", sock);
-
-  /* Setting socket non-blocking */  
-  /*  
-  if ((flags = fcntl(sock, F_GETFL, 0)) < 0)
-    {
-      fprintf(stderr,"Error getting socket flags!\n");
-      exit(1);
-    }
-  
-  
-  if (fcntl(sock, F_SETFL, flags | O_NONBLOCK) < 0)
-    {
-      fprintf(stderr,"Error setting socket flags!\n");
-      exit(1);
-    }
-  */
-
-  return sock;
-
-}
-
-
-
-int
-ipc_close()
-{
-
-  if(close(ipc_socket))
-    return 1;
-  
-  return 0;
-}
-
-
-
-int
-ipc_connect()
-{
-#ifdef WIN32
-  int On = 1;
-  unsigned long Len;
-#else
-  int flags;
-#endif
-
-  connected = 0;
-
-  printf("Attempting connect...");
-
-  if(!ipc_socket)
-    ipc_socket = ipc_get_socket();
-
-  /* connect to PORT on HOST */
-  if (connect(ipc_socket,(struct sockaddr *)  &pin, sizeof(pin)) < 0) 
-    {
-      fprintf(stderr, "Error connecting %d - %s\n", errno, strerror(errno));
-      set_net_info_offline();
-      printf("connection refused\n");
-    }
-  else 
-    {
-      set_net_info("Connected!", FALSE);
-      printf("Connected!!\n");
-
-      /* Setting socket non-blocking */  
-      
-#ifdef WIN32
-      if (WSAIoctl(ipc_socket, FIONBIO, &On, sizeof (On), NULL, 0, &Len,
-                   NULL, NULL) < 0)
-        {
-          fprintf(stderr, "Error while making socket non-blocking!\n");
-          exit(1);
-        }
-#else
-      if ((flags = fcntl(ipc_socket, F_GETFL, 0)) < 0)
-       {
-         fprintf(stderr,"Error getting socket flags!\n");
-         exit(1);
-       }
-      
-      
-      if (fcntl(ipc_socket, F_SETFL, flags | O_NONBLOCK) < 0)
-       {
-         fprintf(stderr,"Error setting socket flags!\n");
-         exit(1);
-       }
-#endif      
-      connected = 1;
-      
-      return 1;
-    }
-  
-  return 0;
-
-}
-
-
-int
-ipc_read()
-{
-  //int x, i;
-  int bytes, tmp_len;
-  char *tmp;
-  union olsr_message *msg;
-  union 
-  {
-    char       buf[BUFFSIZE+1];
-    union      olsr_message olsr_msg;
-  } inbuf;
-  //char buf[BUFFSIZE+1];
-
-  //printf(".");fflush(stdout);
-  memset(&inbuf, 0, sizeof(BUFFSIZE+1));
-  //buf[0] = '\0';
-
-  if(connected)
-    {
-      bytes = recv(ipc_socket, (char *)&inbuf, BUFFSIZE, 0);
-      if (bytes == 0)
-        {
-          shutdown(ipc_socket, SHUT_RDWR);
-         set_net_info("Disconnected from server...", TRUE);
-          connected = 0;
-         close(ipc_socket);
-        }
-     
-      if(bytes > 0)
-       {
-          
-         tmp = (char *) &inbuf.olsr_msg;
-       
-         /*    
-         x = 0;
-         printf("\n\t");
-         for(i = 0; i < bytes;i++)
-           {
-             if(x == 4)
-               {
-                 x = 0;
-                 printf("\n\t");
-               }
-             x++;
-             printf(" %03i", (u_char) tmp[i]);
-           }
-         
-         printf("\n\nBytes read: %d - msg_size: %d\n", bytes, ntohs(inbuf.olsr.v4.olsr_packlen));
-         */
-         
-         msg = &inbuf.olsr_msg;
-
-         /* There can be(there probably are!) several packets in the buffer */
-
-         /* Should be the same for v4 and v6 */
-         if(ntohs(inbuf.olsr_msg.v4.olsr_msgsize) < bytes)
-           {
-             //printf("chomping...\n");
-             while(ntohs(msg->v4.olsr_msgsize) < bytes)
-               {
-                 ipc_evaluate_message(msg);
-
-                 tmp_len = ntohs(msg->v4.olsr_msgsize);
-                 msg = (union olsr_message *) &tmp[tmp_len];
-                 tmp = &tmp[tmp_len];
-                 if(tmp_len == 0)
-                   break;
-                 bytes = bytes - tmp_len;
-
-                 tmp_len = ntohs(msg->v4.olsr_msgsize);
-
-                 //printf("%d/%d ", tmp_len, bytes);
-                 /* Copy to start of buffer */
-                 if(tmp_len > bytes)
-                   {
-                     /* Copy the buffer */
-                     //printf("READING END OF MESSAGE. %d bytes\n", tmp_len-bytes);
-                     //printf("\tCopying %d bytes\n", bytes);
-                     memcpy(&inbuf, tmp, bytes);
-                     //printf("\tRecieving %d bytes to buffer[%d]\n", tmp_len-bytes, bytes);
-                     bytes = recv(ipc_socket, (char *)&inbuf.buf[bytes], tmp_len-bytes, 0);
-                     //printf("\tBytes: %d Size: %d\n", bytes, ntohs(msgs->v4.olsr_packlen));
-                     tmp = (char *)&inbuf.olsr_msg;
-                     msg = (union olsr_message *) tmp;
-                   }
-               }
-             //printf("\n");
-           }
-         
-         /* Only one (or the last) message */
-         ipc_evaluate_message(msg);
-
-       }
-
-    }
-
-
-
-  return 1;
-}
-
-
-
-
-int
-ipc_send()
-{
-
-
-  return 1;
-}
-
-
-
-
-
-int
-ipc_evaluate_message(union olsr_message *olsr_in)
-{
-  int ipc_pack = 0;
-  olsr_u8_t type;
-  int msgsize;
-  char itoa_buf[10];
-  olsr_u8_t vtime;
-  union olsr_ip_addr *originator;
-
-  /* Find size, vtime, originator and type - same for IPv4 and 6 */
-  type = olsr_in->v4.olsr_msgtype;
-  msgsize = ntohs(olsr_in->v4.olsr_msgsize);
-  vtime = olsr_in->v4.olsr_vtime;
-  originator = (union olsr_ip_addr *)&olsr_in->v4.originator;
-
-  gui_itoa(msgsize, itoa_buf);
-
-  switch(type)
-    {
-    case HELLO_MESSAGE:
-      //printf("Recieved HELLO packet\n");
-      if(!freeze_packets)
-       packet_list_add("HELLO", ip_to_string(originator), itoa_buf);
-
-      if(ipversion == AF_INET)
-       {
-         process_hello(msgsize, vtime, originator, (union hello_message *)&olsr_in->v4.message.hello);
-       }
-      else
-       {
-         process_hello(msgsize, vtime, originator, (union hello_message *)&olsr_in->v6.message.hello);
-       }
-      break;
-
-    case TC_MESSAGE:
-      if(!freeze_packets)
-       packet_list_add("TC", ip_to_string(originator), itoa_buf);
-      
-      if(ipversion == AF_INET)
-       {
-         process_tc(msgsize, vtime, originator, (union tc_message *)&olsr_in->v4.message.tc);
-         //printf("Recieved TC packet from %s\n", ip_to_string(&m->olsr_tc->tc_origaddr));
-       }
-      else
-       {
-         process_tc(msgsize, vtime, originator, (union tc_message *)&olsr_in->v6.message.tc);
-         //printf("Recieved TC packet from %s\n", ip_to_string(&m->olsr_tc->tc_origaddr));
-       }
-      break;
-
-    case MID_MESSAGE:
-      if(!freeze_packets)
-       packet_list_add("MID", ip_to_string(originator), itoa_buf);
-      if(ipversion == AF_INET)
-       {
-         process_mid(msgsize, vtime, originator, (union mid_message *)&olsr_in->v4.message.mid);
-         //printf("Recieved MID packet from %s\n", ip_to_string(&m->olsr_mid->mid_origaddr));
-       }
-      else
-       {
-         process_mid(msgsize, vtime, originator, (union mid_message *)&olsr_in->v6.message.mid);
-         //printf("Recieved MID packet from %s\n", ip_to_string(&m->olsr_mid->mid_origaddr));
-       }
-      
-      break;
-
-    case HNA_MESSAGE:
-
-      if(!freeze_packets)
-       packet_list_add("HNA", ip_to_string(originator), itoa_buf);
-      if(ipversion == AF_INET)
-       {
-         process_hna(msgsize, vtime, originator, (union hna_message *)&olsr_in->v4.message.hna);
-         //printf("Recieved HNA packet\n");
-       }
-      else
-       {
-         process_hna(msgsize, vtime, originator, (union hna_message *)&olsr_in->v6.message.hna);
-         //printf("Recieved HNA packet\n");
-       }
-      
-      break;
-
-    case IPC_MESSAGE:
-      //printf("Recieved IPC packet\n");
-      ipc_pack = 1; /* Don't add to buffer */
-      ipc_eval_route_packet((struct routemsg *) olsr_in);      
-      break;
-    case IPC_NET:
-      //printf("Recieved IPC packet\n");
-      ipc_pack = 1; /* Don't add to buffer */
-      ipc_eval_net_info((struct netmsg *) olsr_in);      
-      break;
-    default:
-      if(!freeze_packets)
-       packet_list_add("UNKNOWN", "?", "?");
-
-       printf("Unknown packet type %d\n", type);
-      
-    }
-  
-  if(!freeze_packets && !ipc_pack)
-    {
-         add_packet_to_buffer(olsr_in, msgsize);
-    }
-
-
-  return 1;
-}
-
-
-
-int
-ipc_eval_net_info(struct netmsg *msg)
-{
-  char info[256];
-  printf("Evaluating NET info...\n");
-
-  /*
-  printf("\tMain address: %s\n", ip_to_string(&msg->main_addr));
-  printf("\tMid adresses: %d\n", msg->mids);
-  printf("\tHna adresses: %d\n", msg->hnas);
-  printf("\tHELLO interval: %f\n", (float)(ntohs(msg->hello_int)));
-  printf("\tHELLO LAN interval: %f\n", (float)(ntohs(msg->hello_lan_int)));
-  printf("\tTC interval: %d\n", ntohs(msg->tc_int));
-  printf("\tNeighbor hold time: %d\n", ntohs(msg->neigh_hold));
-  printf("\tTopology hold: %d\n", ntohs(msg->topology_hold));
-  */
-  if(msg->ipv6 == 0)
-    {
-      ipversion = AF_INET;
-      ipsize = sizeof(struct in_addr);
-      sprintf(&info[0],"IP version 4\nMain address: %s\nMid addresses: %d\nHna addresses: %d\nHELLO interval: %d\nHELLO LAN interval: %d\nTC interval: %d\nNeighbor hold time: %d\nTopology hold: %d\n", ip_to_string(&msg->main_addr), msg->mids, msg->hnas, ntohs(msg->hello_int), ntohs(msg->hello_lan_int), ntohs(msg->tc_int), ntohs(msg->neigh_hold), ntohs(msg->topology_hold));
-   }
-  else
-    {
-      ipversion = AF_INET6;
-      ipsize = sizeof(struct in6_addr);
-      sprintf(&info[0],"IP version 6\nMain address: %s\nMid addresses: %d\nHna addresses: %d\nHELLO interval: %d\nHELLO LAN interval: %d\nTC interval: %d\nNeighbor hold time: %d\nTopology hold: %d\n", ip_to_string(&msg->main_addr), msg->mids, msg->hnas, ntohs(msg->hello_int), ntohs(msg->hello_lan_int), ntohs(msg->tc_int), ntohs(msg->neigh_hold), ntohs(msg->topology_hold));
-    }
-
-
-
-  memcpy(&main_addr, &msg->main_addr, ipsize);
-
-  set_net_info(&info[0], 0);
-
-
-  return 0;
-}
-
-
-int
-ipc_eval_route_packet(struct routemsg *msg)
-{
-  struct route_entry rt_ent;
-  char dev[5];
-  char gw[16];
-  char itoa_buf[10];
-  dev[4] = '\0';
-  memset(&gw[0], 0, 16);
-
-  printf("Processing route packet\n"); 
-
-  memset(rt_ent.if_name, 0, MAX_IF_NAMESIZ);
-  
-  /* Fill struct */
-  
-  memcpy(&rt_ent.gw, &msg->gateway_addr, ipsize);
-  memcpy(&rt_ent.dst, &msg->target_addr, ipsize);
-  memcpy(rt_ent.if_name, msg->device, 4);
-  rt_ent.hopcnt = msg->metric;
-
-  if(msg->add)
-    {
-      memcpy(&dev[0], &msg->device[0], 4);
-
-      /*Add node to node list */
-      memcpy(&gw[0], ip_to_string(&msg->gateway_addr), 16);
-
-      gui_itoa(msg->metric, itoa_buf);
-
-      route_list_add(ip_to_string(&msg->target_addr),
-                    gw,
-                    dev,
-                    itoa_buf);
-
-      printf("\tRoute to %s(hc %d) added\n", ip_to_string(&msg->target_addr), rt_ent.hopcnt);
-
-      /*
-      printf("\tRoute to %s added\n", ip_to_string(&msg->target_addr));
-      printf("\tGateway %s\n", gw);
-      printf("\tInterface %s\n", msg->device);
-      printf("\tMetric %d\n", msg->metric);
-      */
-    }
-  else
-    {
-
-      if(route_list_del(ip_to_string(&msg->target_addr)) < 1)
-       printf("COULD NOT FIND ROUTE TO DELETE!\n\n");
-
-      printf("\tRoute to %s deleted\n", ip_to_string(&msg->target_addr));
-    }
-  return 1;
-}
-
-
-
-
-int
-process_hello(int size, olsr_u8_t vtime, union olsr_ip_addr *originator, union hello_message *m)
-{
-  struct hellinfo *neigh;
-  struct hellinfo6 *neigh6;
-  int i;
-  int nsize;
-  int type, link;
-
-
-  printf("Processing HELLO from %s size = %d\n", ip_to_string(originator), size);
-
-
-  if(!update_timer_node(originator, vtime))
-    add_node(originator, vtime);
-
-  /* Add neighbors if any */
-  size = size - 4 - 8 - ipsize; /* size of neighbors(size - olsrheder- helloheader) */
-
-  if(!size)
-    return 0;
-
-
-  /* Get the neighbortype-blocks start */
-  neigh = m->v4.hell_info;
-  neigh6 = m->v6.hell_info;
-
-  //printf("HELLO Size: %d\n", size);
-
-  while(size > 0)
-    {
-
-      //printf("\tNEIGH: 0x%x\n", (int)neigh);
-      if(ipversion == AF_INET)
-       {
-         nsize = ntohs(neigh->size);
-         type = EXTRACT_STATUS(ntohs(neigh->link_code));
-         link = EXTRACT_LINK(ntohs(neigh->link_code));
-         //printf("TYPE: %d\n", neigh->link_code);
-       }
-      else
-       {
-         nsize = ntohs(neigh6->size);
-         type = EXTRACT_STATUS(ntohs(neigh6->link_code));
-         link = EXTRACT_LINK(ntohs(neigh6->link_code));
-       }
-
-
-      size -= nsize;
-
-      nsize = nsize - 4; /* - hellinfo header */
-      //printf("Size left: %d Current hellinfo: %d\n", size, nsize);
-      i = 0;
-      while(nsize > 0)
-       {
-         //printf("Adding neighbor %s...\n", ip_to_string((union olsr_ip_addr *)&neigh->neigh_addr[i]));
-         /*
-          if(MPR)
-         update_timer_mpr((union olsr_ip_addr *)&mprsinfo->addr, originator);
-         */
-         
-         if(ipversion == AF_INET) /* Update MPRs */
-           {
-             if(type == MPR_NEIGH)
-               {
-                 //printf("MPR from HELLO\n");
-                 update_timer_mpr((union olsr_ip_addr *)&neigh->neigh_addr[i], originator, vtime);
-               }
-             add_node((union olsr_ip_addr *)&neigh->neigh_addr[i++], vtime);
-           }
-         else
-           {
-             if(type == MPR_NEIGH) /* Update MPRs */
-               {
-                 //printf("MPR from HELLO\n");
-                 update_timer_mpr((union olsr_ip_addr *)&neigh6->neigh_addr[i], originator, vtime);
-               }
-             add_node((union olsr_ip_addr *)&neigh6->neigh_addr[i++], vtime);
-           }
-
-         nsize = nsize - ipsize;
-         //printf("Nsize: %d\n", nsize);
-       }
-      neigh = (struct hellinfo *) &neigh->neigh_addr[i];
-      neigh6 = (struct hellinfo6 *) &neigh6->neigh_addr[i];
-
-      
-    }
-  //printf("DONE\n");
-
-  return 0;
-}
-
-
-
-
-int
-process_tc(int size, olsr_u8_t vtime, union olsr_ip_addr *originator, union tc_message *m)
-{
-
-  struct neigh_info *mprsinfo;
-  struct neigh_info6 *mprsinfo6;
-
-  printf("Processing TC from %s size = %d\n", ip_to_string(originator), size);
-
-  /* Updating timer */
-  if(!update_timer_node(originator, vtime))
-    add_node(originator, vtime);
-
-  /* Calculate size of the mprsinfo */
-  size = size - 4 - 8 - ipsize;
-
-  //printf("TC Size: %d\n", size);
-
-  if(ipversion == AF_INET)
-    mprsinfo =  &m->v4.neigh[0];
-  else
-    mprsinfo6 =  &m->v6.neigh[0];
-
-
-  while(size > 0)
-    {
-      if(ipversion == AF_INET)
-       {
-         //printf("\tprocessing TC: %s\n", ip_to_string((union olsr_ip_addr *)&mprsinfo->addr));
-         add_node((union olsr_ip_addr *)&mprsinfo->addr, vtime);
-         update_timer_mpr((union olsr_ip_addr *)&mprsinfo->addr, originator, vtime);
-         mprsinfo++;
-       }
-      else
-       {
-         //printf("\tprocessing TC: %s\n", ip_to_string((union olsr_ip_addr *)&mprsinfo6->addr));
-         //printf("TC: add node %s\n", ip_to_string((union olsr_ip_addr *)&mprsinfo6->addr));
-         add_node((union olsr_ip_addr *)&mprsinfo6->addr, vtime);
-         update_timer_mpr((union olsr_ip_addr *)&mprsinfo6->addr, originator, vtime);
-         mprsinfo6++;
-       }
-      size = size - ipsize;
-      //printf("\tsize: %d\n", size);
-    }
-  //printf("DONE\n");
-
-  return 0;
-}
-
-
-
-int
-process_mid(int size, olsr_u8_t vtime, union olsr_ip_addr *originator, union mid_message *m)
-{
-  struct midaddr *midaddr;
-  struct midaddr6 *midaddr6;
-
-
-  printf("Processing MID from %s size = %d\n", ip_to_string(originator), size);
-
-  /* Calculate size of the midinfo */
-  size = size - 4 - 4 - ipsize;
-
-  if(ipversion == AF_INET)
-    midaddr =  &m->v4.mid_addr[0];
-  else
-    midaddr6 =  &m->v6.mid_addr[0];
-
-  //printf("MID size: %d\n", size);
-
-  while(size > 0)
-    {
-      if(ipversion == AF_INET)
-       {
-         //printf("MID: add node %s\n", ip_to_string((union olsr_ip_addr *)&midaddr->addr));
-         add_mid_node(originator, (union olsr_ip_addr *)&midaddr->addr, vtime);
-         midaddr++;
-       }
-      else
-       {
-         add_mid_node(originator, (union olsr_ip_addr *)&midaddr6->addr, vtime);
-         //printf("MID: add node %s\n", ip_to_string((union olsr_ip_addr *)&midaddr6->addr));
-         midaddr6++;
-       }
-      size = size - ipsize;
-    }
-
-  //printf("DONE\n");
-  return 0;
-}
-
-
-
-
-int
-process_hna(int size, olsr_u8_t vtime, union olsr_ip_addr *originator, union hna_message *m)
-{
-
-
-  printf("Processing HNA size = %d\n", size);
-  struct hnapair *hnapairs;
-  struct hnapair6 *hnapairs6;
-
-  /* Calculate size of the hnainfo */
-  size = size - 4 - 4 - ipsize;
-
-  if(ipversion == AF_INET)
-    hnapairs =  &m->v4.hna_net[0];
-  else
-    hnapairs6 =  &m->v6.hna_net[0];
-
-
-  while(size > 0)
-    {
-      if(ipversion == AF_INET)
-       {
-         //printf("\tHNA:%s\n", ip_to_string((union olsr_ip_addr *)&hnapairs->addr));
-         add_hna_node(originator, (union olsr_ip_addr *)&hnapairs->addr, (union olsr_ip_addr *)&hnapairs->netmask, vtime);
-         hnapairs++;
-       }
-      else
-       {
-         add_hna_node(originator, (union olsr_ip_addr *)&hnapairs6->addr, (union olsr_ip_addr *)&hnapairs6->netmask, vtime);
-         hnapairs6++;
-       }
-
-      size = size - ipsize - ipsize;
-    }
-
-
-  return 0;
-}
-
-
-
-
-
-
-char *
-ip_to_string(union olsr_ip_addr *addr)
-{
-  char *ret;
-  struct in_addr in;
-  
-  if(ipversion == AF_INET)
-    {
-      in.s_addr=addr->v4;
-      ret = inet_ntoa(in);
-    }
-  else
-    {
-      /* IPv6 */
-      ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
-    }
-
-  return ret;
-
-}
-
-
-
-
-int
-gui_itoa(int i, char *buf)
-{
-  char tmp[10];
-
-  if(sprintf(buf, "%hd", i))
-  {
-      /* This shitty string needs to be converted to UTF-8 */
-    strcpy(tmp, g_locale_to_utf8(buf, -1, NULL, NULL, NULL));
-    strcpy(buf, tmp);
-    return 1;
-    //return ret;
-  }
-  return 0;
-}
diff --git a/front-end/src/ipc.h b/front-end/src/ipc.h
deleted file mode 100644 (file)
index 02a60db..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <string.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include "olsr_protocol.h"
-#include "packet.h"
-
-#define IPC_PORT 1212
-#define        IPC_MESSAGE 11    /* IPC to front-end telling of route changes */
-#define IPC_NET 12       /* IPC to front end net-info */
-
-
-//int ipc_socket;
-struct sockaddr_in pin;
-int connected;
-
-
-/*
- *AND:
- *IPC message sent to the front-end
- *at every route update. Both delete
- *and add
- */
-
-struct routemsg 
-{
-  olsr_u8_t      msgtype;
-  olsr_u16_t     size;
-  olsr_u8_t      metric;
-  olsr_u8_t      add;
-  union olsr_ip_addr target_addr;
-  union olsr_ip_addr gateway_addr;
-  char           device[4];
-};
-
-
-struct netmsg
-{
-  olsr_u8_t      msgtype;
-  olsr_u16_t     size;
-  olsr_u8_t      mids; /* No. of extra interfaces */
-  olsr_u8_t      hnas; /* No. of HNA nets */
-  olsr_u8_t      unused1;
-  olsr_u16_t     hello_int;
-  olsr_u16_t     hello_lan_int;
-  olsr_u16_t     tc_int;
-  olsr_u16_t     neigh_hold;
-  olsr_u16_t     topology_hold;
-  olsr_u8_t      ipv6;
-  union olsr_ip_addr   main_addr;
-};
-
-/*
- *Private functions
- */
-
-int
-ipc_get_socket();
-
-int
-ipc_evaluate_message(union olsr_message *);
-
-int
-ipc_eval_route_packet(struct routemsg *);
-
-int
-ipc_eval_net_info(struct netmsg *);
-
-int
-process_hello(int, olsr_u8_t, union olsr_ip_addr *, union hello_message *);
-
-int
-process_tc(int, olsr_u8_t, union olsr_ip_addr *, union tc_message *);
-
-int
-process_mid(int, olsr_u8_t, union olsr_ip_addr *, union mid_message *);
-
-int
-process_hna(int, olsr_u8_t, union olsr_ip_addr *, union hna_message *);
diff --git a/front-end/src/main.c b/front-end/src/main.c
deleted file mode 100644 (file)
index b368b56..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include "common.h"
-#include "main.h"
-
-int
-main (int argc, char *argv[])
-{
-#ifdef WIN32
-  WSADATA WsaData;
-#endif
-  GtkWidget *main_window;
-
-#ifdef WIN32
-  if (WSAStartup(0x0202, &WsaData))
-    {
-      fprintf(stderr, "Could not initialize WinSock.\n");
-      exit(1);
-    }
-#endif
-
-  gtk_init (&argc, &argv);
-
-  init_nodes();
-
-  freeze_packets = 1;
-  display_dec = 1;
-
-  /* "Failsafe" values */
-  ipversion = AF_INET;
-  ipsize = sizeof(struct in_addr);
-
-  main_window = create_main_window ();
-  gtk_widget_show (main_window);
-
-  printf("Done building GUI\n");
-
-  memset(&main_addr, 0, sizeof(union olsr_ip_addr));
-  memset(&null_addr, 0, sizeof(union olsr_ip_addr));
-
-  /* Terminate signal */
-  signal(SIGINT, shutdown_);  
-
-  /* Init node timeout */
-  nodes_timeout = NEIGHB_HOLD_TIME_NW;
-  init_timer((olsr_u32_t) (nodes_timeout * 1000), &hold_time_nodes);
-
-  ipc_connect();
-
-  add_timeouts();
-
-  gtk_main ();
-  return 0;
-}
-
-
-
-/*
- *Timeouts
- */
-
-int
-add_timeouts()
-{
-
-  /*
-   *Check socket for messages every IPC_INTERVAL
-   *milliseconds
-   */
-  gtk_timeout_add(IPC_INTERVAL, ipc_timeout, NULL);
-
-
-  /*
-   *Time out nodes
-   */
-  timeouts = 5; /* Wait 5 times befor starting timing out nodes */
-  gtk_timeout_add(TOP_HOLD_TIME, time_out_nodes, NULL);
-
-
- return 1;
-}
-
-
-
-gint ipc_timeout(gpointer data)
-{
-
-  ipc_read();
-  return 1;
-}
-
-
-
-void
-shutdown_(int signal)
-{
-  printf("Cleaning up...\n");
-
-  if(ipc_close() < 0)
-    printf("Could not close socket!\n");
-
-  printf("BYE-BYE!\n");
-  exit(signal);
-}
diff --git a/front-end/src/main.h b/front-end/src/main.h
deleted file mode 100644 (file)
index f4b0488..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include <signal.h>
-
-int timeouts;
-
-
-int
-add_timeouts();
-
-
-gint
-ipc_timeout(gpointer);
-
-
-void
-shutdown_(int);
diff --git a/front-end/src/nodes.c b/front-end/src/nodes.c
deleted file mode 100644 (file)
index e466179..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include "common.h"
-#include "nodes.h"
-#include <math.h>
-
-
-void
-init_nodes()
-{
-
-  nodes.next = &nodes;
-  nodes.prev = &nodes;
-}
-
-/*
- *Insert a new node in the list
- *NB! The list is NOT checked for duplicates!!
- */
-struct node *
-insert_node(struct node *n, olsr_u8_t vtime)
-{
-  struct node *new_node;
-
-  printf("Inserting node %s\n", ip_to_string((union olsr_ip_addr *)&n->addr));
-
-  if((new_node = malloc(sizeof(struct node))) == 0)
-    {
-      fprintf(stderr, "OUT OF MEMORY!\n");
-      exit(1);
-    }
-
-  memcpy(new_node, n, sizeof(struct node));
-  
-  /* queue */
-  nodes.next->prev = new_node;
-  new_node->next = nodes.next;
-  nodes.next = new_node;
-  new_node->prev = &nodes;
-
-  new_node->hna.next = &new_node->hna;
-  new_node->hna.prev = &new_node->hna;
-  new_node->mid.next = &new_node->mid;
-  new_node->mid.prev = &new_node->mid;
-  new_node->mpr.next = &new_node->mpr;
-  new_node->mpr.prev = &new_node->mpr;
-
-
-  update_timer_node(&n->addr, vtime);
-
-  return new_node;
-}
-
-
-/**
- *Add a new node to the set
- */
-int
-add_node(union olsr_ip_addr *node, olsr_u8_t vtime)
-{
-  struct node new;
-  struct node *tmp_nodes;
-  struct timeval tmp_timer;
-  double dbl_time;
-  olsr_u32_t time_value;
-  struct mid *tmp_mid;
-
-  dbl_time = me_to_double(vtime);
-  time_value = (olsr_u32_t) dbl_time*1000;
-
-  tmp_timer.tv_sec = time_value/1000;
-  tmp_timer.tv_usec = (time_value-(tmp_timer.tv_sec*1000)) * 1000;   
-
-  /* Check if node exists */
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         //printf("updating timer for node %s\n", ip_to_string(node));
-         //printf("Updatimng timer for: %s\n", ip_to_string(node));
-         //printf("Secs: %d, usecs: %d\n", (int)tmp_timer.tv_sec, (int)tmp_timer.tv_usec);
-         gettimeofday(&now, (struct timezone *)NULL);
-         timeradd(&now, &tmp_timer, &tmp_nodes->timer);
-         return 0; 
-       }
-      /* Check MID */
-      for(tmp_mid = tmp_nodes->mid.next;
-         tmp_mid != &tmp_nodes->mid;
-         tmp_mid = tmp_mid->next)
-       {
-         if(memcmp(&tmp_mid->alias, node, ipsize) == 0)
-           {
-             //printf("updating timer for node %s\n", ip_to_string(node));
-             //printf("Updatimng timer for (MID): %s\n", ip_to_string(&tmp_nodes->addr));
-             //printf("Secs: %d, usecs: %d\n", (int)tmp_timer.tv_sec, (int)tmp_timer.tv_usec);
-             gettimeofday(&now, (struct timezone *)NULL);
-             timeradd(&now, &tmp_timer, &tmp_nodes->timer);
-             return 0; 
-           }
-       }
-    }
-
-  /* New node */
-  memset(&new, 0, sizeof(struct node));
-  memcpy(&new.addr, node, ipsize);
-  new.display = 1;
-  printf("1:");
-  insert_node(&new, vtime);
-  update_nodes_list(&new);
-  return 1;
-}
-
-
-int
-update_timer_node(union olsr_ip_addr *node, olsr_u8_t vtime)
-{
-  struct node *tmp_nodes;
-  struct timeval tmp_timer;
-  double dbl_time;
-  olsr_u32_t time_value;
-
-  dbl_time = me_to_double(vtime);
-  time_value = (olsr_u32_t) dbl_time*1000;
-
-  tmp_timer.tv_sec = time_value/1000;
-  tmp_timer.tv_usec = (time_value-(tmp_timer.tv_sec*1000)) * 1000;   
-
-  //printf("Updatimng timer for: %s\n", ip_to_string(node));
-  //printf("Secs: %d, usecs: %d\n", (int)tmp_timer.tv_sec, (int)tmp_timer.tv_usec);
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         //printf("updating timer for node %s\n", ip_to_string(node));
-         gettimeofday(&now, (struct timezone *)NULL);
-         timeradd(&now, &tmp_timer, &tmp_nodes->timer);
-         if(tmp_nodes->display)
-           update_nodes_list(tmp_nodes);
-         return 1; 
-       }
-    }
-  
-  return 0;
-}
-
-
-/**
- *Updates the hold time for the mpr 'mpr' registered on
- *the node 'node'. Adds the mpr to the node if not already
- *registered.
- *@param node the node that has chosen the MPR
- *@param mpr the MPR chosen by the node
- *@return 0 if node was added, 1 if not
- */
-int
-update_timer_mpr(union olsr_ip_addr *node, union olsr_ip_addr *mpr, olsr_u8_t vtime)
-{
-  struct node *tmp_nodes;
-  struct mpr *tmp_mpr;
-  struct timeval tmp_timer;
-  double dbl_time;
-  olsr_u32_t time_value;
-
-  dbl_time = me_to_double(vtime);
-  time_value = (olsr_u32_t) dbl_time*1000;
-
-  tmp_timer.tv_sec = time_value/1000;
-  tmp_timer.tv_usec = (time_value-(tmp_timer.tv_sec*1000)) * 1000;   
-
-  //printf("Updatimng MPR timer for: %s\n", ip_to_string(node));
-  //printf("Secs: %d, usecs: %d\n", (int)tmp_timer.tv_sec, (int)tmp_timer.tv_usec);
-
-  //printf("Updatimng timer for: %s\n", ip_to_string(node));
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         for(tmp_mpr = tmp_nodes->mpr.next;
-             tmp_mpr != &tmp_nodes->mpr;
-             tmp_mpr = tmp_mpr->next)
-           {
-             if(memcmp(&tmp_mpr->addr, mpr, ipsize) == 0)
-               {
-                 //printf("updating timer for MPR %s ", ip_to_string(mpr));
-                 //printf("node %s\n", ip_to_string(node));
-                 gettimeofday(&now, (struct timezone *)NULL);
-                 timeradd(&now, &tmp_timer, &tmp_mpr->timer);
-                 return 1; 
-               }
-           }
-         /* Only add if parent is added */
-         add_mpr(node, mpr, &tmp_timer);
-         return 0;
-       }
-    }
-
-  return 0;
-}
-
-
-
-
-int
-add_mid_node(union olsr_ip_addr *node, union olsr_ip_addr *alias, olsr_u8_t vtime)
-{
-
-  struct node *tmp_nodes;
-  struct mid *tmp_mid;
-  struct node new, *inserted;
-
-  //printf("MID_add: %s\n", ip_to_string(alias));
-
-  //update_timer_node(node, vtime);
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         for(tmp_mid = tmp_nodes->mid.next;
-             tmp_mid != &tmp_nodes->mid;
-             tmp_mid = tmp_mid->next)
-           {
-             if(memcmp(&tmp_mid->alias, alias, ipsize) == 0)
-               return 0;
-           }
-
-         /* we didn't find the address */
-         printf("(1)NEW MID %s ", ip_to_string(alias));
-         printf("ADDED FOR %s\n", ip_to_string(node));
-         if((tmp_mid = malloc(sizeof(struct mid))) == 0)
-           {
-             fprintf(stderr, "OUT OF MEMORY\n");
-             exit(1);
-           }
-
-         memcpy(&tmp_mid->alias, alias, ipsize);
-
-         tmp_nodes->mid.next->prev = tmp_mid;
-         tmp_mid->next = tmp_nodes->mid.next;
-         tmp_nodes->mid.next = tmp_mid;
-         tmp_mid->prev = &tmp_nodes->mid;
-
-         remove_node_addr(alias); // Remove if already registered as a node
-         
-         update_nodes_list(tmp_nodes);
-         return 1; 
-
-       }
-    }
-
-
-
-  /*New node */
-
-  printf("ADDING NEW NODE %s FROM MID...\n", ip_to_string(node));
-  /* We don't know wery much... */
-  memset(&new, 0, sizeof(struct node));
-  memcpy(&new.addr, node, ipsize);
-  inserted = insert_node(&new, vtime);
-
-  if((tmp_mid = malloc(sizeof(struct mid))) == 0)
-    {
-      fprintf(stderr, "OUT OF MEMORY!\n");
-      exit(1);
-    }
-
-  memcpy(&tmp_mid->alias, alias, ipsize);
-
-  tmp_mid->next = &inserted->mid;
-  tmp_mid->prev = &inserted->mid;
-  inserted->mid.next = tmp_mid;
-  inserted->mid.prev = tmp_mid;
-
-  update_nodes_list(inserted);
-
-  return 2;
-}
-
-
-int
-add_hna_node(union olsr_ip_addr *node, union olsr_ip_addr *net, union olsr_ip_addr *mask, olsr_u8_t vtime)
-{
-
-  struct node *tmp_nodes;
-  struct hna *tmp_hna;
-  struct node new, *inserted;
-
-  //printf("HNA: %s\n", ip_to_string(&net));
-
-  update_timer_node(node, vtime);
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         for(tmp_hna = tmp_nodes->hna.next;
-             tmp_hna != &tmp_nodes->hna;
-             tmp_hna = tmp_hna->next)
-           {
-             if((memcmp(&tmp_hna->net, net, ipsize) == 0) && (memcmp(&tmp_hna->mask, mask, ipsize) == 0))
-               return 0;
-           }
-
-         //printf("NEW HNA ADDED FOR %s ", ip_to_string(node));
-         //printf("net: %s \n", ip_to_string(&net));
-         /* we didn't find the address */
-         if((tmp_hna = malloc(sizeof(struct hna))) == 0)
-           {
-             fprintf(stderr, "OUT OF MEMORY\n");
-             exit(1);
-           }
-
-         memcpy(&tmp_hna->net, net, ipsize);
-         memcpy(&tmp_hna->mask, mask, ipsize);
-
-         /* queue */
-         tmp_nodes->hna.next->prev = tmp_hna;
-         tmp_hna->next = tmp_nodes->hna.next;
-         tmp_nodes->hna.next = tmp_hna;
-         tmp_hna->prev = &tmp_nodes->hna;
-         
-         update_nodes_list(tmp_nodes);
-         return 1; 
-       }
-    }
-
-
-
-  printf("ADDING NEW NODE %s FROM HNA...\n", ip_to_string(node));
-  /* We don't know wery much... */
-  memset(&new, 0, sizeof(struct node));
-  memcpy(&new.addr, node, ipsize);
-  inserted = insert_node(&new, vtime);
-
-  if((tmp_hna = malloc(sizeof(struct hna))) == 0)
-    {
-      fprintf(stderr, "OUT OF MEMORY!\n");
-      exit(1);
-    }
-
-  memcpy(&tmp_hna->net, net, ipsize);
-  memcpy(&tmp_hna->mask, mask, ipsize);
-
-  tmp_hna->next = &inserted->hna;
-  tmp_hna->prev = &inserted->hna;
-  inserted->hna.next = tmp_hna;
-  inserted->hna.prev = tmp_hna;
-
-  update_nodes_list(inserted);
-
-  return 2;
-}
-
-
-/**
- *Add the MPR mpr to the node nodes selected MPRs.
- *Nodes are NOT added if they are not yet registered!
- *
- *@param node the node that has chosen an MPR
- *@param mpr the MPR choosen by node
- *@return negative if node already registered or node not found
- */
-int
-add_mpr(union olsr_ip_addr *node, union olsr_ip_addr *mpr, struct timeval *tmp_timer)
-{
-
-  struct node *tmp_nodes;
-  struct mpr *mprs;
-  struct mpr *tmp_mpr;
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         for(mprs = tmp_nodes->mpr.next;
-             mprs != &tmp_nodes->mpr;
-             mprs = mprs->next)
-           {
-             if(memcmp(&mprs->addr, mpr, ipsize) == 0)
-                 return 0;
-           }
-
-         //printf("Adding MPR %s to ", ip_to_string(mpr));
-         //printf("%s\n", ip_to_string(node));
-         /* Add mpr */
-
-         if((tmp_mpr = malloc(sizeof(struct mpr))) == 0)
-           {
-             fprintf(stderr, "OUT OF MEMORY\n");
-             exit(1);
-           }
-
-         memcpy(&tmp_mpr->addr, mpr, ipsize);
-
-         gettimeofday(&now, (struct timezone *)NULL);
-         timeradd(&now, tmp_timer, &tmp_mpr->timer);
-
-         /* queue */
-         tmp_nodes->mpr.next->prev = tmp_mpr;
-         tmp_mpr->next = tmp_nodes->mpr.next;
-         tmp_nodes->mpr.next = tmp_mpr;
-         tmp_mpr->prev = &tmp_nodes->mpr;
-
-         update_nodes_list(tmp_nodes);
-         return 1; 
-
-       }
-    }
-
-  return 1;
-}
-
-
-
-
-int
-remove_node(struct node *node)
-{
-  struct hna *tmp_hna, *tmp_hna2;
-  struct mid *tmp_mid, *tmp_mid2;
-  struct mpr *tmp_mpr, *tmp_mpr2;
-
-  printf("Remove node %s\n", ip_to_string(&node->addr));
-
-
-  tmp_hna = node->hna.next;
-  while(tmp_hna != &node->hna)
-    {
-      tmp_hna2 = tmp_hna;
-      tmp_hna = tmp_hna->next;
-      free(tmp_hna2);
-    }
-  tmp_mpr = node->mpr.next;
-  while(tmp_mpr != &node->mpr)
-    {
-      tmp_mpr2 = tmp_mpr;
-      tmp_mpr = tmp_mpr->next;
-      free(tmp_mpr2);
-    }
-  tmp_mid = node->mid.next;
-  while(tmp_mid != &node->mid)
-    {
-      tmp_mid2 = tmp_mid;
-      tmp_mid = tmp_mid->next;
-      free(tmp_mid2);
-    }
-  
-  /* Gemove form GUI */
-  remove_nodes_list(&node->addr);
-  
-  /* Dequeue */
-  node->prev->next = node->next;
-  node->next->prev = node->prev;
-  
-  free(node);
-
-  return 1;  
-}
-
-
-
-
-
-
-/*
- * Remove based on address
- */
-
-int
-remove_node_addr(union olsr_ip_addr *node)
-{
-  struct node *tmp_nodes;
-  struct hna *tmp_hna, *tmp_hna2;
-  struct mid *tmp_mid, *tmp_mid2;
-  struct mpr *tmp_mpr, *tmp_mpr2;
-
-  printf("Remove node %s\n", ip_to_string(node));
-
-
-  tmp_nodes = nodes.next;
-
-  while(tmp_nodes != &nodes)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         printf("(2)Deleting node %s\n", ip_to_string((union olsr_ip_addr *)&tmp_nodes->addr));
-
-         tmp_hna = tmp_nodes->hna.next;
-         while(tmp_hna != &tmp_nodes->hna)
-           {
-             tmp_hna2 = tmp_hna;
-             tmp_hna = tmp_hna->next;
-             free(tmp_hna2);
-           }
-         tmp_mpr = tmp_nodes->mpr.next;
-         while(tmp_mpr != &tmp_nodes->mpr)
-           {
-             tmp_mpr2 = tmp_mpr;
-             tmp_mpr = tmp_mpr->next;
-             free(tmp_mpr2);
-           }
-         tmp_mid = tmp_nodes->mid.next;
-         while(tmp_mid != &tmp_nodes->mid)
-           {
-             tmp_mid2 = tmp_mid;
-             tmp_mid = tmp_mid->next;
-             free(tmp_mid2);
-           }
-
-         /* Gemove form GUI */
-         remove_nodes_list(&tmp_nodes->addr);
-
-         /* Dequeue */
-         tmp_nodes->prev->next = tmp_nodes->next;
-         tmp_nodes->next->prev = tmp_nodes->prev;
-
-         free(tmp_nodes);
-
-         return 1;
-       }
-
-      tmp_nodes = tmp_nodes->next;
-    }
-
-  return 0;
-}
-
-
-
-
-struct node *
-find_node(char *ip)
-{
-  struct node *tmp_nodes;
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(strcmp(ip_to_string((union olsr_ip_addr *)&tmp_nodes->addr), ip) == 0)
-       return tmp_nodes;
-    }
-
-  return NULL;
-}
-
-
-struct node *
-find_node_t(union olsr_ip_addr *ip)
-{
-  struct node *tmp_nodes;
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, ip, ipsize) == 0)
-       return tmp_nodes;
-    }
-
-
-  return 0;
-}
-
-
-/*
- *Remove timed out nodes
- */
-gint
-time_out_nodes(gpointer data)
-{
-  struct node *tmp_nodes;
-  struct node *node_to_delete;
-
-  /* Wait before starting timing out */
-  if(timeouts)
-    {
-      timeouts--;
-      //printf("Waiting...\n");
-      return 1;
-    }
-
-  //printf("Timing out nodes...\n");
-  gettimeofday(&now, (struct timezone *)NULL);
-
-  tmp_nodes = nodes.next;
-
-  while(tmp_nodes != &nodes)
-    {
-      //printf("%s: %6d < %6d\n", ip_to_string(&tmp_nodes->addr), tmp_nodes->timer.tv_sec, now.tv_sec);
-      if(timercmp(&tmp_nodes->timer,&now,<))
-       {
-         printf("Node %s timed out...\n", ip_to_string((union olsr_ip_addr *)&tmp_nodes->addr));
-         node_to_delete = tmp_nodes;
-
-         tmp_nodes = tmp_nodes->next;
-
-         remove_nodes_list(&node_to_delete->addr);
-         remove_node(node_to_delete);
-       } 
-      else
-       tmp_nodes = tmp_nodes->next;
-    }
-
-  return 1;
-}
-
-
-
-/**
- *Timeout MPRs for a given node. Only called when user
- *is to see the registered MPRs of the node.
- *@param node the node whom MPRs should be timed out
- *@return negative if node not found
- */
-int
-time_out_mprs(union olsr_ip_addr *node)
-{
-
-  struct node *tmp_nodes;
-  struct mpr *mpr_to_delete;
-  struct mpr *tmp_mpr;
-
-  gettimeofday(&now, (struct timezone *)NULL);
-
-
-  /* W A R N I N G !
-   *
-   * THIS ALGORITHM HAS NOT BEEN TESTED PROPERLY!!!!!!
-   * -Andreas
-   */
-
-  for(tmp_nodes = nodes.next;
-      tmp_nodes != &nodes;
-      tmp_nodes = tmp_nodes->next)
-    {
-      if(memcmp(&tmp_nodes->addr, node, ipsize) == 0)
-       {
-         tmp_mpr = tmp_nodes->mpr.next;
-        
-         while(tmp_mpr != &tmp_nodes->mpr)
-           {
-             if(timercmp(&tmp_mpr->timer,&now,<))
-               {
-                 printf("MPR %s OF NODE ", ip_to_string((union olsr_ip_addr *)&tmp_mpr->addr));
-                 printf("%s TIMIED OUT ", ip_to_string((union olsr_ip_addr *)&tmp_nodes->addr));fflush(stdout);
-
-                 mpr_to_delete = tmp_mpr;
-                 tmp_mpr = tmp_mpr->next;
-
-                 /* Dequeue */
-                 mpr_to_delete->next->prev = mpr_to_delete->prev;
-                 mpr_to_delete->prev->next = mpr_to_delete->next;
-                 /* Delete */
-                 free(mpr_to_delete);
-               }
-             else
-               tmp_mpr = tmp_mpr->next;
-           }
-
-         return 1;
-       }
-    }
-
-  return 0;
-}
-
-
-
-void
-init_timer(olsr_u32_t time_value, struct timeval *hold_timer)
-{ 
-  olsr_u16_t  time_value_sec=0;
-  olsr_u16_t  time_value_msec=0;
-
-  time_value_sec=time_value/1000;
-  time_value_msec=time_value-(time_value_sec*1000);
-
-  hold_timer->tv_sec=time_value_sec;
-  hold_timer->tv_usec=time_value_msec*1000; 
-  
-}
-
-
-/**
- *Function that converts a mantissa/exponent 8bit value back
- *to double as described in RFC3626:
- *
- * value = C*(1+a/16)*2^b [in seconds]
- *
- *  where a is the integer represented by the four highest bits of the
- *  field and b the integer represented by the four lowest bits of the
- *  field.
- *
- *@param me the 8 bit mantissa/exponen value
- *
- *@return a double value
- */
-double
-me_to_double(olsr_u8_t me)
-{
-  int a = me>>4;
-  int b = me - a*16;
-  return (double)(VTIME_SCALE_FACTOR*(1+(double)a/16)*(double)pow(2,b));
-}
diff --git a/front-end/src/nodes.h b/front-end/src/nodes.h
deleted file mode 100644 (file)
index becfd0a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- *Andreas Tønnesen (andreto@ifi.uio.no)
- *
- *Node information
- */
-
-#include <sys/time.h>
-//#include <time.h>
-
-
-struct timeval now;
-struct timeval hold_time_nodes; /* Timeout for all nodes */
-
-/* The node list */
-struct node nodes;
-
-
-struct node *
-insert_node(struct node *, olsr_u8_t);
-
-
-int
-remove_node(struct node *);
-
-int
-remove_node_addr(union olsr_ip_addr *);
-
-double
-me_to_double(olsr_u8_t);
-
diff --git a/front-end/src/olsr.c b/front-end/src/olsr.c
deleted file mode 100644 (file)
index 42bea34..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include "common.h"
-
-
diff --git a/front-end/src/olsr_protocol.h b/front-end/src/olsr_protocol.h
deleted file mode 100644 (file)
index be074cd..0000000
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of the UniK OLSR daemon.
- *
- * The UniK OLSR daemon is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * The UniK OLSR daemon 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 the UniK OLSR daemon; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- *Values and packet formats as proposed in RFC3626 and misc. values and
- *data structures used by the UniK olsr daemon.
- */
-
-#ifndef _PROTOCOLS_OLSR_H
-#define        _PROTOCOLS_OLSR_H
-
-/* Port for OLSR to use */
-
-#define OLSRPORT       698
-
-/* Default IPv6 multicast address */
-
-#define OLSR_IPV6_MULTICAST_ADDR "ff05::15"
-
-/* types */
-#include <sys/types.h>
-
-#ifdef WIN32
-typedef unsigned char   olsr_u8_t;
-typedef unsigned short  olsr_u16_t;
-typedef unsigned int    olsr_u32_t;
-typedef char            olsr_8_t;
-typedef short           olsr_16_t;
-typedef int             olsr_32_t;
-#else
-typedef u_int8_t        olsr_u8_t;
-typedef u_int16_t       olsr_u16_t;
-typedef u_int32_t       olsr_u32_t;
-typedef int8_t          olsr_8_t;
-typedef int16_t         olsr_16_t;
-typedef int32_t         olsr_32_t;
-#endif
-
-/* IPv6 address format in6_addr */
-#include <netinet/in.h>
-
-union olsr_ip_addr
-{
-  olsr_u32_t v4;
-  struct in6_addr v6;
-};
-
-
-/*
- *Emission Intervals
- */
-
-#define HELLO_INTERVAL        2
-#define HELLO_INTERVAL_NW     HELLO_INTERVAL * 2
-#define REFRESH_INTERVAL      2
-#define TC_INTERVAL           5
-#define MID_INTERVAL          TC_INTERVAL
-#define HNA_INTERVAL          TC_INTERVAL
-
-/*
- *Holding Time
- */
-
-#define NEIGHB_HOLD_TIME      3 * REFRESH_INTERVAL
-/*extra: time to delete for non-wireless interfaces */
-#define NEIGHB_HOLD_TIME_NW   NEIGHB_HOLD_TIME * 2
-#define TOP_HOLD_TIME         3 * TC_INTERVAL
-#define DUP_HOLD_TIME         30
-#define MID_HOLD_TIME         3 * MID_INTERVAL
-#define HNA_HOLD_TIME         3 * HNA_INTERVAL
-
-/*
- * Scaling factor
- */
-
-#define VTIME_SCALE_FACTOR    0.0625
-
-/*
- *Message Types
- */
-
-#define HELLO_MESSAGE         1
-#define TC_MESSAGE            2
-#define MID_MESSAGE           3
-#define HNA_MESSAGE           4
-#define MAX_MESSAGE           4
-
-/*
- *Link Types
- */
-
-#define UNSPEC_LINK           0
-#define ASYM_LINK             1
-#define SYM_LINK              2
-#define LOST_LINK             3
-#define MAX_LINK              3
-
-/*
- *Neighbor Types
- */
-
-#define NOT_NEIGH             0
-#define SYM_NEIGH             1
-#define MPR_NEIGH             2
-#define MAX_NEIGH             2
-
-/*
- *Neighbor status
- */
-
-#define NOT_SYM               0
-#define SYM                   1
-
-/*
- *Link Hysteresis
- */
-
-#define HYST_THRESHOLD_HIGH   0.8
-#define HYST_THRESHOLD_LOW    0.3
-#define HYST_SCALING          0.5
-
-/*
- *Willingness
- */
-
-#define WILL_NEVER            0
-#define WILL_LOW              1
-#define WILL_DEFAULT          3
-#define WILL_HIGH             6
-#define WILL_ALWAYS           7
-
-/*
- *Misc. Constants
- */
-
-#define TC_REDUNDANCY         0
-#define MPR_COVERAGE          1
-#define MAXJITTER             HELLO_INTERVAL / 4
-#define MAX_TTL               0xff
-
-/*
- *Sequence numbering
- */
-
-/* Seqnos are 16 bit values */
-
-#define MAXVALUE 0xFFFF
-
-/* Macro for checking seqnos "wraparound" */
-#define SEQNO_GREATER_THAN(s1, s2)                \
-        (((s1 > s2) && (s1 - s2 <= (MAXVALUE/2))) \
-     || ((s2 > s1) && (s2 - s1 > (MAXVALUE/2))))
-
-
-
-/*
- * Macros for creating and extracting the neighbor 
- * and link type information from 8bit link_code
- * data as passed in HELLO messages
- */
-
-#define CREATE_LINK_CODE(status, link) (link | (status<<2))
-
-#define EXTRACT_STATUS(link_code) ((link_code & 0xC)>>2)
-
-#define EXTRACT_LINK(link_code) (link_code & 0x3)
-
-
-/***********************************************
- *           OLSR packet definitions           *
- ***********************************************/
-
-
-/*
- *The HELLO message
- */
-
-/*
- *Hello info
- */
-struct hellinfo 
-{
-  olsr_u8_t   link_code;
-  olsr_u8_t   reserved;
-  olsr_u16_t  size;
-  olsr_u32_t  neigh_addr[1]; /* neighbor IP address(es) */
-};
-
-struct hellomsg 
-{
-  olsr_u16_t      reserved;
-  olsr_u8_t       htime;
-  olsr_u8_t       willingness;
-  struct hellinfo hell_info[1];
-};
-
-/*
- *IPv6
- */
-
-struct hellinfo6
-{
-  olsr_u8_t       link_code;
-  olsr_u8_t       reserved;
-  olsr_u16_t      size;
-  struct in6_addr neigh_addr[1]; /* neighbor IP address(es) */
-};
-
-struct hellomsg6
-{
-  olsr_u16_t         reserved;
-  olsr_u8_t          htime;
-  olsr_u8_t          willingness;
-  struct hellinfo6 hell_info[1];
-};
-
-
-
-
-
-/*
- * Topology Control packet
- */
-
-struct neigh_info
-{
-  olsr_u32_t       addr;
-};
-
-
-struct tcmsg 
-{
-  olsr_u16_t        ansn;
-  olsr_u16_t        reserved;
-  struct neigh_info neigh[1];
-};
-
-
-/*
- *IPv6
- */
-
-struct neigh_info6
-{
-  struct in6_addr      addr;
-};
-
-
-struct tcmsg6
-{
-  olsr_u16_t           ansn;
-  olsr_u16_t           reserved;
-  struct neigh_info6 neigh[1];
-};
-
-
-
-
-
-/*
- *Multiple Interface Declaration message
- */
-
-/* 
- * Defined as s struct for further expansion 
- * For example: do we want to tell what type of interface
- * is associated whit each address?
- */
-struct midaddr
-{
-  olsr_u32_t addr;
-};
-
-
-struct midmsg 
-{
-  struct midaddr mid_addr[1];
-};
-
-
-/*
- *IPv6
- */
-struct midaddr6
-{
-  struct in6_addr addr;
-};
-
-
-struct midmsg6
-{
-  struct midaddr6 mid_addr[1];
-};
-
-
-
-
-
-
-/*
- * Host and Network Association message
- */
-struct hnapair
-{
-  olsr_u32_t   addr;
-  olsr_u32_t   netmask;
-};
-
-struct hnamsg
-{
-  struct hnapair hna_net[1];
-};
-
-/*
- *IPv6
- */
-
-struct hnapair6
-{
-  struct in6_addr   addr;
-  struct in6_addr   netmask;
-};
-
-struct hnamsg6
-{
-  struct hnapair6 hna_net[1];
-};
-
-
-
-
-
-/*
- * OLSR message (several can exist in one OLSR packet)
- */
-
-struct olsrmsg
-{
-  olsr_u8_t     olsr_msgtype;
-  olsr_u8_t     olsr_vtime;
-  olsr_u16_t    olsr_msgsize;
-  olsr_u32_t    originator;
-  olsr_u8_t     ttl;
-  olsr_u8_t     hopcnt;
-  olsr_u16_t    seqno;
-
-  union 
-  {
-    struct hellomsg hello;
-    struct tcmsg    tc;
-    struct hnamsg   hna;
-    struct midmsg   mid;
-  } message;
-
-};
-
-/*
- *IPv6
- */
-
-struct olsrmsg6
-{
-  olsr_u8_t        olsr_msgtype;
-  olsr_u8_t        olsr_vtime;
-  olsr_u16_t       olsr_msgsize;
-  struct in6_addr  originator;
-  olsr_u8_t        ttl;
-  olsr_u8_t        hopcnt;
-  olsr_u16_t       seqno;
-
-  union 
-  {
-    struct hellomsg6 hello;
-    struct tcmsg6    tc;
-    struct hnamsg6   hna;
-    struct midmsg6   mid;
-  } message;
-
-};
-
-
-
-/*
- * Generic OLSR packet
- */
-
-struct olsr 
-{
-  olsr_u16_t     olsr_packlen;         /* packet length */
-  olsr_u16_t     olsr_seqno;
-  struct olsrmsg  olsr_msg[1];          /* variable messages */
-};
-
-
-struct olsr6
-{
-  olsr_u16_t       olsr_packlen;        /* packet length */
-  olsr_u16_t       olsr_seqno;
-  struct olsrmsg6   olsr_msg[1];         /* variable messages */
-};
-
-
-/* IPv4 <-> IPv6 compability */
-
-union olsr_message
-{
-  struct olsrmsg v4;
-  struct olsrmsg6 v6;
-};
-
-union olsr_packet
-{
-  struct olsr v4;
-  struct olsr6 v6;
-};
-
-
-#endif
diff --git a/front-end/src/packet.c b/front-end/src/packet.c
deleted file mode 100644 (file)
index dda9afc..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- *Andreas Tønnesen (andreto@ifi.uio.no)
- *
- *The list of cached packets
- *
- */
-
-#include "common.h"
-#include "packet.h"
-
-struct packnode *packets = NULL;
-int no_packets = 0;
-
-/*
- *Add the contets of a packet to
- *the cached packets
- */
-int
-add_packet_to_buffer(union olsr_message *p, int size)
-{
-  struct packnode *tmp;
-  /* Should be the same for v4 and v6 */
-
-
-  /* If this is the first packet */
-  if(!packets)
-    {
-      //printf("Adding first packet\n");
-      packets = malloc(sizeof(struct packnode));
-      packets->packet = malloc(size);
-      memcpy(packets->packet, p, size);
-      packets->next = NULL;
-      no_packets++;
-      return 1;
-    }
-  else
-    {
-      /* If the buffer is not full */
-      if(no_packets < MAXPACKS)
-       {
-         //printf("Buffer not filled yet..\n");
-         tmp = packets;
-         packets = malloc(sizeof(struct packnode));
-         packets->packet = malloc(size);
-         memcpy(packets->packet, p, size);
-         packets->next = tmp;
-         no_packets++;
-         return 1;
-       }
-      /* If buffer is full */
-      else
-       {
-         //printf("Buffer full - deleting...\n");
-         tmp = packets;
-         /* Find second last packet */
-         while(tmp->next->next)
-           {
-             tmp = tmp->next;
-           }
-         /* Delete last packet */
-         free(tmp->next->packet);
-         free(tmp->next);
-         tmp->next = NULL;
-
-         /*Add the new packet */
-         tmp = packets;
-         packets = malloc(sizeof(struct packnode));
-         packets->packet = malloc(size);
-         memcpy(packets->packet, p, size);
-         packets->next = tmp;
-         return 1;
-       }
-
-    }
-  return 0;
-}
-
-
-
-/*
- *Get the packet with index 'index'
- */
-union olsr_message *
-get_packet(int index)
-{
-  int i = 0;
-  struct packnode *tmp;
-
-  if(index>MAXPACKS)
-    return 0;
-
-  if(index == 0)
-    return packets->packet;
-
-  tmp = packets;
-
-  while(i != index)
-    {
-      tmp = tmp->next;
-      i++;
-    }
-  return tmp->packet;
-
-}
diff --git a/front-end/src/packet.h b/front-end/src/packet.h
deleted file mode 100644 (file)
index 823128d..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- *Andreas Tønnesen (andreto@ifi.uio.no)
- *
- *The list of cached packets
- *
- */
-
-#ifndef _PACKET_H
-#define _PACKET_H
-
-struct packnode
-{
-  union olsr_message *packet;
-  struct packnode *next;
-};
-
-
-
-/*
- * Unions for IPv4 <-> IPv6 compability
- */
-
-union hello_message
-{
-  struct hellomsg v4;
-  struct hellomsg6 v6;
-};
-
-
-union tc_message
-{
-  struct tcmsg v4;
-  struct tcmsg6 v6;
-};
-
-
-union mid_message
-{
-  struct midmsg v4;
-  struct midmsg6 v6;
-};
-
-
-
-union hna_message
-{
-  struct hnamsg v4;
-  struct hnamsg6 v6;
-};
-
-
-
-
-#endif
diff --git a/front-end/src/pixmaps.h b/front-end/src/pixmaps.h
deleted file mode 100644 (file)
index 72a5832..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include "pixmaps/logo.xpm"
diff --git a/front-end/src/pixmaps/logo.xpm b/front-end/src/pixmaps/logo.xpm
deleted file mode 100644 (file)
index bd482b2..0000000
+++ /dev/null
@@ -1,2165 +0,0 @@
-/* XPM */
-static char * logo_xpm[] = {
-"51 70 2092 2",
-"      c None",
-".     c #FFFFF4",
-"+     c #FEFFF8",
-"@     c #F4FBF4",
-"#     c #F9FFFF",
-"$     c #FBFFFF",
-"%     c #FBFCFF",
-"&     c #FDFCFF",
-"*     c #FDFDFF",
-"=     c #F5FFFF",
-"-     c #F7FFFF",
-";     c #F1FAF9",
-">     c #EEF7F6",
-",     c #F8FFFF",
-"'     c #FEFEFF",
-")     c #ECFCF9",
-"!     c #F3FFFF",
-"~     c #FCFFFF",
-"{     c #FFFEFF",
-"]     c #F7F8FA",
-"^     c #F8FEFE",
-"/     c #FAFEFF",
-"(     c #FFFFFF",
-"_     c #F6F7F9",
-":     c #F2FFFF",
-"<     c #F4FCFE",
-"[     c #FEFFFF",
-"}     c #FCF5FC",
-"|     c #FFFCFF",
-"1     c #FFFBFF",
-"2     c #FFFBFA",
-"3     c #FFF9FA",
-"4     c #FFFFFD",
-"5     c #FFFAFF",
-"6     c #F7FAF3",
-"7     c #FFFCF9",
-"8     c #EEF7F2",
-"9     c #A1B6AF",
-"0     c #A7C2BB",
-"a     c #97B0AA",
-"b     c #F0FFFF",
-"c     c #BDD4CA",
-"d     c #DEF8EB",
-"e     c #B6C9C5",
-"f     c #E6F5F2",
-"g     c #EFF8F7",
-"h     c #F5F6F8",
-"i     c #FAF4F8",
-"j     c #FFFDFF",
-"k     c #C8D9D3",
-"l     c #B0C9C3",
-"m     c #98BCB2",
-"n     c #AACEC4",
-"o     c #B7D4CF",
-"p     c #B1CAC6",
-"q     c #9DC0BA",
-"r     c #C1D4CE",
-"s     c #B4C7C1",
-"t     c #D2E7E0",
-"u     c #D0E3DD",
-"v     c #AFC0BA",
-"w     c #E8F7F2",
-"x     c #BDCCC7",
-"y     c #DDEEE8",
-"z     c #92C2B2",
-"A     c #A3CFC0",
-"B     c #98B9AE",
-"C     c #AAC1B9",
-"D     c #A8B7B2",
-"E     c #F8FCFB",
-"F     c #F2F0F1",
-"G     c #F4FFFF",
-"H     c #E5E7E6",
-"I     c #D4EBE3",
-"J     c #9EBCB2",
-"K     c #DCECE9",
-"L     c #A3CBC2",
-"M     c #DBF1EF",
-"N     c #AECDC8",
-"O     c #C7DCDD",
-"P     c #F4FAF0",
-"Q     c #C0E1D8",
-"R     c #568F80",
-"S     c #7ABFAC",
-"T     c #408572",
-"U     c #549881",
-"V     c #11573B",
-"W     c #297656",
-"X     c #568D7A",
-"Y     c #71A191",
-"Z     c #C7EDE0",
-"`     c #B1CCC3",
-" .    c #F0FFFB",
-"..    c #F3F5F4",
-"+.    c #D6F1E8",
-"@.    c #AAD0C3",
-"#.    c #83B3A3",
-"$.    c #A4D9C9",
-"%.    c #38685A",
-"&.    c #5E8C81",
-"*.    c #689A8E",
-"=.    c #518A7B",
-"-.    c #2C8162",
-";.    c #106345",
-">.    c #307F62",
-",.    c #5CAB8E",
-"'.    c #6AB69A",
-").    c #72BEA2",
-"!.    c #0F583D",
-"~.    c #549A80",
-"{.    c #548B76",
-"].    c #8EBFAC",
-"^.    c #8CB2A3",
-"/.    c #A3BFB3",
-"(.    c #CADBD3",
-"_.    c #F7FFFB",
-":.    c #FAFFFB",
-"<.    c #FEFFFD",
-"[.    c #E6F9F3",
-"}.    c #E4EDEC",
-"|.    c #799D93",
-"1.    c #81B1A3",
-"2.    c #A4CCC1",
-"3.    c #519580",
-"4.    c #487E6E",
-"5.    c #1A5948",
-"6.    c #79ABA0",
-"7.    c #EDFFFA",
-"8.    c #C0D5D0",
-"9.    c #528478",
-"0.    c #387868",
-"a.    c #71B09F",
-"b.    c #8CC7B3",
-"c.    c #45836C",
-"d.    c #579C7F",
-"e.    c #9FCFBF",
-"f.    c #92BCAE",
-"g.    c #AFCFC4",
-"h.    c #DBE1DF",
-"i.    c #F9F7F8",
-"j.    c #FFFAFD",
-"k.    c #D3F3E8",
-"l.    c #608C7D",
-"m.    c #4C8572",
-"n.    c #6AA893",
-"o.    c #76B19F",
-"p.    c #92CDBB",
-"q.    c #488877",
-"r.    c #4F9884",
-"s.    c #57A188",
-"t.    c #246851",
-"u.    c #9DDBC6",
-"v.    c #5A9581",
-"w.    c #478570",
-"x.    c #1E5945",
-"y.    c #ABE0CE",
-"z.    c #B5E4D4",
-"A.    c #83AF9E",
-"B.    c #D0F6E7",
-"C.    c #94B0A4",
-"D.    c #DCEDE5",
-"E.    c #F9FFFD",
-"F.    c #FFFEFC",
-"G.    c #FAF9F7",
-"H.    c #FBFBF9",
-"I.    c #D6E2DE",
-"J.    c #B3D8D0",
-"K.    c #A6D8CC",
-"L.    c #538979",
-"M.    c #337B63",
-"N.    c #5B9F86",
-"O.    c #8EC5B2",
-"P.    c #608880",
-"Q.    c #F0FDF6",
-"R.    c #FAFCFB",
-"S.    c #C7E6DE",
-"T.    c #4C8B7A",
-"U.    c #549F8B",
-"V.    c #65A896",
-"W.    c #6FA595",
-"X.    c #59907D",
-"Y.    c #56947D",
-"Z.    c #5C8678",
-"`.    c #E6FFFF",
-" +    c #95B3A9",
-".+    c #ECFFF9",
-"++    c #D6E1DD",
-"@+    c #FCFEFD",
-"#+    c #F8FFFD",
-"$+    c #D6EDE3",
-"%+    c #BFE3D7",
-"&+    c #93BDAF",
-"*+    c #76A094",
-"=+    c #82AEA1",
-"-+    c #76A99A",
-";+    c #417C6A",
-">+    c #71AC9A",
-",+    c #9DCDBF",
-"'+    c #4C7469",
-")+    c #9AC0B5",
-"!+    c #DDFFFB",
-"~+    c #497166",
-"{+    c #90AFA7",
-"]+    c #97ACA7",
-"^+    c #B5CAC3",
-"/+    c #E9F4F0",
-"(+    c #F7EEF1",
-"_+    c #FFFAFE",
-":+    c #F1FFFD",
-"<+    c #CADFD8",
-"[+    c #84ACA3",
-"}+    c #6C9A90",
-"|+    c #A4DCCF",
-"1+    c #73B8A3",
-"2+    c #6FB098",
-"3+    c #014C2E",
-"4+    c #5FA186",
-"5+    c #80A89F",
-"6+    c #AFD8CA",
-"7+    c #246E57",
-"8+    c #1C6E58",
-"9+    c #367968",
-"0+    c #508276",
-"a+    c #74A295",
-"b+    c #7CAF9E",
-"c+    c #EAFFFB",
-"d+    c #8EA39C",
-"e+    c #ECFDF7",
-"f+    c #C8D3CF",
-"g+    c #EFF5F3",
-"h+    c #FAFFFE",
-"i+    c #B5C2BB",
-"j+    c #DFFAF1",
-"k+    c #86A79C",
-"l+    c #CDEEE3",
-"m+    c #A6CAC0",
-"n+    c #679386",
-"o+    c #93C8B8",
-"p+    c #11503F",
-"q+    c #88BCAF",
-"r+    c #B8E2D8",
-"s+    c #588077",
-"t+    c #91BCB2",
-"u+    c #7FAAA0",
-"v+    c #E9FFFF",
-"w+    c #EEFFFF",
-"x+    c #CFE8E2",
-"y+    c #AABFBA",
-"z+    c #D3E2DF",
-"A+    c #F8FCFD",
-"B+    c #D0E5DC",
-"C+    c #79A198",
-"D+    c #B7D5D3",
-"E+    c #7FA49D",
-"F+    c #5E9786",
-"G+    c #91B7A8",
-"H+    c #427860",
-"I+    c #B9F1D6",
-"J+    c #77948F",
-"K+    c #B6D5CD",
-"L+    c #548D7C",
-"M+    c #478270",
-"N+    c #A9E2D1",
-"O+    c #336E5C",
-"P+    c #669C8C",
-"Q+    c #B1D9CE",
-"R+    c #B0DED1",
-"S+    c #CBE6DF",
-"T+    c #B5E1D4",
-"U+    c #F7FDFD",
-"V+    c #ECFFFD",
-"W+    c #FEFCFF",
-"X+    c #74AD9C",
-"Y+    c #89B3A7",
-"Z+    c #387965",
-"`+    c #89B5A8",
-" @    c #639687",
-".@    c #569381",
-"+@    c #84B2A5",
-"@@    c #8FB3A9",
-"#@    c #7CA499",
-"$@    c #A6DBCB",
-"%@    c #77AD9D",
-"&@    c #7CA89B",
-"*@    c #CBEAE2",
-"=@    c #F8FAF9",
-"-@    c #FEFEFE",
-";@    c #FBFBFB",
-">@    c #F3FCF9",
-",@    c #EAEEEF",
-"'@    c #04543B",
-")@    c #B5CCC6",
-"!@    c #B1CFC7",
-"~@    c #5C887B",
-"{@    c #528D7B",
-"]@    c #17654D",
-"^@    c #B0DBCA",
-"/@    c #FBFFFA",
-"(@    c #CAEBE2",
-"_@    c #5B9483",
-":@    c #67A08F",
-"<@    c #5F9484",
-"[@    c #8EC3B3",
-"}@    c #517F72",
-"|@    c #D9FDF3",
-"1@    c #5B8E7F",
-"2@    c #93B7AD",
-"3@    c #92C2B4",
-"4@    c #DFE0E2",
-"5@    c #699387",
-"6@    c #FFF0F9",
-"7@    c #E2E8E8",
-"8@    c #FDF4F9",
-"9@    c #B7C6C3",
-"0@    c #9CCABD",
-"a@    c #91C4B5",
-"b@    c #77BCA7",
-"c@    c #80AC9F",
-"d@    c #A1CDC0",
-"e@    c #8BB3A8",
-"f@    c #DAF9F1",
-"g@    c #A1BAB4",
-"h@    c #D7F0EA",
-"i@    c #CCEDE4",
-"j@    c #7EA89C",
-"k@    c #F6FAF9",
-"l@    c #EBEDEC",
-"m@    c #F6F6F6",
-"n@    c #FDFDFD",
-"o@    c #FAFEFD",
-"p@    c #F4FAF8",
-"q@    c #D5E0DC",
-"r@    c #E1F8F2",
-"s@    c #EBFFFB",
-"t@    c #C9F1E6",
-"u@    c #BFE0D7",
-"v@    c #266552",
-"w@    c #9EC6BB",
-"x@    c #558A7A",
-"y@    c #D0EFE7",
-"z@    c #19644D",
-"A@    c #92BBAB",
-"B@    c #F9FEF7",
-"C@    c #B5D6CD",
-"D@    c #154B3B",
-"E@    c #78AE9E",
-"F@    c #93C3B5",
-"G@    c #83B3A5",
-"H@    c #CBF5E9",
-"I@    c #628078",
-"J@    c #7FB4A4",
-"K@    c #C8ECE2",
-"L@    c #A0C8BD",
-"M@    c #A9C0BA",
-"N@    c #DBF2EC",
-"O@    c #FCF7FB",
-"P@    c #5C9D89",
-"Q@    c #69A291",
-"R@    c #427F6D",
-"S@    c #C9EDE3",
-"T@    c #C8E6DE",
-"U@    c #D6FCF1",
-"V@    c #D3EAE4",
-"W@    c #B2C1BE",
-"X@    c #C3DED7",
-"Y@    c #79A598",
-"Z@    c #D9ECE8",
-"`@    c #F4EEF2",
-" #    c #FBFDFC",
-".#    c #F1F5F4",
-"+#    c #F4FFFB",
-"@#    c #357D67",
-"##    c #8FCCBA",
-"$#    c #5A8F7F",
-"%#    c #E7E8EA",
-"&#    c #D8EBE7",
-"*#    c #1E5D4A",
-"=#    c #6DB29D",
-"-#    c #1E6851",
-";#    c #C9EFE0",
-">#    c #FCFFF8",
-",#    c #D5ECE6",
-"'#    c #B5E5D7",
-")#    c #417465",
-"!#    c #CDFBEE",
-"~#    c #8FC2B3",
-"{#    c #90BCAF",
-"]#    c #C1E2D9",
-"^#    c #6F8D85",
-"/#    c #508D7B",
-"(#    c #F2FBFA",
-"_#    c #528F7D",
-":#    c #CDD9D7",
-"<#    c #D3ECE6",
-"[#    c #FBF5F9",
-"}#    c #EEEFF1",
-"|#    c #F6FFFF",
-"1#    c #7DA197",
-"2#    c #528878",
-"3#    c #2C745E",
-"4#    c #87B1A5",
-"5#    c #A0C1B8",
-"6#    c #B6CDC7",
-"7#    c #D9E8E5",
-"8#    c #92A19E",
-"9#    c #BFD2CE",
-"0#    c #B0C5C0",
-"a#    c #E0F7F1",
-"b#    c #DCE7E3",
-"c#    c #CCDBD6",
-"d#    c #D0E7E1",
-"e#    c #7FADA0",
-"f#    c #35896F",
-"g#    c #2C765F",
-"h#    c #EAFFFF",
-"i#    c #A1C5BB",
-"j#    c #438B75",
-"k#    c #6D9183",
-"l#    c #FDFEF8",
-"m#    c #FFF8FF",
-"n#    c #CFDEDB",
-"o#    c #80AA9E",
-"p#    c #659386",
-"q#    c #8DBDAF",
-"r#    c #83B9A9",
-"s#    c #8CC1B1",
-"t#    c #82ACA0",
-"u#    c #B2D0C8",
-"v#    c #539D86",
-"w#    c #B7D2CB",
-"x#    c #62A18E",
-"y#    c #C6DDD7",
-"z#    c #DFE8E7",
-"A#    c #FAFFFF",
-"B#    c #E6F6F3",
-"C#    c #A2BDB6",
-"D#    c #859C96",
-"E#    c #B1C4C0",
-"F#    c #E0F9F3",
-"G#    c #92B1A9",
-"H#    c #C7EFE4",
-"I#    c #639184",
-"J#    c #9BC7BA",
-"K#    c #B6D7CE",
-"L#    c #CEDDDA",
-"M#    c #FBFCFE",
-"N#    c #F9F9F9",
-"O#    c #CFDBD7",
-"P#    c #F2FFFD",
-"Q#    c #9AAFAA",
-"R#    c #589381",
-"S#    c #66A18F",
-"T#    c #C8EEE3",
-"U#    c #F8F6F9",
-"V#    c #599684",
-"W#    c #97C7B9",
-"X#    c #16513F",
-"Y#    c #95DDC7",
-"Z#    c #688C7E",
-"`#    c #FFFFFA",
-" $    c #92BCB0",
-".$    c #AADACC",
-"+$    c #558E7D",
-"@$    c #588E7E",
-"#$    c #477366",
-"$$    c #C3D2CF",
-"%$    c #B7DDD2",
-"&$    c #96C0B4",
-"*$    c #6CA594",
-"=$    c #7EBDAA",
-"-$    c #C1D6D1",
-";$    c #C0D9D3",
-">$    c #FFF9FE",
-",$    c #E8F2F1",
-"'$    c #B7DBD1",
-")$    c #AACBC2",
-"!$    c #649A8A",
-"~$    c #689E8E",
-"{$    c #91CEBC",
-"]$    c #729A8F",
-"^$    c #EEFFFD",
-"/$    c #E9FEF9",
-"($    c #99BFB4",
-"_$    c #A4CEC2",
-":$    c #BDD8D1",
-"<$    c #F8F8F8",
-"[$    c #FCFCFC",
-"}$    c #E6F1ED",
-"|$    c #B5C4BF",
-"1$    c #F1FFFE",
-"2$    c #CCEBE3",
-"3$    c #D5DFDE",
-"4$    c #599E89",
-"5$    c #276B56",
-"6$    c #BAE2D7",
-"7$    c #99BAB1",
-"8$    c #86ACA1",
-"9$    c #267059",
-"0$    c #9DC3B4",
-"a$    c #FEFFFA",
-"b$    c #D1ECE5",
-"c$    c #4E8172",
-"d$    c #9CD1C1",
-"e$    c #8CBFB0",
-"f$    c #6FA293",
-"g$    c #B1DFD2",
-"h$    c #A2C6BC",
-"i$    c #DDF8F1",
-"j$    c #729C90",
-"k$    c #BCD7D0",
-"l$    c #347863",
-"m$    c #1F5C4A",
-"n$    c #E8E9EB",
-"o$    c #F1FFFF",
-"p$    c #FFF9FF",
-"q$    c #FAF8FB",
-"r$    c #BFD6D0",
-"s$    c #DFF6F0",
-"t$    c #A2B7B2",
-"u$    c #80A198",
-"v$    c #84B0A3",
-"w$    c #80AEA1",
-"x$    c #B0D6CB",
-"y$    c #E2F7F2",
-"z$    c #F3F9F7",
-"A$    c #CED9D5",
-"B$    c #EBFCF6",
-"C$    c #88ACA2",
-"D$    c #C4E8DE",
-"E$    c #94BEB2",
-"F$    c #93BDB1",
-"G$    c #387361",
-"H$    c #D6F1EA",
-"I$    c #438E77",
-"J$    c #D5FEEE",
-"K$    c #A8D0C5",
-"L$    c #92CBBA",
-"M$    c #6F9F91",
-"N$    c #82B0A3",
-"O$    c #8CB2A7",
-"P$    c #EDFFFF",
-"Q$    c #4E7C6F",
-"R$    c #ADD1C7",
-"S$    c #A6D4C7",
-"T$    c #CCDFDB",
-"U$    c #93BFB2",
-"V$    c #98C0B5",
-"W$    c #C0DBD4",
-"X$    c #DAF5EE",
-"Y$    c #DAE9E6",
-"Z$    c #7EA69B",
-"`$    c #CEF2E8",
-" %    c #B4DACF",
-".%    c #C5E0D9",
-"+%    c #E3F6F2",
-"@%    c #ACC3BD",
-"#%    c #E0FFF7",
-"$%    c #93AEA7",
-"%%    c #ECF5F4",
-"&%    c #FDFFFE",
-"*%    c #DAE6E2",
-"=%    c #576C65",
-"-%    c #CFE2DE",
-";%    c #8DC0B1",
-">%    c #77908A",
-",%    c #A9DCCD",
-"'%    c #91B2A9",
-")%    c #9FC7BC",
-"!%    c #16644C",
-"~%    c #517C6B",
-"{%    c #BACBC5",
-"]%    c #A8D2C4",
-"^%    c #74AB98",
-"/%    c #5B907E",
-"(%    c #A7D7C7",
-"_%    c #A4D3C3",
-":%    c #699888",
-"<%    c #94C0B3",
-"[%    c #C4DDD7",
-"}%    c #4F8474",
-"|%    c #E9FFFA",
-"1%    c #61A28E",
-"2%    c #8AB2A7",
-"3%    c #8FB7AC",
-"4%    c #E4EDEA",
-"5%    c #FBFFFE",
-"6%    c #E2E8E6",
-"7%    c #6B897F",
-"8%    c #C5E6DB",
-"9%    c #90B6A9",
-"0%    c #73998C",
-"a%    c #BDDBD1",
-"b%    c #EEFFF9",
-"c%    c #FFF9FD",
-"d%    c #FCFAFB",
-"e%    c #F0ECED",
-"f%    c #8CBBAB",
-"g%    c #E8FFFC",
-"h%    c #508E79",
-"i%    c #91B0A8",
-"j%    c #61897E",
-"k%    c #4D8071",
-"l%    c #BDDED5",
-"m%    c #6FAA98",
-"n%    c #77A396",
-"o%    c #70A595",
-"p%    c #81C2AC",
-"q%    c #9CC5B5",
-"r%    c #FFFDFB",
-"s%    c #C7DED6",
-"t%    c #8DB7A9",
-"u%    c #75A897",
-"v%    c #A3D6C5",
-"w%    c #2A5949",
-"x%    c #84B4A4",
-"y%    c #73A695",
-"z%    c #94BAAF",
-"A%    c #356B5B",
-"B%    c #E0E9E8",
-"C%    c #408872",
-"D%    c #CCE5DF",
-"E%    c #609384",
-"F%    c #6F847F",
-"G%    c #F5FEFB",
-"H%    c #F2F8F6",
-"I%    c #F4FDFA",
-"J%    c #CAEADF",
-"K%    c #B5D6CB",
-"L%    c #A4C4B9",
-"M%    c #B2C9C1",
-"N%    c #D8E4E0",
-"O%    c #FFFBFD",
-"P%    c #DDF7EE",
-"Q%    c #437665",
-"R%    c #548D7A",
-"S%    c #BBE1D6",
-"T%    c #A5D5C7",
-"U%    c #8EC1B2",
-"V%    c #508978",
-"W%    c #4A7669",
-"X%    c #5A8D7E",
-"Y%    c #C7FCEC",
-"Z%    c #377663",
-"`%    c #488973",
-" &    c #5D8678",
-".&    c #FFFBF8",
-"+&    c #F5FFFD",
-"@&    c #C9E0D8",
-"#&    c #A7CDC0",
-"$&    c #D1FBED",
-"%&    c #426B5D",
-"&&    c #E4FFFF",
-"*&    c #5B8778",
-"=&    c #A0D5C3",
-"-&    c #B2DED1",
-";&    c #B8E2D6",
-">&    c #87ADA2",
-",&    c #D8F6EE",
-"'&    c #8CB4A9",
-")&    c #6CA795",
-"!&    c #DDFCF4",
-"~&    c #F6FCFA",
-"{&    c #F7F9F8",
-"]&    c #E0E6E4",
-"^&    c #77978C",
-"/&    c #C0DED4",
-"(&    c #C5DFD6",
-"_&    c #F8FFFE",
-":&    c #F9FBFA",
-"<&    c #F7FBFA",
-"[&    c #F7F5F6",
-"}&    c #B3D4C9",
-"|&    c #1B6149",
-"1&    c #8BC0AE",
-"2&    c #679C8C",
-"3&    c #528576",
-"4&    c #97C5B8",
-"5&    c #80C5B0",
-"6&    c #41826E",
-"7&    c #83C4B0",
-"8&    c #7DB0A1",
-"9&    c #6EAF99",
-"0&    c #A9D3C5",
-"a&    c #FFFEFB",
-"b&    c #D4E5DF",
-"c&    c #C1D8D0",
-"d&    c #E3FAF2",
-"e&    c #CADDD7",
-"f&    c #C0D5CE",
-"g&    c #8CACA1",
-"h&    c #BBE5D7",
-"i&    c #3C7161",
-"j&    c #E2F5F1",
-"k&    c #9FCBBE",
-"l&    c #A3BAB4",
-"m&    c #8DB9AC",
-"n&    c #F3FDFC",
-"o&    c #89BEAE",
-"p&    c #F1F2F4",
-"q&    c #DDE3E1",
-"r&    c #B9D7CD",
-"s&    c #AFC9C0",
-"t&    c #ACBDB7",
-"u&    c #DEE7E4",
-"v&    c #E8ECEB",
-"w&    c #BBD9CF",
-"x&    c #687F77",
-"y&    c #377560",
-"z&    c #A5DCC9",
-"A&    c #5E9182",
-"B&    c #AEE3D3",
-"C&    c #17674E",
-"D&    c #77AC9C",
-"E&    c #4F8C7A",
-"F&    c #559481",
-"G&    c #357662",
-"H&    c #A2CBBD",
-"I&    c #F8F7F3",
-"J&    c #E3E9E7",
-"K&    c #F0F2F1",
-"L&    c #ABC2BA",
-"M&    c #5C8A7D",
-"N&    c #E8F4F2",
-"O&    c #D6E2E0",
-"P&    c #C1E5DB",
-"Q&    c #9EB7B1",
-"R&    c #F9FDFC",
-"S&    c #E1F8F0",
-"T&    c #D9EAE4",
-"U&    c #FFFDFE",
-"V&    c #FEFCFD",
-"W&    c #B5C1BD",
-"X&    c #C6F2E3",
-"Y&    c #ACCDC2",
-"Z&    c #85BCA9",
-"`&    c #54917F",
-" *    c #DAF8F0",
-".*    c #438470",
-"+*    c #68988A",
-"@*    c #9EBFB6",
-"#*    c #518E7C",
-"$*    c #BFE5D8",
-"%*    c #FFFFFB",
-"&*    c #FFF8FB",
-"**    c #F8F6F7",
-"=*    c #FFFBFE",
-"-*    c #F5FFFC",
-";*    c #F2FCFB",
-">*    c #D9F0EA",
-",*    c #FFF5FB",
-"'*    c #AED2C8",
-")*    c #D4DDDC",
-"!*    c #BAC4C3",
-"~*    c #ECEEED",
-"{*    c #FDFBFC",
-"]*    c #F6FFFC",
-"^*    c #F6F4F5",
-"/*    c #FFFCFD",
-"(*    c #E1F2EC",
-"_*    c #E6E6E6",
-":*    c #538272",
-"<*    c #F4FFFE",
-"[*    c #6F9E8E",
-"}*    c #BCDBD3",
-"|*    c #577F74",
-"1*    c #6BA191",
-"2*    c #679185",
-"3*    c #B0DACE",
-"4*    c #92B0A8",
-"5*    c #6C988B",
-"6*    c #75AA9A",
-"7*    c #407668",
-"8*    c #E9EFED",
-"9*    c #FFF5FC",
-"0*    c #ECFFFB",
-"a*    c #FAFAFC",
-"b*    c #DFE5E5",
-"c*    c #FAFAFA",
-"d*    c #FBF7F8",
-"e*    c #FAF8F9",
-"f*    c #EFF8F5",
-"g*    c #E0F5EE",
-"h*    c #C8DBD5",
-"i*    c #809B92",
-"j*    c #A7D1C5",
-"k*    c #51796E",
-"l*    c #DCFAF2",
-"m*    c #618D80",
-"n*    c #9CC8BB",
-"o*    c #599482",
-"p*    c #73A194",
-"q*    c #8DBDB1",
-"r*    c #A7C5BD",
-"s*    c #FFF9F9",
-"t*    c #F2FFFC",
-"u*    c #F8FEFC",
-"v*    c #FFF7FE",
-"w*    c #F4FDFC",
-"x*    c #C4DBD3",
-"y*    c #FFFCFE",
-"z*    c #EAF5F1",
-"A*    c #D0F1E8",
-"B*    c #95C3B6",
-"C*    c #A5C9BF",
-"D*    c #55907E",
-"E*    c #6F958A",
-"F*    c #A2DFCD",
-"G*    c #185744",
-"H*    c #C8F3E9",
-"I*    c #DDE6E5",
-"J*    c #B8C1C0",
-"K*    c #E5F1EF",
-"L*    c #E9F9F6",
-"M*    c #E5F5F2",
-"N*    c #EDFDFA",
-"O*    c #A7B6B1",
-"P*    c #D6E9E3",
-"Q*    c #B8CDC6",
-"R*    c #E0F7EF",
-"S*    c #D0DCD8",
-"T*    c #F6F6F8",
-"U*    c #F2F6F7",
-"V*    c #DEE4E4",
-"W*    c #F6FFFE",
-"X*    c #E4F0EC",
-"Y*    c #F9FFFB",
-"Z*    c #E8FFFF",
-"`*    c #7CA69A",
-" =    c #BEECDF",
-".=    c #B6E2D5",
-"+=    c #98C4B7",
-"@=    c #DFEBE7",
-"#=    c #F6FFFD",
-"$=    c #F5F7F6",
-"%=    c #FAFCF7",
-"&=    c #96ABA6",
-"*=    c #BCD5CF",
-"==    c #DDEDEA",
-"-=    c #CCDBD8",
-";=    c #FBF9FA",
-">=    c #F7F3F4",
-",=    c #FDF9FA",
-"'=    c #91BBAF",
-")=    c #AEDCCF",
-"!=    c #A8CEC3",
-"~=    c #AAC5BE",
-"{=    c #C1DFD7",
-"]=    c #BED8CF",
-"^=    c #B0C7BF",
-"/=    c #E8FBF5",
-"(=    c #BECFC9",
-"_=    c #CAD6D2",
-":=    c #F4F4F4",
-"<=    c #EAECEB",
-"[=    c #F8FAF5",
-"}=    c #C2D5D1",
-"|=    c #4C786B",
-"1=    c #66998A",
-"2=    c #8BB1A6",
-"3=    c #CAE3DD",
-"4=    c #DCF1EC",
-"5=    c #D6EFE9",
-"6=    c #EFFFFC",
-"7=    c #EAFBF5",
-"8=    c #EEFDF8",
-"9=    c #F5FBF9",
-"0=    c #EFF1F0",
-"a=    c #F6F8F7",
-"b=    c #F7FFFE",
-"c=    c #D1DCD8",
-"d=    c #E1F0EB",
-"e=    c #EAF9F4",
-"f=    c #F8FFFB",
-"g=    c #DDF4EE",
-"h=    c #8DC2B2",
-"i=    c #669487",
-"j=    c #A5C3BB",
-"k=    c #91AAA4",
-"l=    c #7A9890",
-"m=    c #BAE0D3",
-"n=    c #9DC3B6",
-"o=    c #A1C2B7",
-"p=    c #C1DFD5",
-"q=    c #7E988F",
-"r=    c #9FB2AC",
-"s=    c #DFF0EA",
-"t=    c #EFEFEF",
-"u=    c #F2F2F2",
-"v=    c #F5F5F5",
-"w=    c #F5F9F8",
-"x=    c #DDE1E0",
-"y=    c #E2E6E5",
-"z=    c #BFCEC9",
-"A=    c #C2D3CD",
-"B=    c #EDFFFB",
-"C=    c #A3BAB2",
-"D=    c #A9C7BD",
-"E=    c #8DA89F",
-"F=    c #EEFFF8",
-"G=    c #317661",
-"H=    c #1D6851",
-"I=    c #81BEAC",
-"J=    c #9BC5B9",
-"K=    c #C4EADF",
-"L=    c #9FC9BD",
-"M=    c #A7CBBF",
-"N=    c #A9CDC1",
-"O=    c #94B4A9",
-"P=    c #CFEAE1",
-"Q=    c #AEC5BD",
-"R=    c #F0FFFD",
-"S=    c #F1FFFC",
-"T=    c #EBFAF5",
-"U=    c #E1E7E5",
-"V=    c #EAF0EE",
-"W=    c #E0F1EB",
-"X=    c #B9CAC4",
-"Y=    c #DDF2EB",
-"Z=    c #CAE1D9",
-"`=    c #ECFFFE",
-" -    c #98B8AD",
-".-    c #DFFFF5",
-"+-    c #5F8377",
-"@-    c #90B9AB",
-"#-    c #8DB3A6",
-"$-    c #E8FFF8",
-"%-    c #BAD1CB",
-"&-    c #5F9283",
-"*-    c #6AAB97",
-"=-    c #96BEB3",
-"--    c #8BC0B0",
-";-    c #9FBAB3",
-">-    c #E9FFFD",
-",-    c #B7D0CA",
-"'-    c #A8C6BE",
-")-    c #8FA49F",
-"!-    c #C6DFD9",
-"~-    c #88A79F",
-"{-    c #B3BFBB",
-"]-    c #EEF7F4",
-"^-    c #CDDCD7",
-"/-    c #D6EDE7",
-"(-    c #88BBAC",
-"_-    c #A0BBB4",
-":-    c #EDFFFE",
-"<-    c #649285",
-"[-    c #C9E8E0",
-"}-    c #759F93",
-"|-    c #E1FAF4",
-"1-    c #6D998C",
-"2-    c #7BB6A4",
-"3-    c #206F50",
-"4-    c #8DBEA8",
-"5-    c #FBFEF3",
-"6-    c #6CA191",
-"7-    c #216B54",
-"8-    c #5F9585",
-"9-    c #1F6A53",
-"0-    c #A2CABF",
-"a-    c #5F9887",
-"b-    c #93B9AE",
-"c-    c #71A797",
-"d-    c #AAD2C7",
-"e-    c #B5D4CC",
-"f-    c #9BCEBF",
-"g-    c #D6FFF5",
-"h-    c #ACCAC2",
-"i-    c #A2D0C3",
-"j-    c #D8E7E2",
-"k-    c #F2FEFA",
-"l-    c #F0F4F3",
-"m-    c #E4EFEB",
-"n-    c #C6D9D3",
-"o-    c #C1D1CE",
-"p-    c #79A196",
-"q-    c #659A8A",
-"r-    c #B9D8D0",
-"s-    c #719F92",
-"t-    c #D8EFE9",
-"u-    c #6A9287",
-"v-    c #3F7A68",
-"w-    c #70A092",
-"x-    c #80A69B",
-"y-    c #CDECE4",
-"z-    c #316757",
-"A-    c #58A38C",
-"B-    c #0C563B",
-"C-    c #5B8A76",
-"D-    c #F1FBFA",
-"E-    c #BCD3CD",
-"F-    c #387563",
-"G-    c #9BBFB5",
-"H-    c #9BC9BC",
-"I-    c #D2E5E1",
-"J-    c #99CCBD",
-"K-    c #568275",
-"L-    c #80B3A4",
-"M-    c #B7D5CD",
-"N-    c #DEFFF6",
-"O-    c #D4EFE8",
-"P-    c #E9FCF6",
-"Q-    c #B4C5BF",
-"R-    c #C3D2CD",
-"S-    c #E1ECE8",
-"T-    c #EBF1EF",
-"U-    c #D5E1DD",
-"V-    c #7BA599",
-"W-    c #A0B0AD",
-"X-    c #8CB6AA",
-"Y-    c #CAE9E1",
-"Z-    c #B9D2CC",
-"`-    c #ACDFD0",
-" ;    c #A3D1C4",
-".;    c #3A7563",
-"+;    c #75A194",
-"@;    c #7CB5A4",
-"#;    c #4A8E79",
-"$;    c #74A999",
-"%;    c #519681",
-"&;    c #448571",
-"*;    c #86B0A2",
-"=;    c #F7FCF6",
-"-;    c #C9DED9",
-";;    c #629787",
-">;    c #1E6650",
-",;    c #72A596",
-"';    c #2A6F5A",
-");    c #49796B",
-"!;    c #65A290",
-"~;    c #2E725D",
-"{;    c #5F9A88",
-"];    c #578C7C",
-"^;    c #588D7D",
-"/;    c #78A699",
-"(;    c #609585",
-"_;    c #F4FFFC",
-":;    c #BCD6CD",
-"<;    c #D2E7E2",
-"[;    c #C3E9DE",
-"};    c #266351",
-"|;    c #6E988C",
-"1;    c #78A89A",
-"2;    c #C1F7E7",
-"3;    c #48907A",
-"4;    c #78AD9D",
-"5;    c #8BC1B1",
-"6;    c #7AA297",
-"7;    c #70AD9B",
-"8;    c #3E8670",
-"9;    c #609D8D",
-"0;    c #B9E1D6",
-"a;    c #FBFFFD",
-"b;    c #F7FBFC",
-"c;    c #EFFFFF",
-"d;    c #428A74",
-"e;    c #497E6E",
-"f;    c #7EC6B0",
-"g;    c #B2D6CC",
-"h;    c #86BBAB",
-"i;    c #A5C6BD",
-"j;    c #B4DED2",
-"k;    c #C2E0D8",
-"l;    c #C5E9DF",
-"m;    c #C2E1D9",
-"n;    c #98AFA9",
-"o;    c #B6D4CC",
-"p;    c #C0D7CF",
-"q;    c #DAEDE7",
-"r;    c #D5E4DF",
-"s;    c #E1EAE7",
-"t;    c #E6EAE9",
-"u;    c #B6D0C7",
-"v;    c #9FBDB3",
-"w;    c #AECFC6",
-"x;    c #A4D4C6",
-"y;    c #F9FDFE",
-"z;    c #6C9F90",
-"A;    c #7DAB9E",
-"B;    c #437969",
-"C;    c #598E7E",
-"D;    c #72AD9B",
-"E;    c #9CBDB4",
-"F;    c #78A497",
-"G;    c #7DAD9F",
-"H;    c #3C806B",
-"I;    c #67A495",
-"J;    c #F7FFFD",
-"K;    c #CFE4DF",
-"L;    c #6A9A8C",
-"M;    c #67A693",
-"N;    c #B3D9CE",
-"O;    c #548979",
-"P;    c #9EAAA8",
-"Q;    c #A3BCB6",
-"R;    c #A1D4C5",
-"S;    c #A1C2B9",
-"T;    c #76A497",
-"U;    c #518777",
-"V;    c #7DA79B",
-"W;    c #5C9584",
-"X;    c #B1CFC5",
-"Y;    c #AAC5BC",
-"Z;    c #AABFB8",
-"`;    c #F3FFFE",
-" >    c #EDF8F4",
-".>    c #B6C2BE",
-"+>    c #D1E6DF",
-"@>    c #D0EBE2",
-"#>    c #AFCEC6",
-"$>    c #C9D9D6",
-"%>    c #8FB0A7",
-"&>    c #9CBBB3",
-"*>    c #74AA9A",
-"=>    c #5E736E",
-"->    c #DDFEF5",
-";>    c #89B9AB",
-">>    c #B6D1CA",
-",>    c #508575",
-"'>    c #81A59B",
-")>    c #80BFAC",
-"!>    c #5C8C7E",
-"~>    c #3D7363",
-"{>    c #5DA08E",
-"]>    c #C3D6D2",
-"^>    c #699E8E",
-"/>    c #327D66",
-"(>    c #5A9785",
-"_>    c #4FA288",
-":>    c #67AB96",
-"<>    c #788F89",
-"[>    c #E6FFFD",
-"}>    c #8ABAAC",
-"|>    c #98C2B6",
-"1>    c #8CBCAE",
-"2>    c #E8FFFD",
-"3>    c #8EACA2",
-"4>    c #D6EDE5",
-"5>    c #DFEEE9",
-"6>    c #D1E8E0",
-"7>    c #AECCC2",
-"8>    c #78998E",
-"9>    c #C3E2DA",
-"0>    c #E6FBF6",
-"a>    c #87BAAB",
-"b>    c #88BEAE",
-"c>    c #E8F8F5",
-"d>    c #B3CEC7",
-"e>    c #609082",
-"f>    c #5D9886",
-"g>    c #C2E8DD",
-"h>    c #50786D",
-"i>    c #599281",
-"j>    c #5DB096",
-"k>    c #1A654E",
-"l>    c #4E8170",
-"m>    c #B7CAC6",
-"n>    c #92C5B6",
-"o>    c #3F836E",
-"p>    c #96C4B7",
-"q>    c #448370",
-"r>    c #7B948E",
-"s>    c #CBF3E8",
-"t>    c #CAEEE4",
-"u>    c #719D90",
-"v>    c #A2D5C6",
-"w>    c #639385",
-"x>    c #80B6A6",
-"y>    c #367562",
-"z>    c #6EA796",
-"A>    c #8DAEA3",
-"B>    c #9FB9B0",
-"C>    c #EAFDF7",
-"D>    c #E2EDE9",
-"E>    c #EBEBEB",
-"F>    c #B7CEC6",
-"G>    c #E2FFF7",
-"H>    c #6E9286",
-"I>    c #E4FBF5",
-"J>    c #648A7F",
-"K>    c #AEC1BD",
-"L>    c #3F6F61",
-"M>    c #A4D7C8",
-"N>    c #94B8AE",
-"O>    c #ADCBC3",
-"P>    c #D5D3D6",
-"Q>    c #88B6A9",
-"R>    c #C3EBE0",
-"S>    c #8DC8B6",
-"T>    c #8FD0BC",
-"U>    c #3F7464",
-"V>    c #2E7962",
-"W>    c #519B84",
-"X>    c #5AAD91",
-"Y>    c #5A917C",
-"Z>    c #F3FFF8",
-"`>    c #ACD2C7",
-" ,    c #64A893",
-".,    c #69978A",
-"+,    c #246C56",
-"@,    c #7AB7A5",
-"#,    c #85BBAB",
-"$,    c #659E8D",
-"%,    c #8EC4B4",
-"&,    c #8FBBAE",
-"*,    c #71978C",
-"=,    c #BBDFD5",
-"-,    c #7CA096",
-";,    c #ADD3C8",
-">,    c #97B8AD",
-",,    c #C5E9DD",
-"',    c #7FA095",
-"),    c #E9FEF7",
-"!,    c #FBF5F7",
-"~,    c #FEFAFB",
-"{,    c #D7D9D8",
-"],    c #B8CFC7",
-"^,    c #D3EEE5",
-"/,    c #8EBEB0",
-"(,    c #A5CFC3",
-"_,    c #20614D",
-":,    c #C2E6DC",
-"<,    c #7FB8A7",
-"[,    c #B0CBC4",
-"},    c #D2DBDA",
-"|,    c #EAFAF7",
-"1,    c #E2FFF8",
-"2,    c #B2C7C2",
-"3,    c #4C8977",
-"4,    c #18684F",
-"5,    c #367A63",
-"6,    c #9DCBC1",
-"7,    c #B1C6C1",
-"8,    c #D8F3EC",
-"9,    c #458A75",
-"0,    c #40846F",
-"a,    c #D5F4EC",
-"b,    c #CCEAE2",
-"c,    c #B9CEC9",
-"d,    c #9EC8BC",
-"e,    c #72AB9A",
-"f,    c #DCF5EF",
-"g,    c #DFF2EE",
-"h,    c #75998F",
-"i,    c #78A797",
-"j,    c #96C6B6",
-"k,    c #88A99E",
-"l,    c #B6C7C1",
-"m,    c #F1FAF7",
-"n,    c #D2E3DD",
-"o,    c #A7BEB6",
-"p,    c #E7FFF9",
-"q,    c #A9D3C7",
-"r,    c #ADBCB9",
-"s,    c #76AB9B",
-"t,    c #A8C1BB",
-"u,    c #5C9987",
-"v,    c #A6D6C8",
-"w,    c #58887A",
-"x,    c #A9BCB8",
-"y,    c #9AB5AE",
-"z,    c #397664",
-"A,    c #ABBBB8",
-"B,    c #649F8D",
-"C,    c #BEF1E2",
-"D,    c #25795F",
-"E,    c #50967E",
-"F,    c #538177",
-"G,    c #F9FFF9",
-"H,    c #66A391",
-"I,    c #488573",
-"J,    c #2F6E5B",
-"K,    c #508072",
-"L,    c #A4C3BB",
-"M,    c #5B8579",
-"N,    c #548778",
-"O,    c #7BB0A0",
-"P,    c #5B9C88",
-"Q,    c #7BAA9A",
-"R,    c #669988",
-"S,    c #B3E6D5",
-"T,    c #9CC2B5",
-"U,    c #DCF1EA",
-"V,    c #F7FDFB",
-"W,    c #DFE8E5",
-"X,    c #BBD2CA",
-"Y,    c #ACC7BE",
-"Z,    c #7AA498",
-"`,    c #C6ECE1",
-" '    c #669688",
-".'    c #BAD8D0",
-"+'    c #A6E5D2",
-"@'    c #86AAA0",
-"#'    c #AAD4C8",
-"$'    c #B8D6CE",
-"%'    c #1F6F56",
-"&'    c #559A85",
-"*'    c #236E57",
-"='    c #7EC4AC",
-"-'    c #7DA89F",
-";'    c #85CDB7",
-">'    c #87AFA4",
-",'    c #B6DCD1",
-"''    c #56A18A",
-")'    c #CFEEE6",
-"!'    c #ADC6C0",
-"~'    c #DEFDF5",
-"{'    c #B0DCCF",
-"]'    c #588B7C",
-"^'    c #9DC9BC",
-"/'    c #B2D6CA",
-"('    c #7DA799",
-"_'    c #ACD6C8",
-":'    c #E5FFFA",
-"<'    c #C3D4CE",
-"['    c #B5CFC6",
-"}'    c #7C9A90",
-"|'    c #DFFAF3",
-"1'    c #A5B4B1",
-"2'    c #8DB3A8",
-"3'    c #3E7B69",
-"4'    c #98CDBD",
-"5'    c #47917A",
-"6'    c #9FD4C4",
-"7'    c #76A295",
-"8'    c #9FD5C5",
-"9'    c #79B6A4",
-"0'    c #458672",
-"a'    c #5E9484",
-"b'    c #498A76",
-"c'    c #256D55",
-"d'    c #729D94",
-"e'    c #FEFFFB",
-"f'    c #B6CFC9",
-"g'    c #AAC1BB",
-"h'    c #8BBBAD",
-"i'    c #8CBAAD",
-"j'    c #8EA9A2",
-"k'    c #ABD7CA",
-"l'    c #578376",
-"m'    c #549581",
-"n'    c #498875",
-"o'    c #477C6C",
-"p'    c #7CAA9D",
-"q'    c #80B0A2",
-"r'    c #568C7C",
-"s'    c #A3C4B9",
-"t'    c #7BA496",
-"u'    c #618B7D",
-"v'    c #C9E7DD",
-"w'    c #9FBDB5",
-"x'    c #7AA699",
-"y'    c #AAE7D5",
-"z'    c #98B7AF",
-"A'    c #6B9186",
-"B'    c #73A999",
-"C'    c #407062",
-"D'    c #578779",
-"E'    c #3A7765",
-"F'    c #629D8B",
-"G'    c #7DB3A3",
-"H'    c #398169",
-"I'    c #A6CFC7",
-"J'    c #B1CAC4",
-"K'    c #6EA393",
-"L'    c #4A8B77",
-"M'    c #75B4A1",
-"N'    c #3F7565",
-"O'    c #D2F3EA",
-"P'    c #B4E0D3",
-"Q'    c #6F9B8E",
-"R'    c #A8D4C7",
-"S'    c #769C91",
-"T'    c #C8E3DC",
-"U'    c #C8DBD7",
-"V'    c #91BAAC",
-"W'    c #457565",
-"X'    c #A3D8C6",
-"Y'    c #649081",
-"Z'    c #90ABA2",
-"`'    c #90A39D",
-" )    c #C0DAD1",
-".)    c #BEDED3",
-"+)    c #D7EEE8",
-"@)    c #BACFCA",
-"#)    c #BFE9DD",
-"$)    c #92BEB1",
-"%)    c #478B76",
-"&)    c #56897A",
-"*)    c #6EA997",
-"=)    c #7CB2A2",
-"-)    c #4B937D",
-";)    c #98B1AB",
-">)    c #8FB9AD",
-",)    c #B2DACF",
-"')    c #327762",
-"))    c #1D654D",
-"!)    c #8EB7AF",
-"~)    c #FDFFFA",
-"{)    c #ACD0C6",
-"])    c #00593D",
-"^)    c #559280",
-"/)    c #005D40",
-"()    c #639E8C",
-"_)    c #A2CCC0",
-":)    c #064B36",
-"<)    c #5E9383",
-"[)    c #6B9589",
-"})    c #71B6A1",
-"|)    c #2E735E",
-"1)    c #A9D5C8",
-"2)    c #C5D5D2",
-"3)    c #A2C6BA",
-"4)    c #7FAB9C",
-"5)    c #417463",
-"6)    c #DAFFF6",
-"7)    c #E8FFF9",
-"8)    c #C4D0CC",
-"9)    c #A5B8B2",
-"0)    c #A4BFB6",
-"a)    c #70968B",
-"b)    c #8CC5B4",
-"c)    c #D4E4E1",
-"d)    c #618B7F",
-"e)    c #2C715C",
-"f)    c #E5FAF5",
-"g)    c #18624B",
-"h)    c #3D6D5F",
-"i)    c #59A18B",
-"j)    c #689B8C",
-"k)    c #387E66",
-"l)    c #9FC8C0",
-"m)    c #FCFFFB",
-"n)    c #94BCB1",
-"o)    c #95CEBD",
-"p)    c #285E4E",
-"q)    c #DDFFFC",
-"r)    c #78B3A1",
-"s)    c #346959",
-"t)    c #B6E0D4",
-"u)    c #7AA89B",
-"v)    c #C4F7E8",
-"w)    c #497F6F",
-"x)    c #ADE3D3",
-"y)    c #759B90",
-"z)    c #9EBEB3",
-"A)    c #89AFA2",
-"B)    c #C9E9DE",
-"C)    c #D9E8E3",
-"D)    c #F1FDF9",
-"E)    c #88A39A",
-"F)    c #C0E0D5",
-"G)    c #A9D1C6",
-"H)    c #C6EAE0",
-"I)    c #91AFA7",
-"J)    c #7EAEA0",
-"K)    c #084C37",
-"L)    c #C9E7DF",
-"M)    c #82AA9F",
-"N)    c #5BA68F",
-"O)    c #4D8A78",
-"P)    c #BEDCD4",
-"Q)    c #85B8A9",
-"R)    c #87BCAC",
-"S)    c #0B5F45",
-"T)    c #4F937E",
-"U)    c #5F9E8B",
-"V)    c #347861",
-"W)    c #A3CCC4",
-"X)    c #AEC9C2",
-"Y)    c #104B39",
-"Z)    c #98C6B9",
-"`)    c #1B654E",
-" !    c #6DA393",
-".!    c #B6E6D8",
-"+!    c #458270",
-"@!    c #B2C2BF",
-"#!    c #8DB5AA",
-"$!    c #76A698",
-"%!    c #96CCBC",
-"&!    c #609B89",
-"*!    c #BED7D1",
-"=!    c #93A6A2",
-"-!    c #EFFEFB",
-";!    c #FEF8FA",
-">!    c #DBD5D7",
-",!    c #DEFFF9",
-"'!    c #C7D6D1",
-")!    c #8BBBAB",
-"!!    c #ABDECF",
-"~!    c #96B7AE",
-"{!    c #ACD6CA",
-"]!    c #5D9383",
-"^!    c #6BA493",
-"/!    c #50917D",
-"(!    c #377C67",
-"_!    c #379074",
-":!    c #B1DDD0",
-"<!    c #387C67",
-"[!    c #2B8166",
-"}!    c #5EA38E",
-"|!    c #3F846F",
-"1!    c #58918B",
-"2!    c #F8FFF8",
-"3!    c #1C7056",
-"4!    c #1D654F",
-"5!    c #7BB4A3",
-"6!    c #44947B",
-"7!    c #317963",
-"8!    c #5FA08C",
-"9!    c #3F8771",
-"0!    c #7EAC9F",
-"a!    c #C9D5D3",
-"b!    c #F6FCFC",
-"c!    c #F1F7F5",
-"d!    c #CEE8DF",
-"e!    c #CDE0DA",
-"f!    c #5B7F73",
-"g!    c #B3D2CA",
-"h!    c #2F7761",
-"i!    c #8EACA4",
-"j!    c #C0CFCC",
-"k!    c #4E9E85",
-"l!    c #809E96",
-"m!    c #75BFA8",
-"n!    c #4B967F",
-"o!    c #206E56",
-"p!    c #1E6952",
-"q!    c #0A4332",
-"r!    c #004027",
-"s!    c #3D7A68",
-"t!    c #0E674B",
-"u!    c #2D6C59",
-"v!    c #589C87",
-"w!    c #659995",
-"x!    c #FAFFF6",
-"y!    c #A7CDC2",
-"z!    c #2A8065",
-"A!    c #488975",
-"B!    c #2B6050",
-"C!    c #6E9E90",
-"D!    c #266A55",
-"E!    c #B4E7D8",
-"F!    c #4F7F71",
-"G!    c #569B86",
-"H!    c #BADBD2",
-"I!    c #89C4B2",
-"J!    c #09513B",
-"K!    c #5BA991",
-"L!    c #649D8C",
-"M!    c #A9D9CB",
-"N!    c #E9F3F2",
-"O!    c #EDEFEE",
-"P!    c #DBEEE8",
-"Q!    c #9FAAA6",
-"R!    c #DFFDF3",
-"S!    c #6DA091",
-"T!    c #4A8F7A",
-"U!    c #89BFAF",
-"V!    c #81B6A6",
-"W!    c #36896F",
-"X!    c #328269",
-"Y!    c #185945",
-"Z!    c #9DC7BB",
-"`!    c #4B8C78",
-" ~    c #4B7B6D",
-".~    c #024732",
-"+~    c #4C8D79",
-"@~    c #558577",
-"#~    c #194F3F",
-"$~    c #51927C",
-"%~    c #588B86",
-"&~    c #F9FCF3",
-"*~    c #B3CCC6",
-"=~    c #1B6E54",
-"-~    c #2A7E64",
-";~    c #11674C",
-">~    c #015B3F",
-",~    c #93BBB0",
-"'~    c #538E7C",
-")~    c #1F5847",
-"!~    c #8FC5B5",
-"~~    c #68837C",
-"{~    c #88B8AA",
-"]~    c #4F8575",
-"^~    c #75AE9D",
-"/~    c #225D4B",
-"(~    c #69A895",
-"_~    c #BDDBD3",
-":~    c #EEF8F7",
-"<~    c #AEC7C1",
-"[~    c #F1FDFB",
-"}~    c #AAD6C7",
-"|~    c #E3F6F0",
-"1~    c #D8FCF2",
-"2~    c #276854",
-"3~    c #1D7056",
-"4~    c #0C4232",
-"5~    c #21624E",
-"6~    c #2E8469",
-"7~    c #5A9986",
-"8~    c #04573D",
-"9~    c #38836C",
-"0~    c #0A3F2F",
-"a~    c #126B4F",
-"b~    c #127A59",
-"c~    c #307560",
-"d~    c #004B30",
-"e~    c #70BAA3",
-"f~    c #185C45",
-"g~    c #97CEC8",
-"h~    c #FCFFF6",
-"i~    c #72B6A1",
-"j~    c #3C7765",
-"k~    c #3D7C69",
-"l~    c #0C6247",
-"m~    c #4F9982",
-"n~    c #004B33",
-"o~    c #2A6E59",
-"p~    c #89CAB6",
-"q~    c #2E7C64",
-"r~    c #C7EBE1",
-"s~    c #336959",
-"t~    c #84BAAA",
-"u~    c #3C7B68",
-"v~    c #589D88",
-"w~    c #89AFA4",
-"x~    c #FCFDFF",
-"y~    c #F0F9F6",
-"z~    c #E0EBE7",
-"A~    c #528171",
-"B~    c #E8FDF6",
-"C~    c #8BC2AF",
-"D~    c #E6FDF5",
-"E~    c #477D6D",
-"F~    c #76BEA8",
-"G~    c #2E886C",
-"H~    c #0D6C4E",
-"I~    c #13674D",
-"J~    c #025239",
-"K~    c #01553B",
-"L~    c #076044",
-"M~    c #377462",
-"N~    c #DCFDF4",
-"O~    c #33725F",
-"P~    c #36816A",
-"Q~    c #358069",
-"R~    c #1E6C54",
-"S~    c #01472D",
-"T~    c #599289",
-"U~    c #F4FFF2",
-"V~    c #B7CEC8",
-"W~    c #0D5D44",
-"X~    c #568B7B",
-"Y~    c #558B7B",
-"Z~    c #1F6751",
-"`~    c #296A56",
-" {    c #72B39F",
-".{    c #1D614C",
-"+{    c #1E7258",
-"@{    c #5D877B",
-"#{    c #326F5D",
-"${    c #4B8A77",
-"%{    c #4A8976",
-"&{    c #024A34",
-"*{    c #155944",
-"={    c #E0FFFF",
-"-{    c #A7CBC1",
-";{    c #5C8479",
-">{    c #DFE9E8",
-",{    c #F5FBFB",
-"'{    c #9FB0AA",
-"){    c #D4E9E2",
-"!{    c #87B7A7",
-"~{    c #ABD4C6",
-"{{    c #0F3F2F",
-"]{    c #678178",
-"^{    c #1C664F",
-"/{    c #217E61",
-"({    c #004F33",
-"_{    c #24745B",
-":{    c #2F6C5A",
-"<{    c #216F57",
-"[{    c #115F47",
-"}{    c #63A893",
-"|{    c #005B3A",
-"1{    c #004C34",
-"2{    c #3A7362",
-"3{    c #549380",
-"4{    c #619D84",
-"5{    c #86B9B0",
-"6{    c #F1FCEC",
-"7{    c #E7FFFF",
-"8{    c #5BA08B",
-"9{    c #075B41",
-"0{    c #0F5F46",
-"a{    c #59A38C",
-"b{    c #29775F",
-"c{    c #EAFFFD",
-"d{    c #F3FCFB",
-"e{    c #09573F",
-"f{    c #C5FBEB",
-"g{    c #DEFFFC",
-"h{    c #C0E8DD",
-"i{    c #F2FEFC",
-"j{    c #72A292",
-"k{    c #B9DACF",
-"l{    c #A7C2B9",
-"m{    c #B0D6C9",
-"n{    c #9FC9BB",
-"o{    c #3D7864",
-"p{    c #F8F3F7",
-"q{    c #003321",
-"r{    c #23795E",
-"s{    c #0B5B42",
-"t{    c #92A7A2",
-"u{    c #FBFBFD",
-"v{    c #E4FFFA",
-"w{    c #8DB1AD",
-"x{    c #B4C4C1",
-"y{    c #7E958F",
-"z{    c #427767",
-"A{    c #FEF9FD",
-"B{    c #277A60",
-"C{    c #619787",
-"D{    c #1A5543",
-"E{    c #52917E",
-"F{    c #A0CCBF",
-"G{    c #739F92",
-"H{    c #94C2B5",
-"I{    c #236951",
-"J{    c #C5F4E4",
-"K{    c #C7F0E2",
-"L{    c #073727",
-"M{    c #5E8276",
-"N{    c #529880",
-"O{    c #FDFBFE",
-"P{    c #BAF5E3",
-"Q{    c #12533F",
-"R{    c #08583F",
-"S{    c #106D50",
-"T{    c #13664C",
-"U{    c #B9D1C3",
-"V{    c #6E8384",
-"W{    c #FFFBF2",
-"X{    c #6CA18F",
-"Y{    c #52907B",
-"Z{    c #7CBAA5",
-"`{    c #44826D",
-" ]    c #5F9D88",
-".]    c #0F5940",
-"+]    c #ACD2C5",
-"@]    c #B5DFD1",
-"#]    c #2D755D",
-"$]    c #2E7E63",
-"%]    c #57B092",
-"&]    c #126F50",
-"*]    c #1A684E",
-"=]    c #A3CDBF",
-"-]    c #0F553D",
-";]    c #ACD8C9",
-">]    c #256F56",
-",]    c #006341",
-"']    c #2E6D58",
-")]    c #9FC8BA",
-"!]    c #3C826A",
-"~]    c #02583B",
-"{]    c #065037",
-"]]    c #18684D",
-"^]    c #ACCAC0",
-"/]    c #166351",
-"(]    c #63A792",
-"_]    c #B8D2C9",
-":]    c #70A593",
-"<]    c #518F7A",
-"[]    c #599883",
-"}]    c #79B7A2",
-"|]    c #54937E",
-"1]    c #16694D",
-"2]    c #184234",
-"3]    c #123C2E",
-"4]    c #094D36",
-"5]    c #0C543C",
-"6]    c #003C22",
-"7]    c #126549",
-"8]    c #145841",
-"9]    c #265D4A",
-"0]    c #00482D",
-"a]    c #0C4733",
-"b]    c #156B4E",
-"c]    c #006F48",
-"d]    c #2C8164",
-"e]    c #0A4531",
-"f]    c #0A281E",
-"g]    c #10271F",
-"h]    c #29493E",
-"i]    c #1E5D48",
-"j]    c #0E6145",
-"k]    c #0D4C37",
-"l]    c #19654B",
-"m]    c #FFF6FE",
-"n]    c #81B8A5",
-"o]    c #539A8A",
-"p]    c #7FBAA8",
-"q]    c #FFFEF8",
-"r]    c #98BEB1",
-"s]    c #71A694",
-"t]    c #1C5D47",
-"u]    c #A8E9D3",
-"v]    c #43826D",
-"w]    c #55947F",
-"x]    c #F7F7F7",
-"y]    c #136147",
-"z]    c #D1F2E7",
-"A]    c #DCF6ED",
-"B]    c #CAF4E6",
-"C]    c #D1FAEC",
-"D]    c #305C4D",
-"E]    c #699989",
-"F]    c #D5F6EB",
-"G]    c #B4C3BE",
-"H]    c #3D6658",
-"I]    c #68AE96",
-"J]    c #EFFFFD",
-"K]    c #FFFBFC",
-"L]    c #EAFFF8",
-"M]    c #7DB4A1",
-"N]    c #0D5B41",
-"O]    c #05442F",
-"P]    c #B0DFCF",
-"Q]    c #FFF3F8",
-"R]    c #005735",
-"S]    c #1D604F",
-"T]    c #FFF9F5",
-"U]    c #B4CEC5",
-"V]    c #93B9AC",
-"W]    c #72A795",
-"X]    c #32765F",
-"Y]    c #7CC2AA",
-"Z]    c #357660",
-"`]    c #3F806A",
-" ^    c #11523C",
-".^    c #C6CCCA",
-"+^    c #18533F",
-"@^    c #84B3A3",
-"#^    c #F2FDF9",
-"$^    c #94C3B3",
-"%^    c #216951",
-"&^    c #306E59",
-"*^    c #608F7F",
-"=^    c #005132",
-"-^    c #5EA593",
-";^    c #639A87",
-">^    c #FFFAF8",
-",^    c #8FB5A8",
-"'^    c #74A997",
-")^    c #004129",
-"!^    c #1E664E",
-"~^    c #5EA48C",
-"{^    c #31755E",
-"]^    c #41806B",
-"^^    c #FFF7FB",
-"/^    c #E6FFF7",
-"(^    c #6DAB96",
-"_^    c #427B68",
-":^    c #EFFAF6",
-"<^    c #9BC5B7",
-"[^    c #F8F2F4",
-"}^    c #D8F8ED",
-"|^    c #EEF9F5",
-"1^    c #E8FFF7",
-"2^    c #004B2E",
-"3^    c #689D8B",
-"4^    c #297761",
-"5^    c #3C7D67",
-"6^    c #2B775D",
-"7^    c #2B7159",
-"8^    c #1B674D",
-"9^    c #EDFCF7",
-"0^    c #A0C1B6",
-"a^    c #D6F6EB",
-"b^    c #9AC0B3",
-"c^    c #729B8D",
-"d^    c #FAF6F7",
-"e^    c #2B6F58",
-"f^    c #F2FBF8",
-"g^    c #FCF8F9",
-"h^    c #F3FEFA",
-"i^    c #F9F5F6",
-"j^    c #4D8C77",
-"k^    c #1E6C52",
-"l^    c #A7D1C3",
-"m^    c #287B61",
-"n^    c #3A8068",
-"o^    c #F6FFF8",
-"p^    c #B1CBC2",
-"q^    c #83A99C",
-"r^    c #003A20",
-"s^    c #0E5C42",
-"t^    c #246E55",
-"u^    c #1B694F",
-"v^    c #B1D1C6",
-"w^    c #417C68",
-"x^    c #407F6A",
-"y^    c #95BFB1",
-"z^    c #609382",
-"A^    c #9BC7B8",
-"B^    c #448A72",
-"C^    c #FFF5F9",
-"D^    c #2E6955",
-"E^    c #033C29",
-"F^    c #10513B",
-"G^    c #26715A",
-"H^    c #42866F",
-"I^    c #B3CDC4",
-"J^    c #82A89B",
-"K^    c #6DA290",
-"L^    c #004C32",
-"M^    c #0B593F",
-"N^    c #014B32",
-"O^    c #236B53",
-"P^    c #96BAAE",
-"Q^    c #51957E",
-"R^    c #357F66",
-"S^    c #90BCAD",
-"T^    c #4E8572",
-"U^    c #91C0B0",
-"V^    c #3F856D",
-"W^    c #073626",
-"X^    c #0E694A",
-"Y^    c #105540",
-"Z^    c #3A7863",
-"`^    c #FAFFFC",
-" /    c #AED4C7",
-"./    c #82AC9E",
-"+/    c #61A28C",
-"@/    c #06361C",
-"#/    c #003D1E",
-"$/    c #004A2A",
-"%/    c #2D644D",
-"&/    c #F4FFFA",
-"*/    c #FAF9FE",
-"=/    c #1E6E53",
-"-/    c #1A7053",
-";/    c #42836D",
-">/    c #95C4B4",
-",/    c #085038",
-"'/    c #FCFAFD",
-")/    c #FFFAFB",
-"!/    c #457F67",
-"~/    c #003B20",
-"{/    c #13513A",
-"]/    c #3E8371",
-"^/    c #AED2C6",
-"//    c #85AEA0",
-"(/    c #EFFBF7",
-"_/    c #FFF2F7",
-":/    c #7BA798",
-"</    c #002F13",
-"[/    c #004B2A",
-"}/    c #00502F",
-"|/    c #386F58",
-"1/    c #F2FFFA",
-"2/    c #FFF9FC",
-"3/    c #186249",
-"4/    c #94B5AA",
-"5/    c #0F6548",
-"6/    c #44856F",
-"7/    c #97C3B4",
-"8/    c #054B33",
-"9/    c #BED3CA",
-"0/    c #719587",
-"a/    c #FFFAFC",
-"b/    c #F3FFF9",
-"c/    c #D8F4E8",
-"d/    c #00371E",
-"e/    c #034329",
-"f/    c #2F7461",
-"g/    c #FFF8FD",
-"h/    c #81AD9E",
-"i/    c #1C4C36",
-"j/    c #003319",
-"k/    c #114F36",
-"l/    c #CDF4E2",
-"m/    c #FFF6F9",
-"n/    c #074D35",
-"o/    c #9BBCB1",
-"p/    c #003B26",
-"q/    c #0D6648",
-"r/    c #8FC6B3",
-"s/    c #40816B",
-"t/    c #96C0B2",
-"u/    c #00452D",
-"v/    c #BAD5C6",
-"w/    c #083F28",
-"x/    c #D0E8DB",
-"y/    c #FDFEFF",
-"z/    c #5C8A7F",
-"A/    c #002F14",
-"B/    c #418570",
-"C/    c #AAD3C5",
-"D/    c #649987",
-"E/    c #FFF7FD",
-"F/    c #EEFFF5",
-"G/    c #DBF5E8",
-"H/    c #E9FFF6",
-"I/    c #0B5139",
-"J/    c #00331D",
-"K/    c #096647",
-"L/    c #95C8B7",
-"M/    c #3D7C67",
-"N/    c #9BC1B4",
-"O/    c #00402A",
-"P/    c #B1D7C2",
-"Q/    c #002D16",
-"R/    c #45705C",
-"S/    c #FBFDFA",
-"T/    c #FFEFFC",
-"U/    c #043F23",
-"V/    c #3A7966",
-"W/    c #F8FAF7",
-"X/    c #B1DBCD",
-"Y/    c #1D5B46",
-"Z/    c #EBFFFC",
-"`/    c #FFFDFD",
-" (    c #FAFCF9",
-".(    c #5A8979",
-"+(    c #97C1B3",
-"@(    c #00301A",
-"#(    c #045D3F",
-"$(    c #94C0B1",
-"%(    c #3A7360",
-"&(    c #99B9AE",
-"*(    c #00311D",
-"=(    c #A9DBC2",
-"-(    c #052C17",
-";(    c #002F15",
-">(    c #C5E1D5",
-",(    c #FFF6FF",
-"'(    c #90BBA7",
-")(    c #AACABF",
-"!(    c #00321F",
-"~(    c #698F82",
-"{(    c #FCF6F8",
-"](    c #C9EFE2",
-"^(    c #002F1B",
-"/(    c #0E4D38",
-"((    c #98BCB0",
-"_(    c #003220",
-":(    c #105840",
-"<(    c #9CC0B4",
-"[(    c #568575",
-"}(    c #134635",
-"|(    c #A7D7C1",
-"1(    c #002A16",
-"2(    c #003019",
-"3(    c #34755D",
-"4(    c #F2F4F3",
-"5(    c #EEFFFA",
-"6(    c #7FA59A",
-"7(    c #FEF9F5",
-"8(    c #E7F2EE",
-"9(    c #6D9789",
-"0(    c #689284",
-"a(    c #D6DCDA",
-"b(    c #F3F9F9",
-"c(    c #ECF8F4",
-"d(    c #7D9B91",
-"e(    c #75A190",
-"f(    c #CCE3DB",
-"g(    c #7E9C92",
-"h(    c #CAE5DC",
-"i(    c #A4C8BC",
-"j(    c #D1E0DB",
-"k(    c #7CA899",
-"l(    c #E0F1E9",
-"m(    c #7CA293",
-"n(    c #719A8A",
-"o(    c #619481",
-"p(    c #FAFAF8",
-"q(    c #F6FFFB",
-"r(    c #E2F8F5",
-"s(    c #FFFCFA",
-"t(    c #E3FFFF",
-"u(    c #FBF9FE",
-"v(    c #F9F7FA",
-"w(    c #EFFFFA",
-"x(    c #FEF3F7",
-"y(    c #FFF7FA",
-"z(    c #E0FFFB",
-"A(    c #EBFFFF",
-"B(    c #EFFFFB",
-"C(    c #FFF7F8",
-". + @ # $ % & * = - ; $ $ $ > , ' # ) ! # % ~ , { ] ^ / ( { _ $ : : < [ { } | | 1 2 3 4 ( 1 | 5 ! = 6 ",
-"7 8 9 0 a b c d e f g h { i j j k l m n o p o q r s t u v w x y z A B C D # E ~ F G H I J K L M N O P ",
-"- Q R S T U V W X Y Z `  .# ~ ..+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.4 [.}.|.1.2.3.4.5.6.7.",
-"j 8.9.0.a.b.c.d.e.f.g. .h.i.j.1 k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.<.F.G.H.I.G J.K.L.M.N.O.P.Q.",
-"R.S.T.U.V.W.X.Y.Z.`. +.+++$ [ @+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+G /+[ { (+1 _+:+<+[+}+|+1+2+3+4+5+[ ",
-"#+6+7+8+9+0+a+b+c+d+e+f+# g+h+$ 4 i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+, # ~ A+~ B+, C+D+E+F+G+H+I+J+1 ",
-"[ K+L+M+N+O+P+=+Q+R+S+T+U+V+5 1 W+: : X+Y+Z+`+ @.@+@@@#@$@%@&@*@~ =@( -@;@[ $ >@,@8.'@)@!@w+~@{@]@^@/@",
-"U+(@_@:@<@[@}@|@1@2@3@4@5@6@b j [ 7@8@9@$ 0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@( o@p@q@r@s@t@u@v@w@x@y@z@A@B@",
-"~ C@D@E@F@G@H@I@J@K@L@M@# N@O@- { b C@P@Q@R@S@T@U@V@W@X@Y@c@Z@`@o@..( (  #.## +#| @###$#%#&#*#=#-#;#>#",
-"j ,#'#)#!#~#{#]#^#/#(#_#:#<#, [ * ( [#}#|#1#2#3#4#5#6#7#8#9#0#a#[ =@-@-@ #$ b#c#d#e#~ f#Y+g#h#i#j#k#l#",
-"m#n#o#p#q#r#s#t#u#- v#w#x#y#z#1 [ A#B#: C#D#b E#F#G#H#I#J#K#L#M#R.( ( N#E # O#P#Q#R#S#T#U#V#W#X#Y#Z#`#",
-"m#B# $.$ @+$@$#$$$%$&$*$=$-$;$>${ O@- ,$'$)$!$~${$]$^$/$($_$:$, <$( [$[ ~ }$|$1$2$3$4$m+5$6$7$8$9$0$a$",
-"{ b$c$d$e$f$g$h$i$j$k$l$G m$n$o$~ j / p$, q$r$s$t$u$v$w$x$y$, $ ( -@-@R.z$A$B$o$C$D$_@~ E$F$G$H$I$J$B@",
-"|#K$;+L$M$N$O$P$Q$R$S$T$U$f V$W$' | - 1 X$Y$Z$`$ %.%+%@%#%$%%%| -@N#( &%$ *%: =%-%;%>%,%'%)%v$w#!%~%/@",
-"{ {%]%^%/%(%_%:%<%[%}%|%1%2%3%P$4%$ 5%@+[ ~ 6%# 7%8%9%0%a%b%( c%$ d%( z$e%f%g%h%i%j%b k%l%m%n%o%p%q%r%",
-"$ s%t%u%v%w%x%y%z%A%B%C%D%E%2%F%G%$ [ ( ;@ #H%I%J%v+K%L%M%N%@+O%~ [ { -@G P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&",
-"+&@&#&$&%&&&*&=&-&;&>&,&'&)&U+!&~&$ {&;@[$[ ~&]&^&/&(&o$= _&:&( -@<&[&{ }&- |&1&Z+2&3&4&5&6&7&8&9&0&a&",
-"# b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&k@&%( ( [ ~ ~&r&s&t&u&v&&%[ E { [ ( ~ w&x&y&z&A&B&C&D&E&7$S#F&G&H&I&",
-"{ o@G%J&-@K&- L&P$M&N&O&P&Q&- B#g+E ( { { ( R&$ S&T&G%( U&V&[ R&[${ 5%W&, X&Y&Z&`&w@4& *.*+*E@@*#*$*%*",
-"&*i.[ **=*| ( -*]#( ;*>*,*'*)*!*5%~*;@{*V&( [ o@- ]*[ ^*{ { ;@[ [ /*o@(*_*:*<*[*}*|*1*2*3*4*5*6*7*u$2 ",
-"| ( 8*~ {*j [&$ ~ : 9*1 0*a*: b*~ {&( { { c*[ o@~ :&( { d*/*{ e*@+[ 5%4%f*g*h*i*j*k*l*m*n*o*'#p*q*r*s*",
-"{ z$= t*u*( [ $ # v*j v*{ |#, w*~ [ n@e*{ ;@[ 5%e*{ **{ { { O%j &%G%~ ( x*y*h#z*A*B*C*D*E*F*~#G*H*w#/*",
-", I*J*|#K*L*M*N*~ R&~ :&[  #[$( ( ( ( ( ( ( ( -@( ( ( ( ( ( ( (  #&%[ [ [ [ @+R.[ 5%q&, O*P*Q*R*S*c#_.",
-"{ * T*[ U*$ A#V*{ U&{ U&{ y*j O%n@n@n@-@-@( ( ( ( ( ( ( ( ( ( ( ( -@-@c*( ( ( c*&%@+~ $ # W*X*t*h+]*Y*",
-"Z*R$`* =n+&@.=+=*%@=}$#=f*$ u*~ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( { {*{ { { e*{ { -@[$( <$[ [ $=~ n@[ %=",
-"{ }.&=*=o$==-=G &%[${ V&j &*=*1 n@n@n@n@-@-@( ( ( ( ( ( ( ( ( ( { e*V&U&{ {*{ ;=U&{ { ;={ >={ ,=V&n@%*",
-"$ d#'=)=!=u#~={=s&]=^=/=(== _=, ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( {*{ { U&V&{ { {*[  #<$( -@( :={ <=5%[=",
-"j }=|=1=2=3=4=5=6=7=8=, 9=R&0=-@-@( ( ( ( ( ( -@( ( ( ( ( ( ( ( [ [ {&[ @+&%a=[ h+$ 4%# # b=c=-*d=e=f=",
-"j g=h=p.i=j=k=l=m=n=o=p=q=b r=s=t=u=v=N#n@( ( ( -@-@-@-@-@-@-@-@o@w=x=<&E 5%y=<&@=@=z=A=B=C=w+(&D=E=F=",
-"# !=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=[$n@( ( ( ( ( -@-@-@-@-@-@-@-@-@U=$ H%$ V=~&6%$ W=X=Y=Z=`= -.-+-@-#-$-",
-", %-&-*-=---= ;->-9#,-'-)-!-~-d#<*{-, ]-~ :&{ { ( n@( m@~ , ^-R=/-r@(-Y+_-F$:-<-o$[-o$}-|-&-1-2-3-4-5-",
-"~ 8.6-7-8-9-0-a-b-c-d-e-f-g-h-i-W=j-k-]*~ [ ;@{ N#( ( [ l-m-G n-o-p-|-q-4=Q+r-s-t-u-v-w-x-y-z-A-B-C->#",
-"D-E-w-F-G-H-$ I-J-#%K-L-M-N-I#O-P-Q-R-S-T-&%( { ( ( -@ #$ U-/=9 B#V-W-X-Y-Z-`- ;.;+;@;S@#;$;%;m%&;*;=;",
-"~ -;;;>;,;';(@);!;~;{;];D*^;/;(;f&t G _;E.[ [$U&-@n@&%E f*|$o$:;!-<;[;n&J@<*};|;1;2;3;4;5;6;7;8;9;0;a;",
-"b;c;f-d;e;f;g;h;i;j;u$k;l;m;n;o;:-p;q;r;s;E ( { ( ;@&%t;, : u;v;w;U+x;y;z;b$A;V$'&B;C;D;E;F;G;H;I;[+J;",
-"# K;L;M;N;O;P;Q;R;S;T;U;@@V;W;O$X;Y;Z;`; >~ ( **( [ [ p@.>+>@>k.#>$>%>&> **>=>->B*;>>>,>'>)>!>~>{>m*#+",
-"( ]>^>/>(>_>f$:><>J=[>;$}>|>!&1>2>3>4>S=, R&c*{ ( R.5%# 5>6>7>8>H$9>0>a>y@b>c>= d>e>D;f>g>h>i>j>k>l>_.",
-"A+m>n>o>p>q>r>s>|>t>u>v>w>x>y>z>A>a%B>C>D>o@E>U&( [ ~ G%t*F>G>H>I>J>K>L>M>N>O>P>Q>R>S>5@T>U>V>W>X>Y>Z>",
-"= `> ,.,F;+,@,#,$,%,f$&,*,=,-,;,>,,,',),[ | !,{ ~,{ V&{,J;<*],^,/,(,k&w;_,:,<,[,},|,J=b 1,2,3,4,5,6,Y*",
-"5 7,8,9,0,a,<%b,c,d,e,A;f,g,h,X+i,j,_%k,l,~ ~ m,{ **{ [ ]*n,o,p,q,r,s,t,f>u,v,w,x,0@y,z,A,B,C,D,E,F,G,",
-"5 Z-H,I,B,J,K,L,N;M,B*N,O,1*F*P,Q,R,S,T,U,J;V,, {*{ N#&%W,G X,Y,F@3%Z,`,>+j$ '.'+'@'#'$'%'&'*',;='-'/@",
-"# )$;'>','''L+~#)'!'d#~'{']'^'n /'('_':'z=-@U&c*{ d%( ~ +#<'['}'==|'1'2'3'4'5'6'7'8'9'0'a'$,L+b'c'd'e'",
-"( f'g'h'i'j'G;k'l'5;m'n'o'p'q'r's't'u'l+<'@+{ { c*( c*~ +#n-w+v'3@w'x's>o#y'z'A'B'C' ;D'E'F'G'u>H'I'e'",
-"p$J'K'L'M'N' 'O'P'Q'R'p'd@S'T'U'V'W'X'Y'Z'-*E o@( N#[ p@+#`' ).)6#+)@)#)$)%)&)K'9>*)=)-);)>),)')))!)~)",
-"( {)])v@^)/)()_):)<)[)z;})|)1)2)3)4)5)6)7)# N#( n@(  #T-8)9)0)h#a)b)c)=)d)<%$)f'e)]$8-f)g)h)i)j)k)l)m)",
-"- '*n)o)p)q)r)s)t)u)v)w)x)1>y)O>0*z)A)B)C){ 1 >$( &%@+$ D): E)F)G)H)I)J)w;K)L)M)N)O)P)Q)R)S)T)U)V)W)/@",
-"= X)Y)Z)e$`)I, ,R@ !.!+!@!#!$!%!&!*!=!$>j $ -!| ;!1 **# >!,!'!)!!!z'T'~!{!]!^!+=/!(!_!:!<!9,[!}!|!1!2!",
-"| u#3!4!<@5!S$o*6!7!8!9!k=3*0! @e,i@o$a!~ b!$ | ( ;=( c![ d!e!f!g!h!i!j!k!:>l!m!n!o!p!q!r!s!t!u!v!w!x!",
-"$ y!z!A!1)B!C!D!E!F!X%G!H!I!J!K!L!M!Q&N!f # j j p@$ [ O!P!Q!R!U,S!T!U!V!W!X!Y!3!k>Z!`! ~.~+~@~#~$~%~&~",
-"{ *~=~-~;~>~o&,~'~)~!~9,~~{~]~^~/~(~_~:~<~[~p$j $ # :&[ /'E.}~|~<@1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~g~h~",
-"o$C@i~j~k~l~m~n~o~p~P@q~r~2&s~t~u~v~w~t$G-y$j x~y~z~R&# A~B~C~D~E~F~G~H~I~J~K~L~M~N~O~P~Q~R~F;W>S~T~U~",
-"p$V~W~v!X~E&Y~Z~`~ {.{+{@{#{${%{&{*{={-{;{P)>{,{S&'{N%){!{~{{{]{p-^{/{({_{Z%:{<{.,[{}{|{1{2{3{~;4{5{6{",
-"# Z-b>c;{ o$7{8{9{0{a{b{o$c{= d{e{O)f{$#g{h{G#i{j{k{l{m{n{o{P$: j ~  @Y)# p{= / ^$q{r{s{t{P$u{w+v{w{. ",
-": x{0 1 1 -!, y{h=1>&,z{{ ~ A{1 B{C{D{E{F{G{H{! I{J{K{L{M{N{G%-*O{- P{Q{- j - x~|#R{S{T{[ W+5 { U{V{W{",
-"h+u;n=h+{ n@{ X{Y{Z{`{ ]{ N#{ -@.]+]@]#]$]%]&]*]=]-];]>],]'])]$ h#m=!]~]5%[ ~ _+- {]]]^]b=# | [$/](]>#",
-"$ _]n=$ { ( { :]<][]}]|]d%( e*( 1]2]3]4]5]6]7]8]9]0]a]b]c]d]e]f]g]h]i]j][ &%~ j.P#k]l]b=5%[ m]n]o]p]q]",
-"h+u;r]$ { n@{ s]t]u]v]w]( n@{ x]y]z]A]B]C]D]E]F]u*>-G]H]I]Y J]K]W*L]M]N]d%[$p@{ f*O]P]n@$ Q]j R]S]}%T]",
-"E.U]V]$ V&[${ W]X]Y]Z]`]( ( { (  ^T={ I%[ .^- ( U&- $ V++^@^_;{ [ #^$^%^{ ( # d%| &^~ &%, 5 *^=^-^;^>^",
-"$ u;,^$ { -@{ '^)^!^~^{^:&[ ;=U&]^, 1 y*^^{ # ;@( -*- /^(^_^: :^{ o@<^t.[^N#_&{ >$}^j [ |^1^2^3^4^5^`#",
-"$ U]A)$ { -@{ s].]6^%^7^~ @+{ { 8^7./*( U&9^0^a^5 ^^K][ b^c^d^{ O%~ &+e^j ( f^{ g^j h^i^[ j^k^l^m^n^o^",
-"h+p^q^$ U&n@U&X{r^s^t^#]~ [ { V&u^o$/*~ J;v^w^x^{ O%_&V,y^z^{ ~ U&E.A^B^!,d%$ { ~ C^- 1 [ D^E^F^G^H^f=",
-"$ I^J^$ { ( { K^L^M^N^O^~  #V&{ 4]_;1 U&$ P^Q^R^u*V&= , S^T^-@# n@, U^V^y*{ h+{ 5%$ e*j.J;d!W^X^Y^Z^`^",
-"d% /./b #=1 ~ +/@/#/$/%/&/p$5 */=/S=- ~ @+T,Y{-/# j O%~ C~;/n@5 j V,>/,/j ~,o@j B#'/: i.)/a&!/~/{/]/, ",
-"| ^///(/{ _/( :/</[/}/|/1/2/1 - 3/, ~ /*{ 4/x.5/# j j 5%O.6/~ 1 { $ 7/8/{ { $ { 9/0/+&+&a/b/c/d/e/f/, ",
-"g/^/h/$ Q]5 d%C>i/j/k/l/a;m/~ c;n/~&-@| | o/p/q/E j.{ <&r/s/# n@[$_&t/u/K]&%, ;=v/w/x/#+j y/{ z/A/B/h+",
-"1 C/D/, E/j w=&%F/G/H/E.K]c%# o;I/E.&%j ,=r]J/K/~ j { ~ L/M/, $ ~ u*N/O/{ E.- {*P/Q/R/S/~ T/1 |#U/V/W/",
-";=X/Y/Z/j 5%- { `/4  (2 1 U&0*.(u/, # [ 5%+(@(#([ j ( [ $(%(# # $ o@&(*({ ]*= { =(-(;(>($ ,(~ j '(z{%*",
-"~ )(!(~([ ~&= { {([$~ ( c*- ](^(/(h+_&V,$ ((_(:(R&U&-@c*<([(x]~ o@( C=}(2/J;t*{ |(1(2(3(4(# |## 5(6(7(",
-"@+8(9(0(a({ m,j { [ b(~ o@c(d(e(Q,j [ @+{ f(g(t%~ { [ /*h(i(=*{ [ j j(k(1 $ - | l(m(n(o(E.E.p(q([ r(s(",
-"{ a/P$t(E 1 ( 1 u(( [ v(j e*E.w(h#E/j { x(, -*o$$ c*[ y*b g%5 =*[ y(, z(5 5%, 1 p$<*A(~ B(C()/%*p$= T]"};
diff --git a/front-end/src/routes.c b/front-end/src/routes.c
deleted file mode 100644 (file)
index 91f838f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-
-/*
- * Route entries are registered
- * separatly from the node set
- *
- * This set is not used for anything in particular
- * intended for future use
- */
-
-#include "routes.h"
-
-
-int
-init_route_entries()
-{
-  route_count = 0;
-
-  route_set.next = &route_set;
-  route_set.prev = &route_set;
-
-  return 1;
-}
-
-
-int
-add_route_entry(struct route_entry *entry)
-{
-  struct route_entry *new_entry;
-
-  if((new_entry = malloc(sizeof(struct route_entry))) == 0)
-    {
-      fprintf(stderr, "OUT OF MEMORY!\n");
-      exit(1);
-    }
-
-  /* queue */
-  new_entry->next = route_set.next;
-  route_set.next->prev = new_entry;
-  route_set.next = new_entry;
-  new_entry->prev = &route_set;
-
-  route_count++;
-
-  return 1;
-
-}
-
-int
-del_route_entry(struct route_entry *entry)
-{
-
-  route_count--;
-
-  return 1;
-}
diff --git a/front-end/src/routes.h b/front-end/src/routes.h
deleted file mode 100644 (file)
index e504592..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * OLSR ad-hoc routing table management protocol GUI front-end
- * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
- *
- * This file is part of olsrd-unik.
- *
- * uolsrGUI is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * uolsrGUI 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-
-/*
- * Route entries are registered
- * separatly from the node set
- *
- * This set is not used for anything in particular
- * intended for future use
- */
-
-#ifndef _OLSRD_FRONTEND_ROUTE
-#define _OLSRD_FRONTEND_ROUTE
-
-#include "common.h"
-
-#define MAX_IF_NAMESIZ  10
-
-struct route_entry
-{
-  union olsr_ip_addr gw;
-  union olsr_ip_addr dst;
-  olsr_u16_t         hopcnt;
-  char               if_name[MAX_IF_NAMESIZ];
-  struct route_entry *next;
-  struct route_entry *prev;
-};
-
-/* List */
-struct route_entry route_set;
-
-/* Counter */
-olsr_u32_t route_count;
-
-/* Functions */
-
-int
-init_route_entries();
-
-int
-add_route_entry(struct route_entry *);
-
-int
-del_route_entry(struct route_entry *);
-
-
-#endif
diff --git a/front-end/src/win32/arpa/inet.h b/front-end/src/win32/arpa/inet.h
deleted file mode 100644 (file)
index 8e215d6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#if !defined TL_ARPA_INET_H_INCLUDED
-
-#define TL_ARPA_INET_H_INCLUDED
-
-#define WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#undef interface
-
-int inet_aton(char *cp, struct in_addr *addr);
-int inet_pton(int af, char *src, void *dst);
-char *inet_ntop(int af, void *src, char *dst, int size);
-
-#endif
diff --git a/front-end/src/win32/compat.c b/front-end/src/win32/compat.c
deleted file mode 100644 (file)
index a1eff88..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Functions for the Windows port
- * Copyright (C) 2004 Thomas Lopatic (thomas@lopatic.de)
- *
- * This file is part of olsrd-unik.
- *
- * olsrd-unik is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * olsrd-unik 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 olsrd-unik; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- * Copyright (c) 1996,1999 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <sys/time.h>
-#include <ctype.h>
-
-void gettimeofday(struct timeval *TVal, void *TZone)
-{
-  SYSTEMTIME SysTime;
-  FILETIME FileTime;
-  unsigned __int64 Ticks;
-
-  GetSystemTime(&SysTime);
-  SystemTimeToFileTime(&SysTime, &FileTime);
-
-  Ticks = ((__int64)FileTime.dwHighDateTime << 32) |
-    (__int64)FileTime.dwLowDateTime;
-
-  Ticks -= 116444736000000000LL;
-
-  TVal->tv_sec = (unsigned int)(Ticks / 10000000);
-  TVal->tv_usec = (unsigned int)(Ticks % 10000000) / 10;
-}
-
-char *StrError(unsigned int ErrNo)
-{
-  static char Msg[1000];
-  
-  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrNo,
-               MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Msg,
-               sizeof (Msg), NULL);
-       
-  return Msg;
-}
-
-void PError(char *Str)
-{
-  char Msg[1000];
-  int Len;
-
-  sprintf(Msg, "ERROR - %s: ", Str);
-
-  Len = strlen(Msg);
-
-  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(),
-                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Msg + Len,
-                sizeof (Msg) - Len, NULL);
-
-  fprintf(stderr, "%s\n", Msg);
-}
-
-void WinSockPError(char *Str)
-{
-  char Msg[1000];
-  int Len;
-
-  sprintf(Msg, "ERROR - %s: ", Str);
-
-  Len = strlen(Msg);
-
-  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(),
-                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Msg + Len,
-                sizeof (Msg) - Len, NULL);
-
-  fprintf(stderr, "%s\n", Msg);
-}
-
-#define NS_INADDRSZ 4
-#define NS_IN6ADDRSZ 16
-#define NS_INT16SZ 2
-
-static char *inet_ntop4(const unsigned char *src, char *dst, int size)
-{
-  static const char fmt[] = "%u.%u.%u.%u";
-  char tmp[sizeof "255.255.255.255"];
-
-  if (sprintf(tmp, fmt, src[0], src[1], src[2], src[3]) > size)
-    return (NULL);
-
-  return strcpy(dst, tmp);
-}
-
-static char *inet_ntop6(const unsigned char *src, char *dst, int size)
-{
-  char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
-  struct { int base, len; } best, cur;
-  u_int words[NS_IN6ADDRSZ / NS_INT16SZ];
-  int i;
-
-  memset(words, '\0', sizeof words);
-
-  for (i = 0; i < NS_IN6ADDRSZ; i += 2)
-    words[i / 2] = (src[i] << 8) | src[i + 1];
-
-  best.base = -1;
-  cur.base = -1;
-
-  for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
-  {
-    if (words[i] == 0)
-    {
-      if (cur.base == -1)
-        cur.base = i, cur.len = 1;
-
-      else
-        cur.len++;
-    }
-
-    else
-    {
-      if (cur.base != -1)
-      {
-        if (best.base == -1 || cur.len > best.len)
-          best = cur;
-
-        cur.base = -1;
-      }
-    }
-  }
-
-  if (cur.base != -1)
-  {
-    if (best.base == -1 || cur.len > best.len)
-      best = cur;
-  }
-
-  if (best.base != -1 && best.len < 2)
-    best.base = -1;
-
-  tp = tmp;
-
-  for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
-  {
-    if (best.base != -1 && i >= best.base && i < (best.base + best.len))
-    {
-      if (i == best.base)
-        *tp++ = ':';
-
-      continue;
-    }
-
-    if (i != 0)
-      *tp++ = ':';
-
-    
-    if (i == 6 && best.base == 0 &&
-        (best.len == 6 || (best.len == 5 && words[5] == 0xffff)))
-    {
-      if (!inet_ntop4(src+12, tp, sizeof tmp - (tp - tmp)))
-        return (NULL);
-
-      tp += strlen(tp);
-
-      break;
-    }
-
-    tp += sprintf(tp, "%x", words[i]);
-  }
-
-  if (best.base != -1 && (best.base + best.len) == (NS_IN6ADDRSZ / NS_INT16SZ))
-    *tp++ = ':';
-
-  *tp++ = '\0';
-
-  if ((tp - tmp) > size)
-    return (NULL);
-
-  return strcpy(dst, tmp);
-}
-
-char *inet_ntop(int af, void *src, char *dst, int size)
-{
-  switch (af)
-  {
-  case AF_INET:
-    return (inet_ntop4(src, dst, size));
-
-  case AF_INET6:
-    return (inet_ntop6(src, dst, size));
-
-  default:
-    return (NULL);
-  }
-}
diff --git a/front-end/src/win32/netdb.h b/front-end/src/win32/netdb.h
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/front-end/src/win32/netinet/in.h b/front-end/src/win32/netinet/in.h
deleted file mode 100644 (file)
index cec124c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#if !defined TL_NETINET_IN_H_INCLUDED
-
-#define TL_NETINET_IN_H_INCLUDED
-
-#define WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#undef interface
-
-#endif
diff --git a/front-end/src/win32/sys/socket.h b/front-end/src/win32/sys/socket.h
deleted file mode 100644 (file)
index 3a1e8cb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#if !defined TL_SYS_SOCKET_H_INCLUDED
-
-#define TL_SYS_SOCKET_H_INCLUDED
-
-#define MSG_NOSIGNAL 0
-#define SHUT_RDWR SD_BOTH
-
-void WinSockPError(char *);
-char *StrError(unsigned int ErrNo);
-#endif
diff --git a/front-end/src/win32/sys/time.h b/front-end/src/win32/sys/time.h
deleted file mode 100644 (file)
index 51e52ec..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#if !defined TL_SYS_TIME_H_INCLUDED
-
-#define TL_SYS_TIME_H_INCLUDED
-
-#define WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#undef interface
-
-#define timeradd(x, y, z)                       \
-  do                                            \
-  {                                             \
-    (z)->tv_sec = (x)->tv_sec + (y)->tv_sec;    \
-                                                \
-    (z)->tv_usec = (x)->tv_usec + (y)->tv_usec; \
-                                                \
-    if ((z)->tv_usec >= 1000000)                \
-    {                                           \
-      (z)->tv_sec++;                            \
-      (z)->tv_usec -= 1000000;                  \
-    }                                           \
-  }                                             \
-  while (0)
-
-void gettimeofday(struct timeval *TVal, void *TZone);
-
-#endif