Re: Invalid IP-assignment if assigned within pushed route
- From: "Jonathan Petersson" <jpetersson garnser se>
- To: "Dan Williams" <dcbw redhat com>
- Cc: networkmanager-list gnome org
- Subject: Re: Invalid IP-assignment if assigned within pushed route
- Date: Mon, 12 Jan 2009 15:39:47 -0700
Thx, I'm traveling this week but I'll give it a shot on Thursday when
I get access to my Ubuntu host again.
/Jonathan
On Mon, Jan 12, 2009 at 10:23 AM, Dan Williams <dcbw redhat com> wrote:
> On Fri, 2009-01-09 at 10:31 -0800, Jonathan Petersson wrote:
>> Which repository am I supposed to check out to modify
>> nm-openvpn-service-openvpn-helper.c?
>
> svn.gnome.org
>
> repo: network-manager-openvpn
>
> or add as a patch on top of your distros current openvpn source package
> and rebuild it.
>
> Dan
>
>> Thanks
>>
>> /Jonathan
>>
>> On Fri, Jan 9, 2009 at 9:45 AM, Dan Williams <dcbw redhat com> wrote:
>> > 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);
>> > }
>> >
>> >
>> >
>
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]