From fe35ed245dccd5726ff829806b09f0924ecbd290 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Sat, 5 Mar 2016 10:51:26 +0100 Subject: [PATCH 1/2] Added openconnect_set_localname() This provides an API to advertise our desired hostname to the server. Signed-off-by: Nikos Mavrogiannopoulos --- java/src/org/infradead/libopenconnect/LibOpenConnect.java | 1 + jni.c | 8 ++++++++ libopenconnect.map.in | 1 + library.c | 9 +++++++++ openconnect.h | 2 ++ 5 files changed, 21 insertions(+) diff --git a/java/src/org/infradead/libopenconnect/LibOpenConnect.java b/java/src/org/infradead/libopenconnect/LibOpenConnect.java index c4a7792..e797b38 100644 --- a/java/src/org/infradead/libopenconnect/LibOpenConnect.java +++ b/java/src/org/infradead/libopenconnect/LibOpenConnect.java @@ -120,6 +120,7 @@ public abstract class LibOpenConnect { public synchronized native void setXMLSHA1(String hash); public synchronized native void setHostname(String hostname); public synchronized native void setUrlpath(String urlpath); + public synchronized native void setLocalName(String localName); public synchronized native void setCAFile(String caFile); public synchronized native void setReportedOS(String os); public synchronized native void setMobileInfo(String mobilePlatformVersion, diff --git a/jni.c b/jni.c index 82e2e0f..74ba182 100644 --- a/jni.c +++ b/jni.c @@ -1182,6 +1182,14 @@ JNIEXPORT void JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_setUrlpa SET_STRING_END(); } +JNIEXPORT void JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_setLocalName( + JNIEnv *jenv, jobject jobj, jstring jarg) +{ + SET_STRING_START() + openconnect_set_localname(ctx->vpninfo, arg); + SET_STRING_END(); +} + JNIEXPORT void JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_setCAFile( JNIEnv *jenv, jobject jobj, jstring jarg) { diff --git a/libopenconnect.map.in b/libopenconnect.map.in index 550cbd2..4a8f535 100644 --- a/libopenconnect.map.in +++ b/libopenconnect.map.in @@ -79,6 +79,7 @@ OPENCONNECT_5_3 { openconnect_get_cstp_compression; openconnect_get_dtls_compression; openconnect_disable_ipv6; + openconnect_set_localname; } OPENCONNECT_5_2; OPENCONNECT_PRIVATE { diff --git a/library.c b/library.c index cc0aaed..4ea858b 100644 --- a/library.c +++ b/library.c @@ -403,6 +403,15 @@ int openconnect_set_urlpath(struct openconnect_info *vpninfo, return 0; } +int openconnect_set_localname(struct openconnect_info *vpninfo, + const char *localname) +{ + UTF8CHECK(localname); + + STRDUP(vpninfo->localname, localname); + return 0; +} + void openconnect_set_xmlsha1(struct openconnect_info *vpninfo, const char *xmlsha1, int size) { diff --git a/openconnect.h b/openconnect.h index 95d0eed..b5e34e9 100644 --- a/openconnect.h +++ b/openconnect.h @@ -33,6 +33,7 @@ /* * API version 5.3: + * - Add openconnect_set_localname(). * - Add openconnect_override_getaddrinfo(). * - Add openconnect_get_cstp_compression(). * - Add openconnect_get_dtls_compression(). @@ -382,6 +383,7 @@ const char *openconnect_get_hostname(struct openconnect_info *); int openconnect_set_hostname(struct openconnect_info *, const char *); char *openconnect_get_urlpath(struct openconnect_info *); int openconnect_set_urlpath(struct openconnect_info *, const char *); +int openconnect_set_localname(struct openconnect_info *, const char *); /* Some software tokens, such as HOTP tokens, include a counter which * needs to be stored in persistent storage. -- 2.5.1