Reworked WIN32 Code
authorSven-Ola Tuecke <sven-ola@gmx.de>
Tue, 18 Dec 2007 12:35:55 +0000 (13:35 +0100)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Tue, 18 Dec 2007 12:35:55 +0000 (13:35 +0100)
30 files changed:
.hgignore
Makefile
gui/win32/Inst/installer.nsi
gui/win32/Main/Frontend.cpp
gui/win32/Main/LQ-Default.olsr
gui/win32/Main/MyDialog2.cpp
gui/win32/Main/RFC-Default.olsr
gui/win32/Main/StdAfx.h
gui/win32/Main/TrayIcon.cpp
lib/Makefile
lib/httpinfo/src/olsrd_httpinfo.c
lib/httpinfo/src/olsrd_plugin.h
make/Makefile.win32
src/cfgparser/Makefile
src/cfgparser/cfgfile_gen.c
src/cfgparser/olsrd_conf.c
src/cfgparser/olsrd_conf.h
src/cfgparser/version-script.txt
src/interfaces.h
src/ipc_frontend.c
src/ipcalc.h
src/main.c
src/net_olsr.c
src/olsr_cfg.h
src/olsr_types.h
src/win32/compat.c
src/win32/dlfcn.h
src/win32/ifnet.c
src/win32/kernel_routes.c
src/win32/net.c

index 8cdc196..ac933c3 100644 (file)
--- a/.hgignore
+++ b/.hgignore
@@ -1,5 +1,6 @@
 syntax: glob
 *.o
+*.a
 *.d
 *.diff
 *.~
