mirror of
https://gitlab.com/openconnect/ocserv.git
synced 2026-10-14 02:22:03 +08:00
Allow for random and for predictable IP assignment.
This commit is contained in:
@@ -78,6 +78,7 @@ static struct cfg_options available_options[] = {
|
|||||||
{ .name = "socket-file", .type = OPTION_STRING, .mandatory = 1 },
|
{ .name = "socket-file", .type = OPTION_STRING, .mandatory = 1 },
|
||||||
{ .name = "occtl-socket-file", .type = OPTION_STRING, .mandatory = 0 },
|
{ .name = "occtl-socket-file", .type = OPTION_STRING, .mandatory = 0 },
|
||||||
{ .name = "banner", .type = OPTION_STRING, .mandatory = 0 },
|
{ .name = "banner", .type = OPTION_STRING, .mandatory = 0 },
|
||||||
|
{ .name = "predictable-ips", .type = OPTION_BOOLEAN, .mandatory = 0 },
|
||||||
/* this is alias for cisco-client-compat */
|
/* this is alias for cisco-client-compat */
|
||||||
{ .name = "always-require-cert", .type = OPTION_BOOLEAN, .mandatory = 0 },
|
{ .name = "always-require-cert", .type = OPTION_BOOLEAN, .mandatory = 0 },
|
||||||
{ .name = "cisco-client-compat", .type = OPTION_BOOLEAN, .mandatory = 0 },
|
{ .name = "cisco-client-compat", .type = OPTION_BOOLEAN, .mandatory = 0 },
|
||||||
@@ -374,6 +375,7 @@ unsigned force_cert_auth;
|
|||||||
config->cisco_client_compat = 1;
|
config->cisco_client_compat = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
READ_TF("predictable-ips", config->predictable_ips, 1);
|
||||||
READ_TF("use-utmp", config->use_utmp, 1);
|
READ_TF("use-utmp", config->use_utmp, 1);
|
||||||
READ_TF("use-dbus", config->use_dbus, 0);
|
READ_TF("use-dbus", config->use_dbus, 0);
|
||||||
if (config->use_dbus != 0) {
|
if (config->use_dbus != 0) {
|
||||||
|
|||||||
@@ -286,6 +286,10 @@ cgroup = "cpuset,cpu:test"
|
|||||||
# The name to use for the tun device
|
# The name to use for the tun device
|
||||||
device = vpns
|
device = vpns
|
||||||
|
|
||||||
|
# Whether the generated IPs will be predictable, i.e., IP stays the
|
||||||
|
# same for the same user when possible.
|
||||||
|
predictable-ips = true
|
||||||
|
|
||||||
# The default domain to be advertised
|
# The default domain to be advertised
|
||||||
default-domain = example.com
|
default-domain = example.com
|
||||||
|
|
||||||
|
|||||||
+8
-2
@@ -76,8 +76,14 @@ static int generate_cookie(sec_mod_st * sec, client_entry_st * entry)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Fixme: possibly we should allow for completely random seeds */
|
/* Fixme: possibly we should allow for completely random seeds */
|
||||||
t = hash_any(entry->username, strlen(entry->username), 0);
|
if (sec->config->predictable_ips != 0) {
|
||||||
memcpy(sc.ipv4_seed, &t, 4);
|
t = hash_any(entry->username, strlen(entry->username), 0);
|
||||||
|
memcpy(sc.ipv4_seed, &t, 4);
|
||||||
|
} else {
|
||||||
|
ret = gnutls_rnd(GNUTLS_RND_NONCE, sc.ipv4_seed, sizeof(sc.ipv4_seed));
|
||||||
|
if (ret < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(sc.username, entry->username, sizeof(entry->username));
|
memcpy(sc.username, entry->username, sizeof(entry->username));
|
||||||
memcpy(sc.groupname, entry->groupname, sizeof(entry->groupname));
|
memcpy(sc.groupname, entry->groupname, sizeof(entry->groupname));
|
||||||
|
|||||||
Reference in New Issue
Block a user