On Fri, 2009-01-09 at 08:51 -0800, Jonathan Petersson wrote: > Please see first part och the log-file:, OpenVPN pushes it: > > Jan 8 22:59:39 jpetersson-desk1 nm-openvpn[14982]: TUN/TAP device tap0 opened > Jan 8 22:59:39 jpetersson-desk1 nm-openvpn[14982]: /sbin/ifconfig > tap0 10.100.40.5 netmask 255.255.255.0 mtu 1500 broadcast > 10.100.40.255 > Jan 8 22:59:39 jpetersson-desk1 vmnetBridge: RTM_NEWLINK: name:tap0 > index:14 flags:0x00011043 > Jan 8 22:59:39 jpetersson-desk1 avahi-daemon[6615]: Joining mDNS > multicast group on interface tap0.IPv4 with address 10.100.40.5.
Ok, it *does* send it for TAP devices, but not TUN devices (obviously, since TUN is point-to-point it uses 255.255.255.255). Can you try the patch below? Dan Index: src/nm-openvpn-service-openvpn-helper.c =================================================================== --- src/nm-openvpn-service-openvpn-helper.c (revision 11) +++ src/nm-openvpn-service-openvpn-helper.c (working copy) @@ -287,6 +287,7 @@ GValue *nbns_list = NULL; GValue *dns_domain = NULL; struct in_addr temp_addr; + gboolean tapdev = FALSE; g_type_init (); @@ -310,13 +311,17 @@ if (val) g_hash_table_insert (config, NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, val); - /* Tunnel device */ - val = str_to_gvalue (getenv ("dev"), FALSE); + /* VPN device */ + tmp = getenv ("dev"); + val = str_to_gvalue (tmp, FALSE); if (val) g_hash_table_insert (config, NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, val); else helper_failed (connection, "Tunnel Device"); + if (strncmp (tmp, "tap", 3) == 0) + tapdev = TRUE; + /* IP address */ val = addr_to_gvalue (getenv ("ifconfig_local")); if (val) @@ -329,15 +334,28 @@ if (val) g_hash_table_insert (config, NM_VPN_PLUGIN_IP4_CONFIG_PTP, val); - /* Netmask */ - tmp = getenv ("route_netmask_1"); - if (tmp && inet_pton (AF_INET, tmp, &temp_addr) > 0) { + /* Netmask + * + * TAP devices pass back the netmask, while TUN devices always use /32 + * since they are point-to-point. + */ + if (tapdev) { + tmp = getenv ("ifconfig_netmask"); + if (tmp && inet_pton (AF_INET, tmp, &temp_addr) > 0) { + GValue *val; + + val = g_slice_new0 (GValue); + g_value_init (val, G_TYPE_UINT); + g_value_set_uint (val, nm_utils_ip4_netmask_to_prefix (temp_addr.s_addr)); + + g_hash_table_insert (config, NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, val); + } + } else { GValue *val; val = g_slice_new0 (GValue); g_value_init (val, G_TYPE_UINT); - g_value_set_uint (val, nm_utils_ip4_netmask_to_prefix (temp_addr.s_addr)); - + g_value_set_uint (val, 32); g_hash_table_insert (config, NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, val); } _______________________________________________ NetworkManager-list mailing list NetworkManager-list@gnome.org http://mail.gnome.org/mailman/listinfo/networkmanager-list