@@ -9,3 +10,17 @@ src/cfgparser/oparse.c
 src/cfgparser/oparse.h
 src/cfgparser/oscan.c
 lib/*/*so.*.*
+*.obj
+*.lib
+*.dll
+olsrd.exe
+olsr-setup.exe
+*.opt
+*.ncb
+*.aps
+*.sbr
+*.plg
+gui/win32/Main/Debug/
+gui/win32/Main/Release/
+gui/win32/Shim/Debug/
+gui/win32/Shim/Release/
index a4188d4..dd94152 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -62,6 +62,9 @@ default_target: $(EXENAME)
 $(EXENAME):    $(OBJS) src/builddata.o
                $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
 
+cfgparser:     $(CFGDEPS)
+               $(MAKE) -C $(CFGDIR)
+
 switch:                
        $(MAKECMD) -C $(SWITCHDIR)
 
index 4d7edb7..6109ad7 100644 (file)
@@ -54,7 +54,7 @@ UninstPage uninstConfirm
 UninstPage instfiles
 
 Function .onInit
-        MessageBox MB_YESNO "This will install olsr.org 0.5.0 on your computer. Continue?" IDYES NoAbort
+        MessageBox MB_YESNO "This will install olsr.org 0.5.4 on your computer. Continue?" IDYES NoAbort
         Abort
 NoAbort:
 FunctionEnd
@@ -68,20 +68,23 @@ Section "Program Files"
 
         SetOutPath $INSTDIR
 
-        File /oname=Switch.exe ..\release\Main.exe
-        File ..\release\Shim.exe
+        File ..\Main\release\Switch.exe
+        File ..\Shim\release\Shim.exe
         File ..\..\..\olsrd.exe
-        File ..\..\..\olsr_switch.exe
         File ..\..\..\src\cfgparser\olsrd_cfgparser.dll
         File /oname=README.txt ..\..\..\README
         File /oname=README-LQ.html ..\..\..\README-Link-Quality.html
         File /oname=README-Fish-Eye.txt ..\..\..\README-Link-Quality-Fish-Eye.txt
         File ..\..\..\README-Olsr-Switch.html
         File linux-manual.txt
-        File /oname=olsrd.conf.rfc ..\..\..\files\olsrd.conf.win32.rfc
-        File /oname=olsrd.conf.lq ..\..\..\files\olsrd.conf.win32.lq
+        File ..\Main\RFC-Default.olsr
+        File ..\Main\LQ-Default.olsr
         File ..\..\..\lib\dot_draw\olsrd_dot_draw.dll
         File ..\..\..\lib\httpinfo\olsrd_httpinfo.dll
+        File ..\..\..\lib\mini\olsrd_mini.dll
+        File ..\..\..\lib\pgraph\olsrd_pgraph.dll
+        File ..\..\..\lib\secure\olsrd_secure.dll
+        File ..\..\..\lib\txtinfo\olsrd_txtinfo.dll
 
         WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\olsr.org DisplayName olsr.org
         WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\olsr.org UninstallString $INSTDIR\uninstall.exe
@@ -171,8 +174,11 @@ Section "Uninstall"
        Delete $INSTDIR\olsrd.conf.rfc
        Delete $INSTDIR\olsrd.conf.lq
         Delete $INSTDIR\olsrd_dot_draw.dll
-        Delete $INSTDIR\olsrd_nameservice.dll
         Delete $INSTDIR\olsrd_httpinfo.dll
+        Delete $INSTDIR\olsrd_mini.dll
+        Delete $INSTDIR\olsrd_pgraph.dll
+        Delete $INSTDIR\olsrd_secure.dll
+        Delete $INSTDIR\olsrd_txtinfo.dll
         Delete $INSTDIR\uninstall.exe
 
         RMDir $INSTDIR
index 1ce378a..ea238fb 100644 (file)
@@ -256,8 +256,6 @@ struct IoInfo
 
 extern "C" struct IoInfo *__pioinfo[];
 
-extern "C" void win32_stdio_hack(unsigned int handle);
-
 int CFrontendApp::RedirectStdHandles(void)
 {
        SECURITY_ATTRIBUTES SecAttr;
index aba665e..e3b268a 100644 (file)
-#
-# Default configuration for the GUI
-#
-#
-
-#
-# By default don't print anything to save CPU cycles
-#
-
-DebugLevel             0
-
-#
-# Enable the link quality extensions?
-#
-# 0 - no
-# 1 - yes, use link quality for MPR selection
-# 2 - yes, use link quality for MPR selection and routing
-#
-
-LinkQualityLevel       2
-
-#
-# Enable the fish eye algorithm
-#
-# 0 - no
-# 1 - yes
-#
-
-LinkQualityFishEye     1
-
-#
-# Windows size for packet loss calculation
-#
-
-LinkQualityWinSize     12
-
-#
-# Do not use hysteresis
-#
-
-UseHysteresis          no
-
-#
-# If using hysteresis, use "smooth" parameters
-#
-
-HystScaling            0.1
-HystThrHigh            0.8
-HystThrLow             0.3
-
-#
-# The pollrate used by the scheduler
-#
-
-Pollrate               0.1
-
-#
-# Which neighbours should be advertised via TC messages?
-#
-# 0 - only advertise our MPR selectors
-# 1 - advertise our MPR selectors and our MPRs
-# 2 - advertise all neighbors
-#
-
-TcRedundancy           2
-
-#
-# Specifies by how many MPRs each two-hop neighbour should be covered
-#
-
-MprCoverage            3
-
-#
-# Load the HTTP info plugin
-#
-
-LoadPlugin             "olsrd_httpinfo.dll"
-{
-       PlParam "Net"   "0.0.0.0 0.0.0.0"
-}
-
-#
-# This default gateway HNA will only be considered by the GUI if the
-# computer actually has a default route.
-#
-
-Hna4
-{
-       0.0.0.0 0.0.0.0
-}
-
-#
-# Pseudo interface used by the GUI. If we do not select any interface
-# in the GUI, we still have to store the per-interface settings of the
-# GUI somewhere. We then simply create a pseudo interfaced named GUI"
-# for storing this information. When parsing the configuration file,
-# the settings will be read and will be used to populate the GUI, but
-# after that the "GUI" interface will be discarded.
-#
-
-Interface "GUI"
-{
-       #
-       # HELLO interval and validity time in seconds (float)
-       #
-
-       HelloInterval           2.0
-       HelloValidityTime       20.0
-
-       #
-       # TC interval and validity time in seconds (float)
-       #
-
-       TcInterval              5.0
-       TcValidityTime          30.0
-
-       #
-       # MID interval and validity time in seconds (float)
-       #
-
-       MidInterval             5.0
-       MidValidityTime         30.0
-
-       #
-       # HNA interval and validity time in seconds (float)
-       #
-
-       HnaInterval             5.0
-       HnaValidityTime         30.0
-}
+#\r
+# Default configuration for the GUI\r
+#\r
+# $Id: LQ-Default.olsr,v 1.1 2005/03/31 18:20:02 tlopatic Exp $\r
+#\r
+\r
+# Debug level(0-9)\r
+# If set to 0 the daemon runs in the background\r
+\r
+DebugLevel     0\r
+\r
+# IP version to use (4 or 6)\r
+\r
+IpVersion      4\r
+\r
+# FIBMetric ("flat" or "correct")\r
+\r
+FIBMetric      "flat"\r
+\r
+# HNA IPv4 routes\r
+# syntax: netaddr/prefix\r
+\r
+Hna4 {\r
+}\r
+\r
+# Should olsrd keep on running even if there are\r
+# no interfaces available? This is a good idea\r
+# for a PCMCIA/USB hotswap environment.\r
+# "yes" OR "no"\r
+\r
+AllowNoInt     yes\r
+\r
+# TOS(type of service) to use. Default is 16\r
+\r
+TosValue       16\r
+\r
+# Policy Routing Table to use. Default is 254\r
+\r
+RtTable                254\r
+\r
+# The fixed willingness to use(0-7)\r
+# If not set willingness will be calculated\r
+# dynammically based on battery/power status\r
+\r
+#Willingness   4\r
+\r
+# Allow processes like the GUI front-end\r
+# to connect to the daemon.\r
+\r
+IpcConnect {\r
+    MaxConnections     1\r
+    Host               127.0.0.1\r
+    Net                        192.168.1.0/24\r
+}\r
+\r
+# Hysteresis adds more robustness to the\r
+# link sensing.\r
+# Used by default. 'yes' or 'no'\r
+\r
+UseHysteresis  no\r
+\r
+# Hysteresis parameters\r
+# Do not alter these unless you know \r
+# what you are doing!\r
+# Set to auto by default. Allowed\r
+# values are floating point values\r
+# in the interval 0,1\r
+# THR_LOW must always be lower than\r
+# THR_HIGH!!\r
+\r
+#HystScaling   0.50\r
+#HystThrHigh   0.80\r
+#HystThrLow    0.30\r
+\r
+# Polling rate in seconds(float).\r
+# Auto uses default value 0.05 sec\r
+\r
+Pollrate       0.05\r
+# Interval to poll network interfaces for configuration\r
+# changes. Defaults to 2.5 seconds\r
+NicChgsPollInt 2.50\r
+# TC redundancy\r
+# Specifies how much neighbor info should\r
+# be sent in TC messages\r
+# Possible values are:\r
+# 0 - only send MPR selectors\r
+# 1 - send MPR selectors and MPRs\r
+# 2 - send all neighbors\r
+#\r
+# defaults to 0\r
+\r
+TcRedundancy   2\r
+\r
+# MPR coverage\r
+# Specifies how many MPRs a node should\r
+# try select to reach every 2 hop neighbor\r
+# Can be set to any integer >0\r
+# defaults to 1\r
+\r
+MprCoverage    7\r
+\r
+# Link quality level\r
+# 0 = do not use link quality\r
+# 1 = use link quality for MPR selection\r
+# 2 = use link quality for MPR selection and routing\r
+\r
+LinkQualityLevel       2\r
+\r
+# Fish Eye algorithm\r
+# 0 = do not use fish eye\r
+# 1 = use fish eye\r
+\r
+LinkQualityFishEye     1\r
+\r
+# Link quality window size\r
+\r
+LinkQualityWinSize     100\r
+\r
+# Clear screen when printing debug output?\r
+\r
+ClearScreen    no\r
+\r
+# Olsrd plugins to load\r
+# This must be the absolute path to the file\r
+# or the loader will use the following scheme:\r
+# - Try the paths in the LD_LIBRARY_PATH \r
+#   environment variable.\r
+# - The list of libraries cached in /etc/ld.so.cache\r
+# - /lib, followed by /usr/lib\r
+\r
+LoadPlugin "olsrd_txtinfo.dll" {\r
+    PlParam "Accept"   "127.0.0.1"\r
+}\r
+LoadPlugin "olsrd_dot_draw.dll" {\r
+    PlParam "Accept"   "127.0.0.1"\r
+}\r
+LoadPlugin "olsrd_httpinfo.dll" {\r
+    PlParam "port"     "8080"\r
+    PlParam "Host"     "127.0.0.1"\r
+    PlParam "Net"      "104.0.0.0 255.0.0.0"\r
+    PlParam "Net"      "192.168.0.0 255.255.0.0"\r
+}\r
+\r
+# Interfaces\r
+# Multiple interfaces with the same configuration\r
+# can shar the same config block. Just list the\r
+# interfaces(e.g. Interface "eth0" "eth2"\r
+\r
+Interface "GUI" {\r
+\r
+    # IPv4 broadcast address to use. The\r
+    # one usefull example would be 255.255.255.255\r
+    # If not defined the broadcastaddress\r
+    # every card is configured with is used\r
+\r
+    #Ip4Broadcast      255.255.255.255\r
+\r
+    # IPv6 address scope to use.\r
+    # Must be 'site-local' or 'global'\r
+\r
+    Ip6AddrType        global\r
+\r
+    # IPv6 multicast address to use when\r
+    # using site-local addresses.\r
+    # If not defined, ff05::15 is used\r
+    Ip6MulticastSite   ff05::15\r
+\r
+    # IPv6 multicast address to use when\r
+    # using global addresses\r
+    # If not defined, ff0e::1 is used\r
+    Ip6MulticastGlobal ff0e::1\r
+\r
+    # Olsrd can autodetect changes in\r
+    # interface configurations. Enabled by default\r
+    # turn off to save CPU.\r
+    AutoDetectChanges: yes\r
+    # Emission and validity intervals.\r
+    # If not defined, RFC proposed values will\r
+    # in most cases be used.\r
+\r
+    HelloInterval      5.00\r
+    HelloValidityTime  125.00\r
+    TcInterval         3.00\r
+    TcValidityTime     375.00\r
+    MidInterval                25.00\r
+    MidValidityTime    375.00\r
+    HnaInterval                25.00\r
+    HnaValidityTime    375.00\r
+    #LinkQualityMult   default 1.0\r
+    # When multiple links exist between hosts\r
+    # the weight of interface is used to determine\r
+    # the link to use. Normally the weight is\r
+    # automatically calculated by olsrd based\r
+    # on the characteristics of the interface,\r
+    # but here you can specify a fixed value.\r
+    # Olsrd will choose links with the lowest value.\r
+    # Note:\r
+    # Interface weight is used only when LinkQualityLevel is 0.\r
+    # For any other value of LinkQualityLevel, the interface ETX\r
+    # value is used instead.\r
+\r
+    #Weight     0\r
+\r
+}\r
index 5d822d9..cdd0bad 100644 (file)
@@ -232,7 +232,7 @@ void MyDialog2::OnEtxCheck()
 
 int MyDialog2::OpenConfigFile(CString PathName)
 {
-       struct hna4_entry *Hna4;
+       struct ip_prefix_list *Hna;
        struct olsr_if *Int, *PrevInt;
        struct olsr_msg_params *MsgPar;
        int NumInt = m_InterfaceList.GetItemCount();
@@ -334,8 +334,8 @@ int MyDialog2::OpenConfigFile(CString PathName)
 
        m_InternetCheck.SetCheck(FALSE);
 
-       for (Hna4 = Conf->hna4_entries; Hna4 != NULL; Hna4 = Hna4->next)
-               if (Hna4->net.v4 == 0 && Hna4->netmask.v4 == 0 &&
+       for (Hna = Conf->hna_entries; Hna != NULL; Hna = Hna->next)
+               if (0 == Hna->net.prefix_len &&
                        m_InternetCheck.IsWindowEnabled())
                m_InternetCheck.SetCheck(TRUE);
 
@@ -359,7 +359,7 @@ int MyDialog2::OpenConfigFile(CString PathName)
                else
                        PrevInt->next = Int->next;
 
-               olsrd_cnf_free(Int);
+               win32_olsrd_free(Int);
        }
 
        return 0;
@@ -369,7 +369,7 @@ static struct olsr_if *AddInterface(struct olsrd_config **Conf, CString Name)
 {
        struct olsr_if *Int;
 
-       Int = (struct olsr_if *)olsrd_cnf_malloc(sizeof (struct olsr_if));
+       Int = (struct olsr_if *)win32_olsrd_malloc(sizeof (struct olsr_if));
 
        if (Int == NULL)
        {
@@ -377,11 +377,11 @@ static struct olsr_if *AddInterface(struct olsrd_config **Conf, CString Name)
                return NULL;
        }
 
-       Int->name = (char *)olsrd_cnf_malloc(Name.GetLength() + 1);
+       Int->name = (char *)win32_olsrd_malloc(Name.GetLength() + 1);
 
        if (Int->name == NULL)
        {
-               olsrd_cnf_free(Int);
+               win32_olsrd_free(Int);
 
                AfxMessageBox("Cannot allocate memory.");
                return NULL;
@@ -390,7 +390,6 @@ static struct olsr_if *AddInterface(struct olsrd_config **Conf, CString Name)
        ::lstrcpy(Int->name, Name);
 
        Int->config = NULL;
-       Int->index = 0;
        Int->configured = OLSR_FALSE;
        Int->interf = NULL;
 
@@ -407,12 +406,12 @@ int MyDialog2::SaveConfigFile(CString PathName, int Real)
        struct olsr_if *Int, *PrevInt;
        struct olsr_msg_params *MsgPar;
        CString Conv;
-       struct hna4_entry *Hna4, *NewHna4, *PrevHna4;
+       struct ip_prefix_list *Hna, *NewHna, *PrevHna;
        int NumInt = m_InterfaceList.GetItemCount();
        int i;
        CString IntName, IntName2;
-       struct ipc_host *IpcHost;
-       unsigned int Local;
+       struct ip_prefix_list *IpcHost;
+       union olsr_ip_addr Local;
 
        PrevInt = NULL;
 
@@ -542,61 +541,68 @@ int MyDialog2::SaveConfigFile(CString PathName, int Real)
        m_EtxWindowSize.GetWindowText(Conv);
        Conf->lq_wsize = atoi(Conv);
 
-       PrevHna4 = NULL;
+       PrevHna = NULL;
 
        // check for a default gateway HNA4 entry
 
-       for (Hna4 = Conf->hna4_entries; Hna4 != NULL; Hna4 = Hna4->next)
+       for (Hna = Conf->hna_entries; Hna != NULL; Hna = Hna->next)
        {
-               if (Hna4->net.v4 == 0 && Hna4->netmask.v4 == 0)
+               if (0 == Hna->net.prefix_len)
                        break;
 
-               PrevHna4 = Hna4;
+               PrevHna = Hna;
        }
 
-       // add default gateway HNA4 entry
+       // add default gateway HNA entry
 
-       if (m_InternetCheck.GetCheck() && Hna4 == NULL)
+       if (m_InternetCheck.GetCheck() && Hna == NULL)
        {
-               NewHna4 = (struct hna4_entry * )
-                       olsrd_cnf_malloc(sizeof (struct hna4_entry));
+               NewHna = (struct ip_prefix_list * )
+                       win32_olsrd_malloc(sizeof (struct ip_prefix_list));
 
-               if (NewHna4 == NULL)
+               if (NewHna == NULL)
                {
                        AfxMessageBox("Cannot allocate memory.");
                        return -1;
                }
 
-               NewHna4->net.v4 = 0;
-               NewHna4->netmask.v4 = 0;
+               memset(NewHna, 0, sizeof (struct ip_prefix_list));
 
-               NewHna4->next = Conf->hna4_entries;
-               Conf->hna4_entries = NewHna4;
+               NewHna->next = Conf->hna_entries;
+               Conf->hna_entries = NewHna;
        }
 
        // remove default gateway HNA4 entry
 
-       if (!m_InternetCheck.GetCheck() && Hna4 != NULL)
+       if (!m_InternetCheck.GetCheck() && Hna != NULL)
        {
-               if (PrevHna4 == NULL)
-                       Conf->hna4_entries = Hna4->next;
+               if (PrevHna == NULL)
+                       Conf->hna_entries = Hna->next;
 
                else
-                       PrevHna4->next = Hna4->next;
+                       PrevHna->next = Hna->next;
 
-               olsrd_cnf_free(Hna4);
+               win32_olsrd_free(Hna);
        }
 
-       Local = inet_addr("127.0.0.1");
+       if (AF_INET == Conf->ip_version)
+       {
+               Local.v4.s_addr = ::inet_addr("127.0.0.1");
+       }
+       else
+       {
+               memset(&Local, 0, sizeof(Local));
+               Local.v6.u.Byte[15] = 1;
+       }
 
-       for (IpcHost = Conf->ipc_hosts; IpcHost != NULL; IpcHost = IpcHost->next)
-               if (IpcHost->host.v4 == Local)
+       for (IpcHost = Conf->ipc_nets; IpcHost != NULL; IpcHost = IpcHost->next)
+               if (0 == memcmp(&IpcHost->net.prefix, &Local, Conf->ipsize))
                        break;
 
        if (IpcHost == NULL && Real == 0)
        {
-               IpcHost = (struct ipc_host *)
-                       olsrd_cnf_malloc(sizeof (struct ipc_host));
+               IpcHost = (struct ip_prefix_list *)
+                       win32_olsrd_malloc(sizeof (struct ip_prefix_list));
 
                if (IpcHost == NULL)
                {
@@ -604,13 +610,13 @@ int MyDialog2::SaveConfigFile(CString PathName, int Real)
                        return -1;
                }
 
-               IpcHost->host.v4 = Local;
+               IpcHost->net.prefix = Local;
+               IpcHost->net.prefix_len = (olsr_u8_t)Conf->ipsize;
 
-               IpcHost->next = Conf->ipc_hosts;
-               Conf->ipc_hosts = IpcHost;
+               IpcHost->next = Conf->ipc_nets;
+               Conf->ipc_nets = IpcHost;
 
                Conf->ipc_connections++;
-               Conf->open_ipc = OLSR_TRUE;
        }
 
        // write configuration file
index 46bd186..051fa62 100644 (file)
-#
-# Default configuration for the GUI
-#
-#
-
-#
-# By default don't print anything to save CPU cycles
-#
-
-DebugLevel             0
-
-#
-# Enable the link quality extensions?
-#
-# 0 - no
-# 1 - yes, use link quality for MPR selection
-# 2 - yes, use link quality for MPR selection and routing
-#
-
-LinkQualityLevel       0
-
-#
-# Enable the fish eye algorithm
-#
-# 0 - no
-# 1 - yes
-#
-
-LinkQualityFishEye     0
-
-#
-# Windows size for packet loss calculation
-#
-
-LinkQualityWinSize     12
-
-#
-# Do not use hysteresis
-#
-
-UseHysteresis          no
-
-#
-# If using hysteresis, use the RFC parameters
-#
-
-HystScaling            0.5
-HystThrHigh            0.8
-HystThrLow             0.3
-
-#
-# The pollrate used by the scheduler
-#
-
-Pollrate               0.1
-
-#
-# Which neighbours should be advertised via TC messages?
-#
-# 0 - only advertise our MPR selectors
-# 1 - advertise our MPR selectors and our MPRs
-# 2 - advertise all neighbors
-#
-
-TcRedundancy           0
-
-#
-# Specifies by how many MPRs each two-hop neighbour should be covered
-#
-
-MprCoverage            1
-
-#
-# Load the HTTP info plugin
-#
-
-LoadPlugin             "olsrd_httpinfo.dll"
-{
-       PlParam "Net"   "0.0.0.0 0.0.0.0"
-}
-
-#
-# This default gateway HNA will only be considered by the GUI if the
-# computer actually has a default route.
-#
-
-Hna4
-{
-       0.0.0.0 0.0.0.0
-}
-
-#
-# Pseudo interface used by the GUI. If we do not select any interface
-# in the GUI, we still have to store the per-interface settings of the
-# GUI somewhere. We then simply create a pseudo interfaced named GUI"
-# for storing this information. When parsing the configuration file,
-# the settings will be read and will be used to populate the GUI, but
-# after that the "GUI" interface will be discarded.
-#
-
-Interface "GUI"
-{
-       #
-       # HELLO interval and validity time in seconds (float)
-       #
-
-       HelloInterval           2.0
-       HelloValidityTime       6.0
-
-       #
-       # TC interval and validity time in seconds (float)
-       #
-
-       TcInterval              5.0
-       TcValidityTime          15.0
-
-       #
-       # MID interval and validity time in seconds (float)
-       #
-
-       MidInterval             5.0
-       MidValidityTime         15.0
-
-       #
-       # HNA interval and validity time in seconds (float)
-       #
-
-       HnaInterval             5.0
-       HnaValidityTime         15.0
-}
+#\r
+# Default configuration for the GUI\r
+#\r
+# $Id: RFC-Default.olsr,v 1.1 2005/03/31 18:20:02 tlopatic Exp $\r
+#\r
+\r
+# Debug level(0-9)\r
+# If set to 0 the daemon runs in the background\r
+\r
+DebugLevel     0\r
+\r
+# IP version to use (4 or 6)\r
+\r
+IpVersion      4\r
+\r
+# FIBMetric ("flat" or "correct")\r
+\r
+FIBMetric      "flat"\r
+\r
+# HNA IPv4 routes\r
+# syntax: netaddr/prefix\r
+\r
+Hna4 {\r
+}\r
+\r
+# Should olsrd keep on running even if there are\r
+# no interfaces available? This is a good idea\r
+# for a PCMCIA/USB hotswap environment.\r
+# "yes" OR "no"\r
+\r
+AllowNoInt     yes\r
+\r
+# TOS(type of service) to use. Default is 16\r
+\r
+TosValue       16\r
+\r
+# Policy Routing Table to use. Default is 254\r
+\r
+RtTable                254\r
+\r
+# The fixed willingness to use(0-7)\r
+# If not set willingness will be calculated\r
+# dynammically based on battery/power status\r
+\r
+#Willingness   4\r
+\r
+# Allow processes like the GUI front-end\r
+# to connect to the daemon.\r
+\r
+IpcConnect {\r
+    MaxConnections     0\r
+}\r
+\r
+# Hysteresis adds more robustness to the\r
+# link sensing.\r
+# Used by default. 'yes' or 'no'\r
+\r
+UseHysteresis  no\r
+\r
+# Hysteresis parameters\r
+# Do not alter these unless you know \r
+# what you are doing!\r
+# Set to auto by default. Allowed\r
+# values are floating point values\r
+# in the interval 0,1\r
+# THR_LOW must always be lower than\r
+# THR_HIGH!!\r
+\r
+#HystScaling   0.50\r
+#HystThrHigh   0.80\r
+#HystThrLow    0.30\r
+\r
+# Polling rate in seconds(float).\r
+# Auto uses default value 0.05 sec\r
+\r
+Pollrate       0.10\r
+# Interval to poll network interfaces for configuration\r
+# changes. Defaults to 2.5 seconds\r
+NicChgsPollInt 2.50\r
+# TC redundancy\r
+# Specifies how much neighbor info should\r
+# be sent in TC messages\r
+# Possible values are:\r
+# 0 - only send MPR selectors\r
+# 1 - send MPR selectors and MPRs\r
+# 2 - send all neighbors\r
+#\r
+# defaults to 0\r
+\r
+TcRedundancy   0\r
+\r
+# MPR coverage\r
+# Specifies how many MPRs a node should\r
+# try select to reach every 2 hop neighbor\r
+# Can be set to any integer >0\r
+# defaults to 1\r
+\r
+MprCoverage    1\r
+\r
+# Link quality level\r
+# 0 = do not use link quality\r
+# 1 = use link quality for MPR selection\r
+# 2 = use link quality for MPR selection and routing\r
+\r
+LinkQualityLevel       0\r
+\r
+# Fish Eye algorithm\r
+# 0 = do not use fish eye\r
+# 1 = use fish eye\r
+\r
+LinkQualityFishEye     0\r
+\r
+# Link quality window size\r
+\r
+LinkQualityWinSize     12\r
+\r
+# Clear screen when printing debug output?\r
+\r
+ClearScreen    no\r
+\r
+# Olsrd plugins to load\r
+# This must be the absolute path to the file\r
+# or the loader will use the following scheme:\r
+# - Try the paths in the LD_LIBRARY_PATH \r
+#   environment variable.\r
+# - The list of libraries cached in /etc/ld.so.cache\r
+# - /lib, followed by /usr/lib\r
+\r
+LoadPlugin "olsrd_httpinfo.dll" {\r
+    PlParam "Net"      "0.0.0.0 0.0.0.0"\r
+}\r
+\r
+# Interfaces\r
+# Multiple interfaces with the same configuration\r
+# can shar the same config block. Just list the\r
+# interfaces(e.g. Interface "eth0" "eth2"\r
+\r
+Interface "GUI" {\r
+\r
+    # IPv4 broadcast address to use. The\r
+    # one usefull example would be 255.255.255.255\r
+    # If not defined the broadcastaddress\r
+    # every card is configured with is used\r
+\r
+    #Ip4Broadcast      255.255.255.255\r
+\r
+    # IPv6 address scope to use.\r
+    # Must be 'site-local' or 'global'\r
+\r
+    Ip6AddrType        global\r
+\r
+    # IPv6 multicast address to use when\r
+    # using site-local addresses.\r
+    # If not defined, ff05::15 is used\r
+    Ip6MulticastSite   ff05::15\r
+\r
+    # IPv6 multicast address to use when\r
+    # using global addresses\r
+    # If not defined, ff0e::1 is used\r
+    Ip6MulticastGlobal ff0e::1\r
+\r
+    # Olsrd can autodetect changes in\r
+    # interface configurations. Enabled by default\r
+    # turn off to save CPU.\r
+    AutoDetectChanges: yes\r
+    # Emission and validity intervals.\r
+    # If not defined, RFC proposed values will\r
+    # in most cases be used.\r
+\r
+    #HelloInterval     2.00\r
+    #HelloValidityTime 6.00\r
+    #TcInterval                5.00\r
+    #TcValidityTime    15.00\r
+    #MidInterval       5.00\r
+    #MidValidityTime   15.00\r
+    #HnaInterval       5.00\r
+    #HnaValidityTime   15.00\r
+    #LinkQualityMult   default 1.0\r
+    # When multiple links exist between hosts\r
+    # the weight of interface is used to determine\r
+    # the link to use. Normally the weight is\r
+    # automatically calculated by olsrd based\r
+    # on the characteristics of the interface,\r
+    # but here you can specify a fixed value.\r
+    # Olsrd will choose links with the lowest value.\r
+    # Note:\r
+    # Interface weight is used only when LinkQualityLevel is 0.\r
+    # For any other value of LinkQualityLevel, the interface ETX\r
+    # value is used instead.\r
+\r
+    #Weight     0\r
+\r
+}\r
index d87d457..1668361 100644 (file)
@@ -1,55 +1,30 @@
-#pragma once
-
-#ifndef _SECURE_ATL
-#define _SECURE_ATL 1
-#endif
-
-#ifndef VC_EXTRALEAN
-#define VC_EXTRALEAN
-#endif
-
-#ifndef WINVER
-#define WINVER 0x0501
-#endif
-
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
-#endif                                         
+// stdafx.h : Include-Datei für Standard-System-Include-Dateien,
+//  oder projektspezifische Include-Dateien, die häufig benutzt, aber
+//      in unregelmäßigen Abständen geändert werden.
+//
 
-#ifndef _WIN32_WINDOWS
-#define _WIN32_WINDOWS 0x0410
-#endif
+#if !defined(AFX_STDAFX_H__D43BD17B_AEC0_43A5_9F3B_1DAA99152E38__INCLUDED_)
+#define AFX_STDAFX_H__D43BD17B_AEC0_43A5_9F3B_1DAA99152E38__INCLUDED_
 
-#ifndef _WIN32_IE
-#define _WIN32_IE 0x0600
-#endif
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
 
-#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
+#define VC_EXTRALEAN           // Selten verwendete Teile der Windows-Header nicht einbinden
 
-#define _AFX_ALL_WARNINGS
+#include <afxwin.h>         // MFC-Kern- und -Standardkomponenten
+#include <afxext.h>         // MFC-Erweiterungen
+#include <afxdtctl.h>          // MFC-Unterstützung für allgemeine Steuerelemente von Internet Explorer 4
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>                    // MFC-Unterstützung für gängige Windows-Steuerelemente
+#endif // _AFX_NO_AFXCMN_SUPPORT
 
-#include <afxwin.h>
-#include <afxext.h>
-#include <afxdisp.h>
 #include <afxmt.h>
-#include <iphlpapi.h>
+#include <afxtempl.h>
 #include <winsock2.h>
+#include <iphlpapi.h>
 
-#ifndef _AFX_NO_OLE_SUPPORT
-#include <afxdtctl.h>
-#endif
-#ifndef _AFX_NO_AFXCMN_SUPPORT
-#include <afxcmn.h>
-#endif
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
 
-#ifdef _UNICODE
-#if defined _M_IX86
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#elif defined _M_IA64
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#elif defined _M_X64
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#else
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#endif
-#endif
+#endif // !defined(AFX_STDAFX_H__D43BD17B_AEC0_43A5_9F3B_1DAA99152E38__INCLUDED_)
index 2c5b7cb..d326ccd 100644 (file)
@@ -119,7 +119,7 @@ void TrayIcon::setTrayAppearance( bool start, unsigned int res_id, const char* m
        notifyIconData.uCallbackMessage = 123456;
        notifyIconData.uID = TRAYICONID; 
        notifyIconData.hIcon = (HICON)LoadIcon( hInst, MAKEINTRESOURCE( res_id ) );  
-       strcpy_s( notifyIconData.szTip, sizeof (notifyIconData.szTip), message ); 
+       strncpy( notifyIconData.szTip, message, sizeof (notifyIconData.szTip) ); 
        
        if( start )
                Shell_NotifyIcon( NIM_ADD, &notifyIconData );
index 133a411..0b0dc71 100644 (file)
@@ -2,8 +2,12 @@
 ifeq ($(OS),linux)
 SUBDIRS := $(shell find -maxdepth 2 -name Makefile -not -path ./Makefile -printf "%h\n")
 else
+ifeq ($(OS),win32)
+SUBDIRS := bmf dot_draw httpinfo mini pgraph secure txtinfo
+else
 SUBDIRS := bmf dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo
 endif
+endif
 
 .PHONY: $(SUBDIRS)
 
index 4dc6716..71faba6 100644 (file)
@@ -86,7 +86,7 @@
 #define OS "Undefined"
 #endif
 
-static char copyright_string[] __attribute__((unused)) = "olsr.org HTTPINFO plugin Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org) All rights reserved.";
+static char copyright_string[] __attribute__((unused)) = "olsr.org HTTPINFO plugin Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org) All rights reserved.";
 
 #define MAX_CLIENTS 3
 
index def1351..e04ca27 100644 (file)
@@ -67,7 +67,7 @@
 
 #define PLUGIN_NAME    "Httpinfo olsrd plugin"
 #define PLUGIN_VERSION "0.1"
-#define PLUGIN_AUTHOR   "Andreas Tønnesen"
+#define PLUGIN_AUTHOR   "Andreas Tønnesen"
 #define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
 #define PLUGIN_INTERFACE_VERSION 5
 
index 799f89d..a04121e 100644 (file)
@@ -26,7 +26,15 @@ OS_LIB_PTHREAD =
 OS_CFLAG_PTHREAD =
 OS_LIB_DYNLOAD =
 
-olsr-$(VERS).zip:      gui/win32/release/Main.exe \
+win32lib: gui/win32/Main/olsrd_cfgparser.lib
+
+gui/win32/Main/olsrd_cfgparser.lib: cfgparser
+               @# Using the cygwin dlltool does not work (missing functions hooks)
+               @# dlltool --input-def src/cfgparser/olsrd_cfgparser.def --dllname src/cfgparser/olsrd_cfgparser.dll --output-lib $@
+               @# Use the Microsoft Lib Tool instead
+               lib /machine:i386 /def:src/cfgparser/olsrd_cfgparser.def /out:gui/win32/Main/olsrd_cfgparser.lib
+
+olsr-$(VERS).zip: gui/win32/release/Main.exe \
                gui/win32/release/Shim.exe \
                olsrd.exe \
                olsr_switch.exe \
index 789e455..6724c14 100644 (file)
@@ -50,8 +50,7 @@ ifeq ($(OS), win32)
 
 LIBNAME ?=     olsrd_cfgparser.dll
 BINNAME ?=     olsrd_cfgparser.exe
-CPPFLAGS +=    -DWIN32_STDIO_HACK
-OBJS +=                ../win32/compat.o
+OBJS +=                ../win32/compat.o ../ipcalc.o ../builddata.o
 
 else
 
index cd20c7d..414ea7e 100644 (file)
@@ -86,10 +86,10 @@ olsrd_write_cnf(struct olsrd_config *cnf, const char *fname)
   fprintf(fd, "# FIBMetric (\"%s\" or \"%s\")\n\nFIBMetric\t\"%s\"\n\n", CFG_FIBM_FLAT, CFG_FIBM_CORRECT, cnf->flat_fib_metric ? CFG_FIBM_FLAT : CFG_FIBM_CORRECT);
 
   /* HNA IPv4/IPv6 */
