diff -ru network-manager-openvpn-0.3.2svn2342-orig/src/nm-openvpn-service.c network-manager-openvpn-0.3.2svn2342/src/nm-openvpn-service.c --- network-manager-openvpn-0.3.2svn2342-orig/src/nm-openvpn-service.c 2007-09-08 15:03:42.000000000 +0930 +++ network-manager-openvpn-0.3.2svn2342/src/nm-openvpn-service.c 2007-09-08 15:11:44.000000000 +0930 @@ -1266,6 +1266,7 @@ guint32 * ip4_nbns; guint32 ip4_nbns_len; guint32 mss; + char * ip4_dnsdomain; gboolean success = FALSE; char * empty = ""; @@ -1288,6 +1289,7 @@ DBUS_TYPE_UINT32, &ip4_netmask, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &ip4_dns, &ip4_dns_len, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &ip4_nbns, &ip4_nbns_len, + DBUS_TYPE_STRING, &ip4_dnsdomain, DBUS_TYPE_INVALID)) { DBusMessage *signal; @@ -1310,7 +1312,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &ip4_dns, ip4_dns_len, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &ip4_nbns, ip4_nbns_len, DBUS_TYPE_UINT32, &mss, - DBUS_TYPE_STRING, &empty, + DBUS_TYPE_STRING, &ip4_dnsdomain, DBUS_TYPE_STRING, &empty, DBUS_TYPE_INVALID); diff -ru network-manager-openvpn-0.3.2svn2342-orig/src/nm-openvpn-service-openvpn-helper.c network-manager-openvpn-0.3.2svn2342/src/nm-openvpn-service-openvpn-helper.c --- network-manager-openvpn-0.3.2svn2342-orig/src/nm-openvpn-service-openvpn-helper.c 2007-02-28 21:27:49.000000000 +1030 +++ network-manager-openvpn-0.3.2svn2342/src/nm-openvpn-service-openvpn-helper.c 2007-09-08 15:11:56.000000000 +0930 @@ -202,7 +202,8 @@ const char *str_ip4_ptpaddr, const char *str_ip4_netmask, const GPtrArray *gpa_ip4_dns, - const GPtrArray *gpa_ip4_nbns + const GPtrArray *gpa_ip4_nbns, + const char *str_ip4_dnsdomain ) { DBusMessage * message; @@ -257,6 +258,7 @@ DBUS_TYPE_UINT32, &uint_ip4_netmask, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &uint_ip4_dns, uint_ip4_dns_len, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &uint_ip4_nbns, uint_ip4_nbns_len, + DBUS_TYPE_STRING, &str_ip4_dnsdomain, DBUS_TYPE_INVALID); if (dbus_connection_send (con, message, NULL)) success = TRUE; @@ -310,6 +312,7 @@ char *ip4_netmask = NULL; GPtrArray *ip4_dns = NULL; GPtrArray *ip4_nbns = NULL; + char *ip4_dnsdomain = NULL; char **split = NULL; char **item; @@ -347,7 +350,8 @@ ip4_dns = g_ptr_array_new(); ip4_nbns = g_ptr_array_new(); - + ip4_dnsdomain = NULL; + while (1) { sprintf(envname, "foreign_option_%i", i++); tmp = getenv( envname ); @@ -368,6 +372,8 @@ if (strcmp( split[1], "DNS") == 0) { // DNS, push it! g_ptr_array_add( ip4_dns, (gpointer) split[2] ); + } else if (strcmp( split[1], "DOMAIN") == 0) { + ip4_dnsdomain = split[2]; } else if (strcmp( split[1], "WINS") == 0) { // WINS, push it! g_ptr_array_add( ip4_nbns, (gpointer) split[2] ); @@ -410,7 +416,7 @@ if (!send_config_info (con, vpn_gateway, tundev, ip4_address, ip4_ptp, ip4_netmask, - ip4_dns, ip4_nbns)) { + ip4_dns, ip4_nbns, ip4_dnsdomain)) { exit_code = 1; }