From e44495fb15af7b958b62e15ba8fe07031e4384d3 Mon Sep 17 00:00:00 2001 From: Kevin Cernekee Date: Sat, 10 Aug 2013 08:51:55 -0700 Subject: [PATCH] Move vpninfo default settings into library This allows main.c to call openconnect_vpninfo_new() to create the library instance. Signed-off-by: Kevin Cernekee --- library.c | 10 +++++++--- main.c | 32 +++++++------------------------- openconnect-internal.h | 2 +- 3 files changed, 15 insertions(+), 29 deletions(-) diff --git a/library.c b/library.c index 373e71ea..553a0b06 100644 --- a/library.c +++ b/library.c @@ -50,16 +50,19 @@ struct openconnect_info *openconnect_vpninfo_new(char *useragent, { struct openconnect_info *vpninfo = calloc(sizeof(*vpninfo), 1); - vpninfo->ssl_fd = -1; + vpninfo->tun_fd = vpninfo->ssl_fd = vpninfo->dtls_fd = vpninfo->new_dtls_fd = -1; + vpninfo->cmd_fd = vpninfo->cmd_fd_write = -1; vpninfo->cert_expire_warning = 60 * 86400; + vpninfo->deflate = 1; + vpninfo->dtls_attempt_period = 60; + vpninfo->max_qlen = 10; + vpninfo->localname = strdup("localhost"); vpninfo->useragent = openconnect_create_useragent(useragent); vpninfo->validate_peer_cert = validate_peer_cert; vpninfo->write_new_config = write_new_config; vpninfo->process_auth_form = process_auth_form; vpninfo->progress = progress; vpninfo->cbdata = privdata ? : vpninfo; - vpninfo->cmd_fd = -1; - vpninfo->cmd_fd_write = -1; vpninfo->xmlpost = 1; openconnect_set_reported_os(vpninfo, NULL); @@ -154,6 +157,7 @@ void openconnect_vpninfo_free(struct openconnect_info *vpninfo) #endif vpninfo->peer_cert = NULL; } + free(vpninfo->localname); free(vpninfo->useragent); free(vpninfo->authgroup); #ifdef HAVE_LIBSTOKEN diff --git a/main.c b/main.c index 67825f3a..9038a741 100644 --- a/main.c +++ b/main.c @@ -533,36 +533,18 @@ int main(int argc, char **argv) openconnect_init_ssl(); - vpninfo = malloc(sizeof(*vpninfo)); + vpninfo = openconnect_vpninfo_new((char *)"Open AnyConnect VPN Agent", + validate_peer_cert, NULL, process_auth_form_cb, write_progress, NULL); if (!vpninfo) { fprintf(stderr, _("Failed to allocate vpninfo structure\n")); exit(1); } - memset(vpninfo, 0, sizeof(*vpninfo)); - - /* Set up some defaults */ - vpninfo->tun_fd = vpninfo->ssl_fd = vpninfo->dtls_fd = vpninfo->new_dtls_fd = -1; - vpninfo->useragent = openconnect_create_useragent("Open AnyConnect VPN Agent"); - vpninfo->reqmtu = 0; - vpninfo->deflate = 1; - vpninfo->dtls_attempt_period = 60; - vpninfo->max_qlen = 10; - vpninfo->uid_csd = 0; - /* We could let them override this on the command line some day, perhaps */ - openconnect_set_reported_os(vpninfo, NULL); - vpninfo->uid_csd = 0; - vpninfo->uid_csd_given = 0; - vpninfo->validate_peer_cert = validate_peer_cert; - vpninfo->process_auth_form = process_auth_form_cb; - vpninfo->cbdata = vpninfo; - vpninfo->cert_expire_warning = 60 * 86400; - vpninfo->cmd_fd = -1; - vpninfo->xmlpost = 1; - if (!uname(&utsbuf)) - vpninfo->localname = utsbuf.nodename; - else - vpninfo->localname = "localhost"; + vpninfo->cbdata = vpninfo; + if (!uname(&utsbuf)) { + free(vpninfo->localname); + vpninfo->localname = xstrdup(utsbuf.nodename); + } while ((opt = next_option(argc, argv, &config_arg))) { diff --git a/openconnect-internal.h b/openconnect-internal.h index 903ea398..608638d8 100644 --- a/openconnect-internal.h +++ b/openconnect-internal.h @@ -159,7 +159,7 @@ struct openconnect_info { char *proxy; int proxy_port; - const char *localname; + char *localname; char *hostname; char *unique_hostname; int port;