-  fprintf(fd, "# HNA IPv%1$d routes\n# syntax: netaddr netmask\n\nHna1$d {\n", cnf->ip_version == AF_INET ? 4 : 6);
+  fprintf(fd, "# HNA IPv%d routes\n# syntax: netaddr/prefix\n\nHna%d {\n", cnf->ip_version == AF_INET ? 4 : 6, cnf->ip_version == AF_INET ? 4 : 6);
   while(h) {
     struct ipaddr_str strbuf;
-    fprintf(fd, "    %s/%d", olsr_ip_to_string(&strbuf, &h->net.prefix), h->net.prefix_len);
+    fprintf(fd, "    %s/%d\n", olsr_ip_to_string(&strbuf, &h->net.prefix), h->net.prefix_len);
     h = h->next;
   }
   fprintf(fd, "}\n\n");
index 8697687..0b2eeb7 100644 (file)
@@ -63,6 +63,10 @@ static char copyright_string[] __attribute__((unused)) = "The olsr.org Optimized
 
 int current_line;
 
+/* Global stuff externed in defs.h */
+FILE *debug_handle;             /* Where to send debug(defaults to stdout) */
+struct olsrd_config *olsr_cnf;  /* The global configuration */
+
 #ifdef MAKEBIN
 
 /* Build as standalone binary */
