Hi, On Tue, Jun 23, 2020 at 3:22 AM Jan Just Keijser <janj...@nikhef.nl> wrote: > > Hi, > > On 21/06/20 17:14, Selva Nair wrote: > > On Sun, Jun 21, 2020 at 7:14 AM Gert Doering <g...@greenie.muc.de> wrote: > >> > >> going through OpenVPN threads that went stale - I think this is > >> actually a nice addition (read: other people have already asked > >> me if this can be done). > >> > >> On Thu, Mar 05, 2020 at 01:53:12PM +0100, Jan Just Keijser wrote: > >>> So, for what it's worth, I've dusted off the patch again and rebased it > >>> to the current openvpn master tree. See attached. Note that I did only > >>> rudimentary testing, as I don't use Windows 10 a lot and I was testing > >>> using a mingw cross-compile only. In wireshark I *do* see that the > >>> correct DHCP offer is sent to the tap-win adapter. > >>> > >>> Also note that I implemented multiple search domains by separating them > >>> using semi-colons, e.g. > >>> > >>> --dhcp-option SEARCH example.com;example.org;example.nl;example.de > >>> > >>> etc as that was easier to implement > >> The patch looks okay-ish on quick reading. > > Feature wise yes, but some improvements needed.. > > > > I do not like that option format > > > > "example.com; example.org" with quotes will parse right and fail later > > on because of the space, for example. And, we support multiple > > statements of dhcp options like DNS, so this is counter-intuitive. > > It's only a little more work to support a more forgiving format. > actually, the patch will be a bit more invasive if we add that; parsing > DNS/WINS etc is already there and it parses an option into an IP/IPv6 > address. changing the dns-search option to an array of strings will > require more work. I did look into that initially but decided not to do > it as the patch would be lengthier. > > Note that "multiple domain" option is also not support, really. The > domain is stored in the tuntap_options struct as > > 90 const char *domain; /* DOMAIN (15) */
Windows is probably the only platform where these options are "natively" supported through DHCP, and indeed DOMAIN (option 15) has to be a single domain. Android also seem to treat them internally. However, we export these as foreign_option in all other platforms, and do export anything that looks like "dhcp-option name value" with repetitions allowed. That said, I don't mind breaking scripts that use and misuse these... Anyway my point about multiple values was about DNS and WINS where it's allowed, and we parse them one entry at a time. I believe this option (search list) also should use the same format instead of inventing yet another format. Yes, it may need a bit "more work" to support one domain at a time, but that's no excuse not to use a sensible format. Concatenation of strings read one at a time with a delimiter added doesn't look that hard either. > > so it's "last option wins" ; the fact that some platforms abuse this > option to actually set multiple search domains is a different matter. > > >>> Also note that I did not fully implement the RFC3397 encoding of the > >>> search list, as that requires one to merge domain names that occur more > >>> than once - that would have made the code far more complicated. > >> Indeed. I haven't looked at what other DHCP implementations do, but > >> "correct" encoding definitely sounds like quite a bit of extra code just > >> to save a few bytes on the wire - might come handy if you have many > >> subdomains of a long internal DNS domain, though, but this can be > >> added "if needed". > > Same as my thoughts, the encoding part could be kept simple as in here > > and possibly improved later. But option format is hard to change or > > deprecate. > > > >> > >> More interesting is the question "which option to use" - it should > >> be synchronized between openvpn platform handlers. So if systemd-networkd > >> uses "SEARCH-DOMAIN" it would make sense to use that for windows > >> as well. > > I think we need both --- the current one retained as the connection > > specific suffix which would be just one entry and then this search > > list. As we allow multiple entries for DOMAIN right now, a user > > friendly approach would be to continue doing so but internally treat > > all but the first as a part of --dhcp-option DOMAIN-SEARCH. We could > > also deprecate the use of multiple entries in the dhcp-option DOMAIN > > keyword. > > > See above: like I said, multiple DOMAIN entries do not seem to be supported. > > So what option do we want? > > --dhcp-option SEARCH > --dhcp-option DOMAIN-SEARCH > --dhcp-option SEARCH-DOMAIN RFC 3397 calls it "Domain Search" so it has to be DOMAIN-SEARCH, in my view. Platform scripts accepting other forms in foreign_option is up to them. We don't have to officially support that. Selva _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel