diff -Naur openvpn-2.0.9-orig/init.c openvpn-2.0.9-new/init.c
--- openvpn-2.0.9-orig/init.c	2019-10-03 13:18:27.124372000 -0700
+++ openvpn-2.0.9-new/init.c	2019-10-03 15:50:39.627307000 -0700
@@ -719,7 +719,11 @@
           }
 #else
           char srv_name[MAXHOSTNAMELEN]="";
-          openvpn_snprintf(srv_name, MAXHOSTNAMELEN, "_vpn.%s.%s", c->options.proto?"_tcp":"_udp", opl->array[i].hostname);
+	  if (c->options.rsa256 == true) {
+	    openvpn_snprintf(srv_name, MAXHOSTNAMELEN, "_vpnle.%s.%s", c->options.proto?"_tcp":"_udp", opl->array[i].hostname);
+	  } else {
+	    openvpn_snprintf(srv_name, MAXHOSTNAMELEN, "_vpn.%s.%s", c->options.proto?"_tcp":"_udp", opl->array[i].hostname);
+	  }
 #endif
           // do SRV lookup
           msg(M_INFO, "Do SRV lookup on <%s>\n", srv_name);
diff -Naur openvpn-2.0.9-orig/options.c openvpn-2.0.9-new/options.c
--- openvpn-2.0.9-orig/options.c	2019-10-03 13:18:27.130369000 -0700
+++ openvpn-2.0.9-new/options.c	2019-10-03 14:15:40.055095000 -0700
@@ -530,6 +530,7 @@
   gc_init (&o->gc);
   o->mode = MODE_POINT_TO_POINT;
   o->proto = PROTO_UDPv4;
+  o->rsa256 = false;
   o->connect_retry_seconds = 5;
   o->local_port = o->remote_port = OPENVPN_PORT;
   o->verbosity = 1;
@@ -3290,6 +3291,11 @@
       options->remote_port = port;
       override_port = options->remote_port;
     }
+  else if (streq (p[0], "rsa256"))
+    {
+      VERIFY_PERMISSION (OPT_P_GENERAL);
+      options->rsa256 = true;
+    }
   else if (streq (p[0], "nobind"))
     {
       VERIFY_PERMISSION (OPT_P_GENERAL);
diff -Naur openvpn-2.0.9-orig/options.h openvpn-2.0.9-new/options.h
--- openvpn-2.0.9-orig/options.h	2005-11-01 03:06:11.000000000 -0800
+++ openvpn-2.0.9-new/options.h	2019-10-03 15:46:55.038022000 -0700
@@ -111,6 +111,7 @@
 
   /* Networking parms */
   const char *local;
+  bool rsa256;
   int local_port;
   bool local_port_defined;
   int remote_port;