@@ -103,7 +107,7 @@ main(int argc, char *argv[])
 
 #endif
 
-int
+struct olsrd_config *
 olsrd_parse_cnf(const char *filename)
 {
   struct olsr_if *in, *new_ifqueue;
@@ -113,7 +117,7 @@ olsrd_parse_cnf(const char *filename)
   olsr_cnf = malloc(sizeof(*olsr_cnf));
   if (olsr_cnf == NULL) {
     fprintf(stderr, "Out of memory %s\n", __func__);
-    return 1;
+    return NULL;
   }
 
   set_default_cnf(olsr_cnf);
@@ -126,7 +130,7 @@ olsrd_parse_cnf(const char *filename)
             filename, strerror(errno));
     olsrd_free_cnf(olsr_cnf);
     olsr_cnf = NULL;
-    return 1;
+    return NULL;
   }
 
   current_line = 1;
@@ -135,7 +139,7 @@ olsrd_parse_cnf(const char *filename)
   if (rc != 0) {
     olsrd_free_cnf(olsr_cnf);
     olsr_cnf = NULL;
-    return 1;
+    return NULL;
   }
 
   /* Reverse the queue (added by user request) */
@@ -158,7 +162,7 @@ olsrd_parse_cnf(const char *filename)
       in->interf = NULL;
       in->host_emul = OLSR_FALSE;
   }
