#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
#define PLUGIN_INTERFACE_VERSION 5
-union olsr_ip_addr ipc_accept_ip;
+union olsr_ip_addr txtinfo_accept_ip;
+union olsr_ip_addr txtinfo_listen_ip;
int ipc_port;
int nompr;
/* defaults for parameters */
ipc_port = 2006;
if (olsr_cnf->ip_version == AF_INET) {
- ipc_accept_ip.v4.s_addr = htonl(INADDR_LOOPBACK);
+ txtinfo_accept_ip.v4.s_addr = htonl(INADDR_LOOPBACK);
+ txtinfo_listen_ip.v4.s_addr = htonl(INADDR_ANY);
} else {
- ipc_accept_ip.v6 = in6addr_loopback;
+ txtinfo_accept_ip.v6 = in6addr_loopback;
+ txtinfo_listen_ip.v6 = in6addr_any;
}
/* highlite neighbours by default */
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 = &ipc_accept_ip},
+ {.name = "accept",.set_plugin_parameter = &set_plugin_ipaddress,.data = &txtinfo_accept_ip},
+ {.name = "listen",.set_plugin_parameter = &set_plugin_ipaddress,.data = &txtinfo_listen_ip},
};
void
#ifdef SIN6_LEN
sin->sin_len = addrlen;
#endif
- sin->sin_addr.s_addr = INADDR_ANY;
+ sin->sin_addr.s_addr = txtinfo_listen_ip.v4.s_addr;
sin->sin_port = htons(ipc_port);
} else {
sin6 = (struct sockaddr_in6 *)&sst;
#ifdef SIN6_LEN
sin6->sin6_len = addrlen;
#endif
- sin6->sin6_addr = in6addr_any;
+ sin6->sin6_addr = txtinfo_listen_ip.v6;
sin6->sin6_port = htons(ipc_port);
}
sin4 = (struct sockaddr_in *)&pin;
if (inet_ntop(olsr_cnf->ip_version, &sin4->sin_addr, addr, INET6_ADDRSTRLEN) == NULL)
addr[0] = '\0';
- if (!ip4equal(&sin4->sin_addr, &ipc_accept_ip.v4)) {
+ if (!ip4equal(&sin4->sin_addr, &txtinfo_accept_ip.v4)) {
olsr_printf(1, "(TXTINFO) From host(%s) not allowed!\n", addr);
close(ipc_connection);
return;
if (inet_ntop(olsr_cnf->ip_version, &sin6->sin6_addr, addr, INET6_ADDRSTRLEN) == NULL)
addr[0] = '\0';
/* Use in6addr_any (::) in olsr.conf to allow anybody. */
- if (!ip6equal(&in6addr_any, &ipc_accept_ip.v6) && !ip6equal(&sin6->sin6_addr, &ipc_accept_ip.v6)) {
+ if (!ip6equal(&in6addr_any, &txtinfo_accept_ip.v6) && !ip6equal(&sin6->sin6_addr, &txtinfo_accept_ip.v6)) {
olsr_printf(1, "(TXTINFO) From host(%s) not allowed!\n", addr);
close(ipc_connection);
return;
/* uncomment this to include VTime values into Link/Topology command */
/* #define ACTIVATE_VTIME_TXTINFO */
-extern union olsr_ip_addr ipc_accept_ip;
+extern union olsr_ip_addr txtinfo_accept_ip;
+extern union olsr_ip_addr txtinfo_listen_ip;
extern int ipc_port;
extern int nompr;