diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2006-11-02 18:30:50 +0000 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2006-11-02 18:30:50 +0000 |
commit | 1183f8ac82ec141624c1490c0a3c715242cd8133 (patch) | |
tree | fc90212ec62e4ed55399670e504ea04da2dd23be /src/charon | |
parent | 03bf883d953608e8883a1fbac9226050fbe5052b (diff) | |
download | strongswan-1183f8ac82ec141624c1490c0a3c715242cd8133.tar.bz2 strongswan-1183f8ac82ec141624c1490c0a3c715242cd8133.tar.xz |
improved selection of ipsec status|statusall <name>
Diffstat (limited to 'src/charon')
-rwxr-xr-x | src/charon/threads/stroke_interface.c | 40 |
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); } |