aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/threads/stroke_interface.c
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2006-08-28 08:45:22 +0000
committerMartin Willi <martin@strongswan.org>2006-08-28 08:45:22 +0000
commit4c23a8c9ecc8ad175ccce9fb956c8b540f4f592e (patch)
treeca6f5936644f88ec10cc798539d11fd7e97b6754 /src/charon/threads/stroke_interface.c
parent834b2ce2e2d1406f366f78bb49b31db5fb4d7863 (diff)
downloadstrongswan-4c23a8c9ecc8ad175ccce9fb956c8b540f4f592e.tar.bz2
strongswan-4c23a8c9ecc8ad175ccce9fb956c8b540f4f592e.tar.xz
moved interface enumeration code to socket, where it belongs
query interfaces every time we need it to respect changes in network config added address listing on startup and "ipsec statusall"
Diffstat (limited to 'src/charon/threads/stroke_interface.c')
-rwxr-xr-xsrc/charon/threads/stroke_interface.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/charon/threads/stroke_interface.c b/src/charon/threads/stroke_interface.c
index 47b38ea57..c3837744c 100755
--- a/src/charon/threads/stroke_interface.c
+++ b/src/charon/threads/stroke_interface.c
@@ -205,7 +205,7 @@ static void stroke_add_conn(private_stroke_t *this, stroke_msg_t *msg)
return;
}
- if (charon->interfaces->is_local_address(charon->interfaces, other_host))
+ if (charon->socket->is_local_address(charon->socket, other_host))
{
stroke_end_t tmp_end;
host_t *tmp_host;
@@ -220,7 +220,7 @@ static void stroke_add_conn(private_stroke_t *this, stroke_msg_t *msg)
msg->add_conn.me = msg->add_conn.other;
msg->add_conn.other = tmp_end;
}
- else if (!charon->interfaces->is_local_address(charon->interfaces, my_host))
+ else if (!charon->socket->is_local_address(charon->socket, my_host))
{
this->stroke_logger->log(this->stroke_logger, ERROR, "left nor right host is our side, aborting");
goto destroy_hosts;
@@ -635,6 +635,22 @@ static void stroke_terminate(private_stroke_t *this, stroke_msg_t *msg)
*/
static void stroke_status(private_stroke_t *this, stroke_msg_t *msg)
{
+ linked_list_t *list;
+ host_t *host;
+
+ list = charon->socket->create_local_address_list(charon->socket);
+ this->logger->log(this->logger, CONTROL|LEVEL1,
+ "listening on %d addresses:",
+ list->get_count(list));
+ while (list->remove_first(list, (void**)&host) == SUCCESS)
+ {
+ this->logger->log(this->logger, CONTROL|LEVEL1,
+ " %s", host->get_string(host));
+ host->destroy(host);
+
+ }
+ list->destroy(list);
+
if (msg->status.name)
{
pop_string(msg, &(msg->status.name));