)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"1097522f101e432bcd6cf2f5172d881b90de6b8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f7fd465c_612ba249","updated":"2026-05-12 15:21:54.000000000","message":"OpenBSD does not agree with the resulting #defines...  with the patch, I see\n\n```\n2026-05-12 16:59:43 tun/tap device [tap0] opened\n2026-05-12 16:59:43 \nifconfig: ether: bad value\n2026-05-12 16:59:43 ERROR: Unable to set link layer address.: external program exited with error status: 1\n```\n\nin my logs... the old code does\n\n```\n2026-05-12 17:00:54 TUN/TAP device /dev/tap0 opened\n2026-05-12 17:00:54 /sbin/ifconfig tap0 lladdr fe:e1:ba:dd:5d:2e\n2026-05-12 17:00:54 TUN/TAP link layer address set to fe:e1:ba:dd:5d:2e\n```","commit_id":"940954440470a6439e9fdad2c08a7dea68510111"}],"src/openvpn/lladdr.c":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"cb77adf890cad3b12befba1216462ea4b4794aa7","unresolved":true,"context_lines":[{"line_number":35,"context_line":"#ifdef IFCONFIG_LLADDR_CMD"},{"line_number":36,"context_line":"    struct argv argv \u003d argv_new();"},{"line_number":37,"context_line":"    argv_msg(M_INFO, \u0026argv);"},{"line_number":38,"context_line":"    argv_printf(\u0026argv, \"%s %s ether %s\", IFCONFIG_PATH, ifname, lladdr);"},{"line_number":39,"context_line":"    int r \u003d openvpn_execve_check(\u0026argv, es, M_WARN, \"ERROR: Unable to set link layer address.\");"},{"line_number":40,"context_line":"    argv_free(\u0026argv);"},{"line_number":41,"context_line":"    return r;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d122e12c_36579c0f","line":38,"updated":"2026-05-12 15:27:50.000000000","message":"ah, here\u0027s the culprit... it defines `IFCONFIG_LLADDR_CMD` and then unconditionally puts `ether` on the command line ;-)","commit_id":"940954440470a6439e9fdad2c08a7dea68510111"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"4f630d3e8da2aa9d51a5f4a5572dd3d2d816cda1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"#ifdef IFCONFIG_LLADDR_CMD"},{"line_number":36,"context_line":"    struct argv argv \u003d argv_new();"},{"line_number":37,"context_line":"    argv_msg(M_INFO, \u0026argv);"},{"line_number":38,"context_line":"    argv_printf(\u0026argv, \"%s %s ether %s\", IFCONFIG_PATH, ifname, lladdr);"},{"line_number":39,"context_line":"    int r \u003d openvpn_execve_check(\u0026argv, es, M_WARN, \"ERROR: Unable to set link layer address.\");"},{"line_number":40,"context_line":"    argv_free(\u0026argv);"},{"line_number":41,"context_line":"    return r;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b9cf9909_24e8b4e3","line":38,"in_reply_to":"d122e12c_36579c0f","updated":"2026-05-12 21:42:33.000000000","message":"Done","commit_id":"940954440470a6439e9fdad2c08a7dea68510111"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"5855c5b53f4eea7e3500743e45d67b4abc0d1488","unresolved":true,"context_lines":[{"line_number":28,"context_line":"#define IFCONFIG_LLADDR_CMD \"ether\""},{"line_number":29,"context_line":"#elif defined(TARGET_OPENBSD) || defined(TARGET_DARWIN)"},{"line_number":30,"context_line":"#define IFCONFIG_LLADDR_CMD \"lladdr\""},{"line_number":31,"context_line":"#endif"},{"line_number":32,"context_line":"static int"},{"line_number":33,"context_line":"set_lladdr_ifconfig(const char *ifname, const char *lladdr, const struct env_set *es)"},{"line_number":34,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4355900b_2379d2b6","line":31,"updated":"2026-05-13 08:39:55.000000000","message":"after testing, I would do a new round on this - basically, \"lladdr\" and \"ether\" are synonymous on FreeBSD and Darwin.  OpenBSD insists on using `lladdr`, which should work fine (according to manpage) on FreeBSD and macOS too...  so I would unify this to \"lladdr\" for those 3 platforms.\n\n(NetBSD would need `... link %s active`, so that needs an extra #ifdef anyway should we decide to add support for it)\n\nSolaris \"ether\" does something, but the resulting tap interface does not work properly (it sends out ARP requests with a wrong source address in the ARP header).  So I would downgrade Solaris to \"Sorry, but I don\u0027t know\" - whoever wants this can bring it back in a working shape.","commit_id":"4f2237d6290877fda67a6c17e34f293c0ff4422e"}]}