-  return 0;
+  return olsr_cnf;
 }
 
 
@@ -462,7 +466,9 @@ set_default_cnf(struct olsrd_config *cnf)
     cnf->ioctl_s = 0;
 #if LINUX_POLICY_ROUTING
     cnf->rtnl_s = 0;
-#else
+#endif
+
+#if defined __FreeBSD__ || defined __MacOSX__ || defined __NetBSD__ || defined __OpenBSD__
     cnf->rts = 0;
 #endif
 }
@@ -499,7 +505,7 @@ get_default_if_config(void)
   io->ipv6_addrtype = 0; /* global */
 
   io->hello_params.emission_interval = HELLO_INTERVAL;
-  io->hello_params.validity_time = -1.0;
+  io->hello_params.validity_time = NEIGHB_HOLD_TIME;
   io->tc_params.emission_interval = TC_INTERVAL;
   io->tc_params.validity_time = TOP_HOLD_TIME;
   io->mid_params.emission_interval = MID_INTERVAL;
@@ -655,7 +661,7 @@ olsrd_print_cnf(struct olsrd_config *cnf)
   }
 }
 
-#if defined WIN32_STDIO_HACK
+#if defined WIN32
 struct ioinfo
 {
        unsigned int handle;
@@ -686,13 +692,25 @@ void win32_stdio_hack(unsigned int handle)
   // setbuf(stdout, NULL);
   setbuf(stderr, NULL);
 }
