diff options
author | Phil Sutter <phil.sutter@viprinet.com> | 2015-02-24 12:47:13 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-02-28 10:14:36 +0100 |
commit | 1f9113fee2da6c57c561616428439e2cdebf10e4 (patch) | |
tree | df39441d695babe4d9ead92fe4d4c9485df6446c /package/supl/patches | |
parent | 49e03ead81a32c7443a1c38ec06ead54162fda93 (diff) |
port supl library package
Also enhance the client to allow binding to an interface.
Diffstat (limited to 'package/supl/patches')
-rw-r--r-- | package/supl/patches/patch-src_Makefile | 16 | ||||
-rw-r--r-- | package/supl/patches/patch-src_supl-client_c | 40 | ||||
-rw-r--r-- | package/supl/patches/patch-src_supl_c | 46 | ||||
-rw-r--r-- | package/supl/patches/patch-src_supl_h | 19 |
4 files changed, 121 insertions, 0 deletions
diff --git a/package/supl/patches/patch-src_Makefile b/package/supl/patches/patch-src_Makefile new file mode 100644 index 000000000..cec5a4771 --- /dev/null +++ b/package/supl/patches/patch-src_Makefile @@ -0,0 +1,16 @@ + - use pkg-config everywhere, otherwise libs are not found +--- trunk.orig/src/Makefile 2011-10-17 20:09:22.000000000 +0200 ++++ trunk/src/Makefile 2015-02-09 16:48:37.244935714 +0100 +@@ -21,10 +21,10 @@ DIST = Makefile $(PROGRAM_SOURCE) $(SUPL + all: supl-client supl-proxy supl-cert + + supl-client: libsupl.so supl-client.o +- $(CC) -o $@ supl-client.o -L. -lsupl -lssl -lm ++ $(CC) -o $@ supl-client.o -L. -lsupl $(shell pkg-config --libs openssl) -lm + + supl-proxy: libsupl.so supl-proxy.o +- $(CC) -o $@ supl-proxy.o -L. -lsupl -lssl -lm ++ $(CC) -o $@ supl-proxy.o -L. -lsupl $(shell pkg-config --libs openssl) -lm + + supl-cert: supl-cert.o + $(CC) -o $@ supl-cert.o $(shell pkg-config --libs openssl) -lm diff --git a/package/supl/patches/patch-src_supl-client_c b/package/supl/patches/patch-src_supl-client_c new file mode 100644 index 000000000..15e2fa727 --- /dev/null +++ b/package/supl/patches/patch-src_supl-client_c @@ -0,0 +1,40 @@ + - implement bind to device functionality +--- trunk.orig/src/supl-client.c 2011-10-21 20:51:38.000000000 +0200 ++++ trunk/src/supl-client.c 2013-04-24 18:55:01.937252375 +0200 +@@ -252,6 +252,7 @@ static char *usage_str = + " --cell gsm:mcc,mns:lac,ci|wcdma:mcc,msn,uc set current gsm/wcdma cell id\n" + " --cell gsm:mcc,mns:lac,ci:lat,lon,uncert set known gsm cell id with position\n" + " --format|-f human machine parseable output\n" ++" --interface|-i iface bind to this interface\n" + " --debug|-d <n> 1 == RRLP, 2 == SUPL, 4 == DEBUG\n" + " --debug-file file write debug to file\n" + " --help|-h show this help\n" +@@ -267,6 +268,7 @@ static struct option long_opts[] = { + { "cell", 1, 0, 0 }, + { "debug", 1, 0, 'd' }, + { "format", 1, 0, 'f' }, ++ { "interface", 1, 0, 0}, + { "test", 1, 0, 't' }, + { "set-pos", 1, 0, 0 }, + { "pos-helper", 1, 0, 0 }, +@@ -310,7 +312,7 @@ int main(int argc, char *argv[]) { + int opt_index; + int c; + +- c = getopt_long(argc, argv, "ad:f:t:", long_opts, &opt_index); ++ c = getopt_long(argc, argv, "ad:f:i:t:", long_opts, &opt_index); + if (c == -1) break; + switch (c) { + case 0: +@@ -374,6 +376,11 @@ int main(int argc, char *argv[]) { + } + break; + ++ case 'i': ++ strncpy(ctx.iface, optarg, IFNAMSIZ); ++ ctx.iface[IFNAMSIZ] = 0; ++ break; ++ + case 'd': + { + int debug = atoi(optarg); diff --git a/package/supl/patches/patch-src_supl_c b/package/supl/patches/patch-src_supl_c new file mode 100644 index 000000000..26ab45b18 --- /dev/null +++ b/package/supl/patches/patch-src_supl_c @@ -0,0 +1,46 @@ + - implement bind to device functionality +--- trunk.orig/src/supl.c 2011-10-27 20:41:19.000000000 +0200 ++++ trunk/src/supl.c 2013-04-24 18:56:17.742529773 +0200 +@@ -41,7 +41,7 @@ static struct supl_debug_s { + } debug; + #endif + +-static int server_connect(char *server); ++static int server_connect(char *server, char *iface); + static int pdu_make_ulp_start(supl_ctx_t *ctx, supl_ulp_t *pdu); + static int pdu_make_ulp_pos_init(supl_ctx_t *ctx, supl_ulp_t *pdu); + static int pdu_make_ulp_rrlp_ack(supl_ctx_t *ctx, supl_ulp_t *pdu, PDU_t *rrlp); +@@ -236,7 +236,7 @@ int EXPORT supl_server_connect(supl_ctx_ + if (!ctx->ssl) return E_SUPL_CONNECT; + + if (server) { +- ctx->fd = server_connect(server); ++ ctx->fd = server_connect(server, ctx->iface); + if (ctx->fd == -1) return E_SUPL_CONNECT; + } + +@@ -266,7 +266,7 @@ void EXPORT supl_close(supl_ctx_t *ctx) + } + + +-static int server_connect(char *server) { ++static int server_connect(char *server, char *iface) { + int fd = -1; + struct addrinfo *ailist, *aip; + struct addrinfo hint; +@@ -283,6 +283,15 @@ static int server_connect(char *server) + if ((fd = socket(aip->ai_family, SOCK_STREAM, 0)) < 0) { + err = errno; + } ++ ++ if (strlen(iface)) { ++ struct ifreq ifr; ++ strncpy(ifr.ifr_name, iface, IFNAMSIZ); ++ ifr.ifr_name[IFNAMSIZ - 1] = 0; ++ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) ++ fprintf(stderr, "Error: binding to device %s failed\n", iface); ++ } ++ + if (connect(fd, aip->ai_addr, aip->ai_addrlen) != 0) { + return -1; + } diff --git a/package/supl/patches/patch-src_supl_h b/package/supl/patches/patch-src_supl_h new file mode 100644 index 000000000..c2e9e8da4 --- /dev/null +++ b/package/supl/patches/patch-src_supl_h @@ -0,0 +1,19 @@ + - implement bind to device functionality +--- trunk.orig/src/supl.h 2011-10-21 20:08:29.000000000 +0200 ++++ trunk/src/supl.h 2013-04-24 18:52:14.916232733 +0200 +@@ -19,6 +19,7 @@ + #include <openssl/ssl.h> + #include <PDU.h> + #include <ULP-PDU.h> ++#include <net/if.h> + + #define SUPL_PORT "7275" + +@@ -204,6 +205,7 @@ typedef struct supl_ctx_s { + size_t size; + } slp_session_id; + ++ char iface[IFNAMSIZ + 1]; + } supl_ctx_t; + + int supl_ctx_new(supl_ctx_t *ctx); |