olsrd: bump version to 0.6.6.2, remove redundant patch
This commit is contained in:
parent
1b98927064
commit
6104e77ebf
5 changed files with 3 additions and 325 deletions
|
@ -8,13 +8,13 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=olsrd
|
||||
PKG_VERSION:=0.6.6.1
|
||||
PKG_RELEASE:=3
|
||||
PKG_VERSION:=0.6.6.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://www.olsr.org/releases/0.6
|
||||
|
||||
PKG_MD5SUM:=ef480495f307232f1df931ae5df18bf9
|
||||
PKG_MD5SUM:=e4e04bb033cffd99b3be397fa9063a54
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
commit bdca59455c9b91b112a5c27eba2ccba3f606797d
|
||||
Author: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
|
||||
Date: Mon Mar 31 11:18:30 2014 +0200
|
||||
|
||||
Fix processing error for fragmented hellos
|
||||
|
||||
diff --git a/src/process_package.c b/src/process_package.c
|
||||
index 780efab..b39b692 100644
|
||||
--- a/src/process_package.c
|
||||
+++ b/src/process_package.c
|
||||
@@ -441,21 +441,15 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if, const uni
|
||||
|
||||
/* find the input interface in the list of neighbor interfaces */
|
||||
for (walker = message->neighbors; walker != NULL; walker = walker->next) {
|
||||
- if (walker->link != UNSPEC_LINK
|
||||
- && ipequal(&walker->address, &in_if->ip_addr)) {
|
||||
+ if (ipequal(&walker->address, &in_if->ip_addr)) {
|
||||
+ /*
|
||||
+ * memorize our neighbour's idea of the link quality, so that we
|
||||
+ * know the link quality in both directions
|
||||
+ */
|
||||
+ olsr_memorize_foreign_hello_lq(lnk, walker->link != UNSPEC_LINK ? walker : NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
-
|
||||
- /*
|
||||
- * memorize our neighbour's idea of the link quality, so that we
|
||||
- * know the link quality in both directions
|
||||
- *
|
||||
- * walker is NULL if there the current interface was not included in
|
||||
- * the message (or was included as an UNSPEC_LINK)
|
||||
- */
|
||||
- olsr_memorize_foreign_hello_lq(lnk, walker);
|
||||
-
|
||||
/* update packet loss for link quality calculation */
|
||||
olsr_received_hello_handler(lnk);
|
||||
}
|
||||
@@ -493,7 +487,7 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if, const uni
|
||||
if (neighbor->willingness != WILL_NEVER)
|
||||
process_message_neighbors(neighbor, message);
|
||||
|
||||
- /* Process changes immedeatly in case of MPR updates */
|
||||
+ /* Process changes immediately in case of MPR updates */
|
||||
olsr_process_changes();
|
||||
|
||||
olsr_free_hello_packet(message);
|
|
@ -1,36 +0,0 @@
|
|||
commit d68c96cf53f188030452aadec466aa6389e81511
|
||||
Author: Henning Rogge <hrogge@gmail.com>
|
||||
Date: Tue May 13 21:23:36 2014 +0200
|
||||
|
||||
Hotfix for much too long http headers
|
||||
|
||||
diff --git a/lib/txtinfo/src/olsrd_txtinfo.c b/lib/txtinfo/src/olsrd_txtinfo.c
|
||||
index b56545d..2bcce41 100644
|
||||
--- a/lib/txtinfo/src/olsrd_txtinfo.c
|
||||
+++ b/lib/txtinfo/src/olsrd_txtinfo.c
|
||||
@@ -301,8 +301,15 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET((unsigned int)ipc_connection, &rfds); /* Win32 needs the cast here */
|
||||
if (0 <= select(ipc_connection + 1, &rfds, NULL, NULL, &tv)) {
|
||||
- char requ[128];
|
||||
- ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ), 0); /* Win32 needs the cast here */
|
||||
+ char requ[1024];
|
||||
+ ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ)-1, 0); /* Win32 needs the cast here */
|
||||
+
|
||||
+ if (s == sizeof(requ)-1) {
|
||||
+ /* input was much too long, just skip the rest */
|
||||
+ char dummy[1024];
|
||||
+
|
||||
+ while (recv(ipc_connection, (void *)&dummy, sizeof(dummy), 0) == sizeof(dummy), 0);
|
||||
+ }
|
||||
if (0 < s) {
|
||||
requ[s] = 0;
|
||||
/* To print out neighbours only on the Freifunk Status
|
||||
@@ -329,6 +336,7 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att
|
||||
if (0 != strstr(requ, "/ver")) send_what |= SIW_VERSION;
|
||||
}
|
||||
}
|
||||
+
|
||||
if ( send_what == 0 ) send_what = SIW_ALL;
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
commit 528176910ee1d00278e4108cc23d9f4f2de8a639
|
||||
Author: Alessio Caiazza <nolith@abisso.org>
|
||||
Date: Wed May 14 22:45:33 2014 +0200
|
||||
|
||||
Hotfix for very long http headers also for jsoninfo
|
||||
|
||||
diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.c b/lib/jsoninfo/src/olsrd_jsoninfo.c
|
||||
index 966292c..817c64a 100644
|
||||
--- a/lib/jsoninfo/src/olsrd_jsoninfo.c
|
||||
+++ b/lib/jsoninfo/src/olsrd_jsoninfo.c
|
||||
@@ -508,8 +508,15 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET((unsigned int)ipc_connection, &rfds); /* Win32 needs the cast here */
|
||||
if (0 <= select(ipc_connection + 1, &rfds, NULL, NULL, &tv)) {
|
||||
- char requ[128];
|
||||
- ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ), 0); /* Win32 needs the cast here */
|
||||
+ char requ[1024];
|
||||
+ ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ)-1, 0); /* Win32 needs the cast here */
|
||||
+
|
||||
+ if (s == sizeof(requ)-1) {
|
||||
+ /* input was too much long, just skip the rest */
|
||||
+ char dummy[1024];
|
||||
+
|
||||
+ while (recv(ipc_connection, (void *)&dummy, sizeof(dummy), 0) == sizeof(dummy), 0);
|
||||
+ }
|
||||
if (0 < s) {
|
||||
requ[s] = 0;
|
||||
/* print out the requested tables */
|
|
@ -1,211 +0,0 @@
|
|||
commit b342385531c18b8afb42db64c7a38d7879668566
|
||||
Author: Alessio Caiazza <nolith@abisso.org>
|
||||
Date: Fri May 16 12:53:15 2014 +0200
|
||||
|
||||
jsoninfo: HTTP headers with CORS (if requested)
|
||||
|
||||
The new "httpheaders" parameter prepends HTTP headers to the reply.
|
||||
If not set it will default to "no" and have the same behaviour as before.
|
||||
Cross-origin resource sharing headers (CORS) are included in reply allowing the
|
||||
json retrieval by javascript applications not served by olsrd itself.
|
||||
This will allow to easily develop js applications running directly in the
|
||||
browser.
|
||||
|
||||
Reviewed-by: Ferry Huberts <ferry.huberts@pelagic.nl>
|
||||
|
||||
diff --git a/lib/jsoninfo/README_JSONINFO b/lib/jsoninfo/README_JSONINFO
|
||||
index 709c975..8311ade 100644
|
||||
--- a/lib/jsoninfo/README_JSONINFO
|
||||
+++ b/lib/jsoninfo/README_JSONINFO
|
||||
@@ -73,6 +73,14 @@ LoadPlugin "olsrd_jsoninfo.so.0.0"
|
||||
# if you set it to 0.0.0.0, it will accept all connections
|
||||
#PlParam "accept" "0.0.0.0"
|
||||
|
||||
+ # The "httpheaders" parameter prepends HTTP headers to the reply.
|
||||
+ # If not set it will default to "no" and have the same behaviour as before.
|
||||
+ # Among with a minimal set of headers also Cross-origin resource sharing
|
||||
+ # headers (CORS) are included in reply allowing the json retrieval by
|
||||
+ # javascript applications not served by olsrd itself.
|
||||
+ # You can enable it uncommenting the following line:
|
||||
+ #PlParam "httpheaders" "yes"
|
||||
+
|
||||
# specify a UUID for this node to track it for debugging
|
||||
#PlParam "UUIDFile" "/etc/olsrd/olsrd.uuid"
|
||||
}
|
||||
diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.c b/lib/jsoninfo/src/olsrd_jsoninfo.c
|
||||
index 817c64a..f29a37c 100644
|
||||
--- a/lib/jsoninfo/src/olsrd_jsoninfo.c
|
||||
+++ b/lib/jsoninfo/src/olsrd_jsoninfo.c
|
||||
@@ -96,6 +96,9 @@
|
||||
|
||||
static int ipc_socket;
|
||||
|
||||
+/* Response types */
|
||||
+#define HTTP_200 "HTTP/1.1 200 OK"
|
||||
+
|
||||
/* IPC initialization function */
|
||||
static int plugin_ipc_init(void);
|
||||
|
||||
@@ -126,6 +129,18 @@ static void ipc_print_interfaces(struct autobuf *);
|
||||
static void ipc_print_plugins(struct autobuf *);
|
||||
static void ipc_print_olsrd_conf(struct autobuf *abuf);
|
||||
|
||||
+static size_t build_http_header(const char *status, const char *mime,
|
||||
+ uint32_t msgsize, char *buf, uint32_t bufsize);
|
||||
+
|
||||
+/*
|
||||
+ * this is the size of the buffer used for build_http_header
|
||||
+ * the amount of data written into the buffer will be less than
|
||||
+ * 400 bytes approximatively.
|
||||
+ * The size may vary because the Content-Length header contains
|
||||
+ * the length of the json data
|
||||
+ */
|
||||
+#define MAX_HTTPHEADER_SIZE 512
|
||||
+
|
||||
#define TXT_IPC_BUFSIZE 256
|
||||
|
||||
/* these provide all of the runtime status info */
|
||||
@@ -1282,6 +1297,9 @@ static void
|
||||
send_info(unsigned int send_what, int the_socket)
|
||||
{
|
||||
struct autobuf abuf;
|
||||
+ size_t header_len = 0;
|
||||
+ char header_buf[MAX_HTTPHEADER_SIZE];
|
||||
+ const char *content_type = "application/json";
|
||||
|
||||
/* global variables for tracking when to put a comma in for JSON */
|
||||
entrynumber[0] = 0;
|
||||
@@ -1320,12 +1338,17 @@ send_info(unsigned int send_what, int the_socket)
|
||||
ipc_print_olsrd_conf(&abuf);
|
||||
}
|
||||
|
||||
- outbuffer[outbuffer_count] = olsr_malloc(abuf.len, "txt output buffer");
|
||||
- outbuffer_size[outbuffer_count] = abuf.len;
|
||||
+ if(http_headers) {
|
||||
+ header_len = build_http_header(HTTP_200, content_type, abuf.len, header_buf, sizeof(header_buf));
|
||||
+ }
|
||||
+
|
||||
+ outbuffer[outbuffer_count] = olsr_malloc(header_len + abuf.len, "json output buffer");
|
||||
+ outbuffer_size[outbuffer_count] = header_len + abuf.len;
|
||||
outbuffer_written[outbuffer_count] = 0;
|
||||
outbuffer_socket[outbuffer_count] = the_socket;
|
||||
|
||||
- memcpy(outbuffer[outbuffer_count], abuf.buf, abuf.len);
|
||||
+ memcpy(outbuffer[outbuffer_count], header_buf, header_len);
|
||||
+ memcpy((outbuffer[outbuffer_count]) + header_len, abuf.buf, abuf.len);
|
||||
outbuffer_count++;
|
||||
|
||||
if (outbuffer_count == 1) {
|
||||
@@ -1340,6 +1363,53 @@ send_info(unsigned int send_what, int the_socket)
|
||||
abuf_free(&abuf);
|
||||
}
|
||||
|
||||
+static size_t
|
||||
+build_http_header(const char *status, const char *mime, uint32_t msgsize,
|
||||
+ char *buf, uint32_t bufsize)
|
||||
+{
|
||||
+ time_t currtime;
|
||||
+ size_t size;
|
||||
+
|
||||
+ size = snprintf(buf, bufsize, "%s\r\n", status);
|
||||
+
|
||||
+ /* Date */
|
||||
+ time(&currtime);
|
||||
+ size += strftime(&buf[size], bufsize - size, "Date: %a, %d %b %Y %H:%M:%S GMT\r\n", localtime(&currtime));
|
||||
+
|
||||
+ /* Server version */
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Server: OLSRD JSONInfo plugin\r\n");
|
||||
+
|
||||
+ /* connection-type */
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Connection: closed\r\n");
|
||||
+
|
||||
+ /* MIME type */
|
||||
+ if(mime != NULL) {
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Content-type: %s\r\n", mime);
|
||||
+ }
|
||||
+
|
||||
+ /* CORS data */
|
||||
+ /**No needs to be strict here, access control is based on source IP*/
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Allow-Origin: *\r\n");
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Allow-Methods: GET, POST, OPTIONS\r\n");
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Allow-Headers: Accept, Origin, X-Requested-With\r\n");
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Max-Age: 1728000\r\n");
|
||||
+
|
||||
+ /* Content length */
|
||||
+ if (msgsize > 0) {
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Content-length: %i\r\n", msgsize);
|
||||
+ }
|
||||
+
|
||||
+ /* Cache-control
|
||||
+ * No caching dynamic pages
|
||||
+ */
|
||||
+ size += snprintf(&buf[size], bufsize - size, "Cache-Control: no-cache\r\n");
|
||||
+
|
||||
+ /* End header */
|
||||
+ size += snprintf(&buf[size], bufsize - size, "\r\n");
|
||||
+
|
||||
+ return size;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Local Variables:
|
||||
* mode: c
|
||||
diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.h b/lib/jsoninfo/src/olsrd_jsoninfo.h
|
||||
index 8478f62..56acb70 100644
|
||||
--- a/lib/jsoninfo/src/olsrd_jsoninfo.h
|
||||
+++ b/lib/jsoninfo/src/olsrd_jsoninfo.h
|
||||
@@ -62,6 +62,7 @@ extern union olsr_ip_addr jsoninfo_accept_ip;
|
||||
extern union olsr_ip_addr jsoninfo_listen_ip;
|
||||
extern int ipc_port;
|
||||
extern int nompr;
|
||||
+extern bool http_headers;
|
||||
|
||||
int olsrd_plugin_interface_version(void);
|
||||
int olsrd_plugin_init(void);
|
||||
diff --git a/lib/jsoninfo/src/olsrd_plugin.c b/lib/jsoninfo/src/olsrd_plugin.c
|
||||
index 36550a8..03aa45f 100644
|
||||
--- a/lib/jsoninfo/src/olsrd_plugin.c
|
||||
+++ b/lib/jsoninfo/src/olsrd_plugin.c
|
||||
@@ -64,6 +64,7 @@ union olsr_ip_addr jsoninfo_accept_ip;
|
||||
union olsr_ip_addr jsoninfo_listen_ip;
|
||||
int ipc_port;
|
||||
int nompr;
|
||||
+bool http_headers;
|
||||
|
||||
static void my_init(void) __attribute__ ((constructor));
|
||||
static void my_fini(void) __attribute__ ((destructor));
|
||||
@@ -79,6 +80,7 @@ my_init(void)
|
||||
|
||||
/* defaults for parameters */
|
||||
ipc_port = 9090;
|
||||
+ http_headers = false;
|
||||
if (olsr_cnf->ip_version == AF_INET) {
|
||||
jsoninfo_accept_ip.v4.s_addr = htonl(INADDR_LOOPBACK);
|
||||
jsoninfo_listen_ip.v4.s_addr = htonl(INADDR_ANY);
|
||||
@@ -120,11 +122,26 @@ store_string(const char *value, void *data, set_plugin_parameter_addon addon __a
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int
|
||||
+store_boolean(const char *value, void *data, set_plugin_parameter_addon addon __attribute__ ((unused)))
|
||||
+{
|
||||
+ bool *dest = data;
|
||||
+ if(strcmp(value, "yes") == 0)
|
||||
+ *dest = true;
|
||||
+ else if (strcmp(value, "no") == 0)
|
||||
+ *dest = false;
|
||||
+ else
|
||||
+ return 1; //error
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static const struct olsrd_plugin_parameters plugin_parameters[] = {
|
||||
{.name = "port",.set_plugin_parameter = &set_plugin_port,.data = &ipc_port},
|
||||
{.name = "accept",.set_plugin_parameter = &set_plugin_ipaddress,.data = &jsoninfo_accept_ip},
|
||||
{.name = "listen",.set_plugin_parameter = &set_plugin_ipaddress,.data = &jsoninfo_listen_ip},
|
||||
{.name = "uuidfile",.set_plugin_parameter = &store_string,.data = uuidfile},
|
||||
+ {.name = "httpheaders",.set_plugin_parameter = &store_boolean,.data = &http_headers},
|
||||
};
|
||||
|
||||
void
|
Loading…
Reference in a new issue