+
+void*
+win32_olsrd_malloc(size_t size)
+{
+       return malloc(size);
+}
+
+void
+win32_olsrd_free(void* ptr)
+{
+       free(ptr);
+}
 #endif
 
 void ip_prefix_list_add(struct ip_prefix_list **list,
                         const union olsr_ip_addr *net,
                         olsr_u8_t prefix_len)
 {
-  struct ip_prefix_list *new_entry = olsr_malloc(sizeof(*new_entry), "Add local HNA entry");
+  struct ip_prefix_list *new_entry = malloc(sizeof(*new_entry));
   
   new_entry->net.prefix = *net;
   new_entry->net.prefix_len = prefix_len;
index 1718d8b..6eda564 100644 (file)
@@ -61,11 +61,4 @@ struct conf_token
 void
 set_default_cnf(struct olsrd_config *);
 
-#if defined WIN32_STDIO_HACK
-void 
-win32_stdio_hack(unsigned int);
-#else
-#define win32_stdio_hack(handle) do { } while(0)
-#endif
-
 #endif
index 04f1cbc..dd888e2 100644 (file)
@@ -2,15 +2,17 @@ VERS_1.0
 {
   global:
     olsrd_parse_cnf;
+    olsrd_sanity_check_cnf;
     olsrd_free_cnf;
     olsrd_print_cnf;
     olsrd_write_cnf;
+    olsrd_write_cnf_buf;
     get_default_if_config;
     olsrd_get_default_cnf;
-    olsrd_cnf_malloc;
-    olsrd_cnf_free;
-    olsrd_sanity_check_cnf;
+    olsrd_parse_cnf;
     win32_stdio_hack;
+    win32_olsrd_malloc;
+    win32_olsrd_free;
   local:
     *;
 };
index 3923a30..0b549e4 100644 (file)
 #define _OLSR_INTERFACE
 
 #include <sys/types.h>
+#ifdef _MSC_VER
+#include <WS2tcpip.h>
+#undef interface
+#else
 #include <sys/socket.h>
+#endif
 #include <time.h>
 
 #include "olsr_types.h"
index a208a7b..e3070de 100644 (file)
@@ -58,7 +58,7 @@
 #define close(x) closesocket(x)
 #define perror(x) WinSockPError(x)
 void 
-WinSockPError(char *);
+WinSockPError(const char *);
 #endif
 
 #ifndef MSG_NOSIGNAL
index ba421dd..52378e3 100644 (file)
@@ -44,6 +44,7 @@
 #include "olsr_types.h"
 #include "defs.h"
 
+#include <limits.h>
 #include <arpa/inet.h>
 
 struct ipaddr_str {
index 114be7b..5a2ed09 100644 (file)
 #include <fcntl.h>
 #endif
 
-/* Global stuff externed in defs.h */
-FILE *debug_handle;             /* Where to send debug(defaults to stdout) */
-struct olsrd_config *olsr_cnf;  /* The global configuration */
-
 #ifdef WIN32
 #define close(x) closesocket(x)
 int __stdcall SignalHandler(unsigned long signal) __attribute__((noreturn));
@@ -218,7 +214,7 @@ main(int argc, char *argv[])
   /*
    * set up configuration prior to processing commandline options
    */
-  if(olsrd_parse_cnf(conf_file_name))
+  if(NULL == (olsr_cnf = olsrd_parse_cnf(conf_file_name)))
     {
       printf("Using default config values(no configfile)\n");
       olsr_cnf = olsrd_get_default_cnf();
index d0f082b..765ac1b 100644 (file)
@@ -57,7 +57,7 @@ static olsr_bool disp_pack_out = OLSR_FALSE;
 #ifdef WIN32
 #define perror(x) WinSockPError(x)
 void
-WinSockPError(char *);
+WinSockPError(const char *);
 #endif
 
 
index d1cec16..26428c7 100644 (file)
@@ -255,7 +255,7 @@ struct ip_prefix_list *ip_prefix_list_find(struct ip_prefix_list *, const union
  * Interface to parser
  */
 
-int
+struct olsrd_config *
 olsrd_parse_cnf(const char *);
 
 int
@@ -279,6 +279,17 @@ get_default_if_config(void);
 struct olsrd_config *
 olsrd_get_default_cnf(void);
 
+#if defined WIN32
+void 
+win32_stdio_hack(unsigned int);
+
+void*
+win32_olsrd_malloc(size_t size);
+
+void
+win32_olsrd_free(void* ptr);
+#endif
+
 #if defined __cplusplus
 }
 #endif
index ed4fa96..e644974 100644 (file)
 #define        _OLSR_TYPES_H
 
 /* types */
+#ifdef _MSC_VER
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+typedef char            int8_t;
+typedef short           int16_t;
+typedef int             int32_t;
+#else
 #include <inttypes.h>
+#endif
 
 
 typedef enum {
@@ -71,7 +80,9 @@ typedef int32_t         olsr_32_t;
 /* OpenBSD wants this here */
 #include <sys/types.h>
 /* IPv6 address format in6_addr */
+#ifndef _MSC_VER
 #include <netinet/in.h>
+#endif
 
 
 union olsr_ip_addr {
index 5168f2a..e2ecec2 100644 (file)
@@ -89,7 +89,8 @@ unsigned int random(void)
 
 int getpid(void)
 {
-  return (int)GetCurrentThread();
+  HANDLE h = GetCurrentThread();
+  return (int)h;
 }
 
 int nanosleep(struct timespec *Req, struct timespec *Rem)
@@ -185,7 +186,7 @@ int dlclose(void *Handle)
   return 0;
 }
 
-void *dlsym(void *Handle, char *Name)
+void *dlsym(void *Handle, const char *Name)
 {
 #if !defined WINCE
   return GetProcAddress((HMODULE)Handle, Name);
@@ -532,7 +533,7 @@ int write(int fd, const void *buf, unsigned int count)
 {
   size_t written = 0;
   while (written < count) {
-    ssize_t rc = send(fd, buf+written, min(count-written, CHUNK_SIZE), 0);
+    ssize_t rc = send(fd, (const unsigned char*)buf+written, min(count-written, CHUNK_SIZE), 0);
     if (rc <= 0) {
       break;
     }
index 34c0c16..bd4a3d2 100644 (file)
@@ -46,7 +46,7 @@
 
 void *dlopen(char *Name, int Flags);
 int dlclose(void *Handle);
-void *dlsym(void *Handle, char *Name);
+void *dlsym(void *Handle, const char *Name);
 char *dlerror(void);
 
 #endif
index c5a11c9..beb9183 100644 (file)
@@ -38,6 +38,7 @@
  *
  */
 
+#include <winsock2.h>
 #include "interfaces.h"
 #include "olsr.h"
 #include "parser.h"
@@ -56,6 +57,9 @@
 
 #include <arpa/inet.h>
 
+#define BUFSPACE  (127*1024)   /* max. input buffer size to request */
+
+
 struct MibIpInterfaceRow
 {
   USHORT Family;
@@ -139,7 +143,7 @@ static void CallSignalHandler(void)
 
 static void MiniIndexToIntName(char *String, int MiniIndex)
 {
-  char *HexDigits = "0123456789abcdef";
+  const char *HexDigits = "0123456789abcdef";
 
   String[0] = 'i';
   String[1] = 'f';
@@ -152,7 +156,7 @@ static void MiniIndexToIntName(char *String, int MiniIndex)
 
 static int IntNameToMiniIndex(int *MiniIndex, char *String)
 {
-  char *HexDigits = "0123456789abcdef";
+  const char *HexDigits = "0123456789abcdef";
   int i, k;
   char ch;
 
@@ -937,7 +941,6 @@ int chk_if_up(struct olsr_if *IntConf, int DebugLevel __attribute__((unused)))
   struct InterfaceInfo Info;
   struct interface *New;
   union olsr_ip_addr NullAddr;
-  unsigned int AddrSockAddr;
   int IsWlan;
   struct sockaddr_in *AddrIn;
   
@@ -1004,9 +1007,9 @@ int chk_if_up(struct olsr_if *IntConf, int DebugLevel __attribute__((unused)))
               IntConf->name, New->if_index);
       
   OLSR_PRINTF(1, "\tMTU: %d\n", New->int_mtu);
-  OLSR_PRINTF(1, "\tAddress: %s\n", sockaddr_to_string(&buf, (const struct sockaddr*)&New->int_addr));
-  OLSR_PRINTF(1, "\tNetmask: %s\n", sockaddr_to_string(&buf, (const struct sockaddr*)&New->int_netmask));
-  OLSR_PRINTF(1, "\tBroadcast address: %s\n", sockaddr_to_string(&buf, (const struct sockaddr*)&New->int_broadaddr));
+  OLSR_PRINTF(1, "\tAddress: %s\n", sockaddr4_to_string(&buf, (const struct sockaddr*)&New->int_addr));
+  OLSR_PRINTF(1, "\tNetmask: %s\n", sockaddr4_to_string(&buf, (const struct sockaddr*)&New->int_netmask));
+  OLSR_PRINTF(1, "\tBroadcast address: %s\n", sockaddr4_to_string(&buf, (const struct sockaddr*)&New->int_broadaddr));
 
   New->ip_addr.v4 = New->int_addr.sin_addr;
       
@@ -1014,14 +1017,8 @@ int chk_if_up(struct olsr_if *IntConf, int DebugLevel __attribute__((unused)))
 
   OLSR_PRINTF(3, "\tKernel index: %08x\n", New->if_index);
 
-  AddrSockAddr = addrsock.sin_addr.s_addr;
-  addrsock.sin_addr = New->ip_addr.v4;
-
-  New->olsr_socket = getsocket((struct sockaddr *)&addrsock,
-                               127 * 1024, New->int_name);
+  New->olsr_socket = getsocket(BUFSPACE, New->int_name);
       
-  addrsock.sin_addr.s_addr = AddrSockAddr;
-
   if (New->olsr_socket < 0)
   {
     fprintf(stderr, "Could not initialize socket... exiting!\n\n");
index 480647d..b9ea915 100644 (file)
@@ -43,6 +43,7 @@
 
 #include "kernel_routes.h"
 #include "net_olsr.h"
+#include "ipcalc.h"
 #include "ipc_frontend.h"
 
 #define WIN32_LEAN_AND_MEAN
@@ -85,7 +86,7 @@ int olsr_ioctl_add_route(const struct rt_entry *rt)
   Row.dwForwardProto = 3; // MIB_IPPROTO_NETMGMT
   Row.dwForwardAge = INFINITE;
   Row.dwForwardNextHopAS = 0;
-  Row.dwForwardMetric1 = olsr_fib_metric(&rt->rt_best->rtp_metric.hops);
+  Row.dwForwardMetric1 = olsr_fib_metric(&rt->rt_best->rtp_metric);
   Row.dwForwardMetric2 = -1;
   Row.dwForwardMetric3 = -1;
   Row.dwForwardMetric4 = -1;
@@ -162,7 +163,7 @@ int olsr_ioctl_del_route(const struct rt_entry *rt)
   Row.dwForwardProto = 3; // MIB_IPPROTO_NETMGMT
   Row.dwForwardAge = INFINITE;
   Row.dwForwardNextHopAS = 0;
-  Row.dwForwardMetric1 = olsr_fib_metric(&rt->rt_metric.hops);
+  Row.dwForwardMetric1 = olsr_fib_metric(&rt->rt_metric);
   Row.dwForwardMetric2 = -1;
   Row.dwForwardMetric3 = -1;
   Row.dwForwardMetric4 = -1;
index d571f0f..107a128 100644 (file)
@@ -54,6 +54,7 @@
 #include "defs.h"
 #include "net_os.h"
 #include "net_olsr.h"
+#include "ipcalc.h"
 
 #if defined WINCE
 #define WIDE_STRING(s) L##s
@@ -61,8 +62,8 @@
 #define WIDE_STRING(s) s
 #endif
 
-void WinSockPError(char *Str);
-void PError(char *);
+void WinSockPError(const char *Str);
+void PError(const char *);
 
 void DisableIcmpRedirects(void);
 int disable_ip_forwarding(int Ver);
@@ -152,7 +153,7 @@ int getsocket(int BuffSize, char *Int __attribute__((unused)))
 
 int getsocket6(int BuffSize, char *Int __attribute__((unused)))
 {
-  struct sockaddr_in6 Addr;
+  struct sockaddr_in6 Addr6;
   int On = 1;
   int Sock = socket(AF_INET6, SOCK_DGRAM, 0);
   if (Sock < 0)
@@ -185,7 +186,7 @@ int getsocket6(int BuffSize, char *Int __attribute__((unused)))
   Addr6.sin6_family = AF_INET6;
   Addr6.sin6_port = htons(OLSRPORT);
   //Addr6.sin6_addr.s_addr = IN6ADDR_ANY_INIT;
-  if (bind(Sock, (struct sockaddr *)&Addr, sizeof (Addr)) < 0)
+  if (bind(Sock, (struct sockaddr *)&Addr6, sizeof (Addr6)) < 0)
   {
     WinSockPError("getsocket6/bind()");
     closesocket(Sock);