return -EINVAL;
}
- return write_new_config(vpninfo, buf, buflen);
+ return vpninfo->write_new_config(vpninfo, buf, buflen);
}
int openconnect_obtain_cookie(struct openconnect_info *vpninfo)
if (!strcmp(opt->option, "webvpn"))
vpninfo->cookie = opt->value;
- else if (vpninfo->xmlsha1[0] &&
- !strcmp(opt->option, "webvpnc")) {
+ else if (vpninfo->write_new_config && !strcmp(opt->option, "webvpnc")) {
char *tok = opt->value;
char *bu = NULL, *fu = NULL, *sha = NULL;
#include "openconnect.h"
+static int write_new_config(struct openconnect_info *vpninfo, char *buf, int buflen);
+
int verbose = 0;
static struct option long_options[] = {
vpninfo->mtu = 1406;
vpninfo->deflate = 1;
vpninfo->dtls_attempt_period = 60;
+ vpninfo->write_new_config = write_new_config;
if (RAND_bytes(vpninfo->dtls_secret, sizeof(vpninfo->dtls_secret)) != 1) {
fprintf(stderr, "Failed to initialise DTLS secret\n");
exit(1);
}
-int write_new_config(struct openconnect_info *vpninfo, char *buf, int buflen)
+static int write_new_config(struct openconnect_info *vpninfo, char *buf, int buflen)
{
int config_fd;
write(config_fd, buf, buflen);
return 0;
}
-
}
lasthost = get_gconf_setting(gcl, config_path, "lasthost");
- vpninfo->xmlsha1[0] = '0';
+
xmlconfig = get_gconf_setting(gcl, config_path, NM_OPENCONNECT_KEY_XMLCONFIG);
if (xmlconfig) {
unsigned char sha1[SHA_DIGEST_LENGTH];
vpninfo->mtu = 1406;
vpninfo->useragent = openconnect_create_useragent("OpenConnect VPN Agent (NetworkManager)");
vpninfo->ssl_fd = -1;
+ vpninfo->write_new_config = write_new_config;
set_openssl_ui();
const char *useragent;
char *quit_reason;
+
+ int (*write_new_config) (struct openconnect_info *vpninfo, char *buf, int buflen);
};
/* Packet types */
/* main.c */
extern int verbose;
-int write_new_config(struct openconnect_info *vpninfo, char *buf, int buflen);
/* mainloop.c */
int vpn_add_pollfd(struct openconnect_info *vpninfo, int fd, short events);