Hello,

After testing this version on my FreeBSD, I got the error message :

Fri Jan 27 12:11:13 2006 us=835111 OPTIONS IMPORT: timers and/or timeouts 
modified
Fri Jan 27 12:11:13 2006 us=835260 OPTIONS IMPORT: --ifconfig/up options 
modified
Fri Jan 27 12:11:13 2006 us=835373 OPTIONS IMPORT: route options modified
Fri Jan 27 12:11:13 2006 us=835483 OPTIONS IMPORT: route-related options 
modified
Fri Jan 27 12:11:13 2006 us=835593 OPTIONS IMPORT: --ip-win32 and/or 
--dhcp-option options modified
Fri Jan 27 12:11:13 2006 us=836087 gw xx.xx.xx.xx
Fri Jan 27 12:11:13 2006 us=836302 ROUTE DEBUG: default_gateway=xx.xx.xx.xx
Fri Jan 27 12:11:13 2006 us=838416 TUN/TAP device /dev/tun0 opened
Fri Jan 27 12:11:13 2006 us=838634 /sbin/ifconfig tun0 172.18.48.15 netmask 
255.255.240.0 mtu 1500 up
Fri Jan 27 12:11:13 2006 us=838932 SYSTEM[2] '/sbin/ifconfig tun0 172.18.48.15 
netmask 255.255.240.0 mtu 1500 up'
ifconfig: ioctl (SIOCAIFADDR): Destination address required
Fri Jan 27 12:11:13 2006 us=861902 SYSTEM return=256
Fri Jan 27 12:11:13 2006 us=862216 FreeBSD ifconfig failed: shell command 
exited with error status: 1
Fri Jan 27 12:11:13 2006 us=862353 Exiting

It seems that it's a problem already solved for MacOS X.
I also patched the tun.c file, and now, it works well.

Attached, the patch.
Enjoy, and add it to the repository if you like.
TODO: test openvpn under other BSD and Unices.

Thanks,
Benoit Bourdin
diff -uNr openvpn-2.1_beta8/tun.c openvpn-2.1_beta8-freebsd/tun.c
--- openvpn-2.1_beta8/tun.c     Thu Dec 22 18:48:35 2005
+++ openvpn-2.1_beta8-freebsd/tun.c     Thu Feb  2 16:05:29 2006
@@ -795,18 +795,41 @@
                          ifconfig_remote_netmask,
                          tun_mtu
                          );
-      else
-       openvpn_snprintf (command_line, sizeof (command_line),
+      else {
+       if (tt->topology == TOP_SUBNET)
+            openvpn_snprintf (command_line, sizeof (command_line),
+                              IFCONFIG_PATH " %s %s %s netmask %s mtu %d up",
+                              actual,
+                              ifconfig_local,
+                              ifconfig_local,
+                              ifconfig_remote_netmask,
+                              tun_mtu
+                              );
+       else
+           openvpn_snprintf (command_line, sizeof (command_line),
                          IFCONFIG_PATH " %s %s netmask %s mtu %d up",
                          actual,
                          ifconfig_local,
                          ifconfig_remote_netmask,
                          tun_mtu
                          );
+      }

       msg (M_INFO, "%s", command_line);
       system_check (command_line, es, S_FATAL, "FreeBSD ifconfig failed");
       tt->did_ifconfig = true;
+
+       /* Add a network route for the local tun interface */
+      if (!tun && tt->topology == TOP_SUBNET)
+        {               
+          struct route r;
+          CLEAR (r);      
+          r.defined = true;       
+          r.network = tt->local & tt->remote_netmask;
+          r.netmask = tt->remote_netmask;
+          r.gateway = tt->local;  
+          add_route (&r, tt, 0, es);
+        }

 #elif defined (WIN32)
       {

Reply via email to