aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2007-09-14 14:07:30 +0000
committerMartin Willi <martin@strongswan.org>2007-09-14 14:07:30 +0000
commitc01f7bf989dedcc61e4e812fd57d6d73997cfd85 (patch)
treee50601b98d290e941b0ea2ab9ac1769dc6f9519a /src/charon
parent15a9d460c05ac73dfae41bc8a66b07f0c2a48328 (diff)
downloadstrongswan-c01f7bf989dedcc61e4e812fd57d6d73997cfd85.tar.bz2
strongswan-c01f7bf989dedcc61e4e812fd57d6d73997cfd85.tar.xz
added subnets of CHILD_SAs to xml interface
a first design of Managers IKE_SA list page
Diffstat (limited to 'src/charon')
-rw-r--r--src/charon/control/interfaces/xml_interface.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/charon/control/interfaces/xml_interface.c b/src/charon/control/interfaces/xml_interface.c
index 7710ae19c..3946611db 100644
--- a/src/charon/control/interfaces/xml_interface.c
+++ b/src/charon/control/interfaces/xml_interface.c
@@ -146,6 +146,41 @@ static void write_address(xmlTextWriterPtr writer, char *element, host_t *host)
}
/**
+ * write a list of traffic_selector_t
+ */
+static void write_ts(xmlTextWriterPtr writer, linked_list_t *list)
+{
+ iterator_t *iterator;
+ traffic_selector_t *ts;
+
+ iterator = list->create_iterator(list, TRUE);
+ while (iterator->iterate(iterator, (void**)&ts))
+ {
+ xmlTextWriterStartElement(writer, "net");
+ xmlTextWriterWriteAttribute(writer, "type",
+ ts->get_type(ts) == TS_IPV4_ADDR_RANGE ? "ipv4" : "ipv6");
+ xmlTextWriterWriteFormatString(writer, "%R", ts);
+ xmlTextWriterEndElement(writer);
+ }
+ iterator->destroy(iterator);
+}
+
+/**
+ * write a child_sa_t
+ */
+static void write_child(xmlTextWriterPtr writer, child_sa_t *child)
+{
+ xmlTextWriterStartElement(writer, "childsa");
+ xmlTextWriterStartElement(writer, "local");
+ write_ts(writer, child->get_traffic_selectors(child, TRUE));
+ xmlTextWriterEndElement(writer);
+ xmlTextWriterStartElement(writer, "remote");
+ write_ts(writer, child->get_traffic_selectors(child, FALSE));
+ xmlTextWriterEndElement(writer);
+ xmlTextWriterEndElement(writer);
+}
+
+/**
* process a ikesalist query request message
*/
static void request_query_ikesa(xmlTextReaderPtr reader, xmlTextWriterPtr writer)
@@ -214,7 +249,7 @@ static void request_query_ikesa(xmlTextReaderPtr reader, xmlTextWriterPtr writer
children = ike_sa->create_child_sa_iterator(ike_sa);
while (children->iterate(children, (void**)&child_sa))
{
- /* TODO: Children */
+ write_child(writer, child_sa);
}
children->destroy(children);
/* </childsalist> */