return -1;
}
+/** @brief Validate an MTU-discovery setting
+ * @param cs Configuration state
+ * @param nvec Length of (proposed) new value
+ * @param vec Elements of new value
+ * @return 0 on success, non-0 on error
+ */
+static int validate_mtu_discovery(const struct config_state attribute((unused)) *cs,
+ int nvec,
+ char **vec) {
+ if (nvec == 1 &&
+ (!strcmp(vec[0], "default") ||
+ !strcmp(vec[0], "yes") ||
+ !strcmp(vec[0], "no")))
+ return 0;
+ disorder_error(0, "%s:%d: invalid MTU-discovery setting", cs->path, cs->line);
+ return -1;
+}
+
/** @brief Validate a destination network address
* @param cs Configuration state
* @param nvec Length of (proposed) new value
{ C(replay_min), &type_integer, validate_non_negative },
{ C(rtp_always_request), &type_boolean, validate_any },
{ C(rtp_delay_threshold), &type_integer, validate_positive },
+ { C(rtp_instance_name), &type_string, validate_any },
{ C(rtp_max_payload), &type_integer, validate_positive },
{ C(rtp_maxbuffer), &type_integer, validate_non_negative },
{ C(rtp_minbuffer), &type_integer, validate_non_negative },
{ C(rtp_mode), &type_string, validate_any },
+ { C(rtp_mtu_discovery), &type_string, validate_mtu_discovery },
{ C(rtp_rcvbuf), &type_integer, validate_non_negative },
{ C(rtp_request_address), &type_netaddress, validate_inetaddr },
{ C(rtp_verbose), &type_boolean, validate_any },
c->connect.af = -1;
c->rtp_mode = xstrdup("auto");
c->rtp_max_payload = -1;
+ c->rtp_mtu_discovery = xstrdup("default");
return c;
}
xfree(privconf);
#endif
/* if we have a password file, read it */
- if((privconf = config_userconf(0, pw))
+ if((privconf = config_userconf())
&& access(privconf, F_OK) == 0
&& config_include(c, privconf))
return -1;
}
/** @brief Return the path to user's personal configuration file */
-char *config_userconf(const char *home, const struct passwd *pw) {
+char *config_userconf(void) {
char *s;
#if _WIN32
wchar_t *wpath = 0;
CoTaskMemFree(wpath);
byte_xasprintf(&s, "%s\\DisOrder\\passwd", appdata);
#else
- if(!home && !pw && !(pw = getpwuid(getuid())))
+ struct passwd *pw;
+ if(!(pw = getpwuid(getuid())))
disorder_fatal(0, "cannot determine our username");
- byte_xasprintf(&s, "%s/.disorder/passwd", home ? home : pw->pw_dir);
+ byte_xasprintf(&s, "%s/.disorder/passwd", pw->pw_dir);
#endif
return s;
}