aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2006-11-02 18:30:50 +0000
committerAndreas Steffen <andreas.steffen@strongswan.org>2006-11-02 18:30:50 +0000
commit1183f8ac82ec141624c1490c0a3c715242cd8133 (patch)
treefc90212ec62e4ed55399670e504ea04da2dd23be /src/charon
parent03bf883d953608e8883a1fbac9226050fbe5052b (diff)
downloadstrongswan-1183f8ac82ec141624c1490c0a3c715242cd8133.tar.bz2
strongswan-1183f8ac82ec141624c1490c0a3c715242cd8133.tar.xz
improved selection of ipsec status|statusall <name>
Diffstat (limited to 'src/charon')
-rwxr-xr-xsrc/charon/threads/stroke_interface.c40
1 files changed, 30 insertions, 10 deletions
diff --git a/src/charon/threads/stroke_interface.c b/src/charon/threads/stroke_interface.c
index d8ea2b0f6..575c38bb2 100755
--- a/src/charon/threads/stroke_interface.c
+++ b/src/charon/threads/stroke_interface.c
@@ -717,17 +717,27 @@ static void stroke_statusall(private_stroke_t *this, stroke_msg_t *msg)
child_sa_t *child_sa;
iterator_t *children = ike_sa->create_child_sa_iterator(ike_sa);
+ /* print IKE_SA */
+ if (name == NULL || strncmp(name, ike_sa->get_name(ike_sa), strlen(name)) == 0)
+ {
+ fprintf(this->out, "%#K\n", ike_sa);
+ ike_sa_printed = TRUE;
+ }
+
while (children->iterate(children, (void**)&child_sa))
{
- if (!ike_sa_printed
- && (name == NULL ||
- strncmp(name, child_sa->get_name(child_sa), strlen(name)) == 0 ||
- strncmp(name, ike_sa->get_name(ike_sa), strlen(name)) == 0))
+ bool child_sa_match = name == NULL ||
+ strncmp(name, child_sa->get_name(child_sa), strlen(name)) == 0;
+
+ /* print IKE_SA if its name differs from the CHILD_SA's name */
+ if (!ike_sa_printed && child_sa_match)
{
fprintf(this->out, "%#K\n", ike_sa);
ike_sa_printed = TRUE;
}
- if (ike_sa_printed)
+
+ /* print CHILD_SA */
+ if (child_sa_match)
{
fprintf(this->out, "%#P\n", child_sa);
}
@@ -759,17 +769,27 @@ static void stroke_status(private_stroke_t *this, stroke_msg_t *msg)
child_sa_t *child_sa;
iterator_t *children = ike_sa->create_child_sa_iterator(ike_sa);
+ /* print IKE_SA */
+ if (name == NULL || strncmp(name, ike_sa->get_name(ike_sa), strlen(name)) == 0)
+ {
+ fprintf(this->out, "%K\n", ike_sa);
+ ike_sa_printed = TRUE;
+ }
+
while (children->iterate(children, (void**)&child_sa))
{
- if (!ike_sa_printed
- && (name == NULL ||
- strncmp(name, child_sa->get_name(child_sa), strlen(name)) == 0 ||
- strncmp(name, ike_sa->get_name(ike_sa), strlen(name)) == 0))
+ bool child_sa_match = name == NULL ||
+ strncmp(name, child_sa->get_name(child_sa), strlen(name)) == 0;
+
+ /* print IKE_SA if its name differs from the CHILD_SA's name */
+ if (!ike_sa_printed && child_sa_match)
{
fprintf(this->out, "%K\n", ike_sa);
ike_sa_printed = TRUE;
}
- if (ike_sa_printed)
+
+ /* print CHILD_SA */
+ if (child_sa_match)
{
fprintf(this->out, "%P\n", child_sa);
}